From 9c44fa23dede2cf5c2e9625ef8397adb87658b7e Mon Sep 17 00:00:00 2001 From: georapbox Date: Mon, 15 Jan 2024 09:39:45 +0200 Subject: [PATCH] Create build --- docs/index.58beac5f.css.map | 1 - docs/index.5ae9312f.js.map | 1 - docs/{index.5ae9312f.js => index.9d0cb1f2.js} | 10 +++++----- docs/index.9d0cb1f2.js.map | 1 + docs/{index.b9185ed0.js => index.a3077d6d.js} | 10 +++++----- docs/index.a3077d6d.js.map | 1 + docs/index.b9185ed0.js.map | 1 - docs/{index.58beac5f.css => index.bcbdd9b6.css} | 4 ++-- docs/index.bcbdd9b6.css.map | 1 + docs/index.html | 2 +- docs/service-worker.js | 2 +- docs/service-worker.js.map | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 docs/index.58beac5f.css.map delete mode 100644 docs/index.5ae9312f.js.map rename docs/{index.5ae9312f.js => index.9d0cb1f2.js} (99%) create mode 100644 docs/index.9d0cb1f2.js.map rename docs/{index.b9185ed0.js => index.a3077d6d.js} (99%) create mode 100644 docs/index.a3077d6d.js.map delete mode 100644 docs/index.b9185ed0.js.map rename docs/{index.58beac5f.css => index.bcbdd9b6.css} (97%) create mode 100644 docs/index.bcbdd9b6.css.map diff --git a/docs/index.58beac5f.css.map b/docs/index.58beac5f.css.map deleted file mode 100644 index 6b7b71e..0000000 --- a/docs/index.58beac5f.css.map +++ /dev/null @@ -1 +0,0 @@ -{"mappings":"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","sources":["index.58beac5f.css","node_modules/bootstrap/dist/css/bootstrap.min.css","node_modules/bootstrap/scss/mixins/_banner.scss","node_modules/bootstrap/scss/_root.scss","node_modules/bootstrap/dist/css/dist/css/bootstrap.css","node_modules/bootstrap/scss/vendor/_rfs.scss","node_modules/bootstrap/scss/mixins/_color-mode.scss","node_modules/bootstrap/scss/_reboot.scss","node_modules/bootstrap/scss/mixins/_border-radius.scss","node_modules/bootstrap/scss/_type.scss","node_modules/bootstrap/scss/mixins/_lists.scss","node_modules/bootstrap/scss/_images.scss","node_modules/bootstrap/scss/mixins/_image.scss","node_modules/bootstrap/scss/_containers.scss","node_modules/bootstrap/scss/mixins/_container.scss","node_modules/bootstrap/scss/mixins/_breakpoints.scss","node_modules/bootstrap/scss/_grid.scss","node_modules/bootstrap/scss/mixins/_grid.scss","node_modules/bootstrap/scss/_tables.scss","node_modules/bootstrap/scss/mixins/_table-variants.scss","node_modules/bootstrap/scss/forms/_labels.scss","node_modules/bootstrap/scss/forms/_form-text.scss","node_modules/bootstrap/scss/forms/_form-control.scss","node_modules/bootstrap/scss/mixins/_transition.scss","node_modules/bootstrap/scss/mixins/_gradients.scss","node_modules/bootstrap/scss/forms/_form-select.scss","node_modules/bootstrap/scss/forms/_form-check.scss","node_modules/bootstrap/scss/forms/_form-range.scss","node_modules/bootstrap/scss/forms/_floating-labels.scss","node_modules/bootstrap/scss/forms/_input-group.scss","node_modules/bootstrap/scss/mixins/_forms.scss","node_modules/bootstrap/scss/_buttons.scss","node_modules/bootstrap/scss/mixins/_buttons.scss","node_modules/bootstrap/scss/_transitions.scss","node_modules/bootstrap/scss/_dropdown.scss","node_modules/bootstrap/scss/mixins/_caret.scss","node_modules/bootstrap/scss/_button-group.scss","node_modules/bootstrap/scss/_nav.scss","node_modules/bootstrap/scss/_navbar.scss","node_modules/bootstrap/scss/_card.scss","node_modules/bootstrap/scss/_accordion.scss","node_modules/bootstrap/scss/_breadcrumb.scss","node_modules/bootstrap/scss/_pagination.scss","node_modules/bootstrap/scss/mixins/_pagination.scss","node_modules/bootstrap/scss/_badge.scss","node_modules/bootstrap/scss/_alert.scss","node_modules/bootstrap/scss/_progress.scss","node_modules/bootstrap/scss/_list-group.scss","node_modules/bootstrap/scss/_close.scss","node_modules/bootstrap/scss/_toasts.scss","node_modules/bootstrap/scss/_modal.scss","node_modules/bootstrap/scss/mixins/_backdrop.scss","node_modules/bootstrap/scss/_tooltip.scss","node_modules/bootstrap/scss/mixins/_reset-text.scss","node_modules/bootstrap/scss/_popover.scss","node_modules/bootstrap/scss/_carousel.scss","node_modules/bootstrap/scss/mixins/_clearfix.scss","node_modules/bootstrap/scss/_spinners.scss","node_modules/bootstrap/scss/_offcanvas.scss","node_modules/bootstrap/scss/_placeholders.scss","node_modules/bootstrap/scss/helpers/_color-bg.scss","node_modules/bootstrap/scss/helpers/_colored-links.scss","node_modules/bootstrap/scss/helpers/_focus-ring.scss","node_modules/bootstrap/scss/helpers/_icon-link.scss","node_modules/bootstrap/scss/helpers/_ratio.scss","node_modules/bootstrap/scss/helpers/_position.scss","node_modules/bootstrap/scss/helpers/_stacks.scss","node_modules/bootstrap/scss/helpers/_visually-hidden.scss","node_modules/bootstrap/scss/mixins/_visually-hidden.scss","node_modules/bootstrap/scss/helpers/_stretched-link.scss","node_modules/bootstrap/scss/helpers/_text-truncation.scss","node_modules/bootstrap/scss/mixins/_text-truncate.scss","node_modules/bootstrap/scss/helpers/_vr.scss","node_modules/bootstrap/scss/mixins/_utilities.scss","node_modules/bootstrap/scss/utilities/_api.scss","src/css/main.css"],"sourcesContent":[":root, [data-bs-theme=\"light\"] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, #ffffff26, #fff0);\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: #212529bf;\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: #21252980;\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: #0000002d;\n --bs-border-radius: .375rem;\n --bs-border-radius-sm: .25rem;\n --bs-border-radius-lg: .5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 .5rem 1rem #00000026;\n --bs-box-shadow-sm: 0 .125rem .25rem #00000013;\n --bs-box-shadow-lg: 0 1rem 3rem #0000002d;\n --bs-box-shadow-inset: inset 0 1px 2px #00000013;\n --bs-focus-ring-width: .25rem;\n --bs-focus-ring-opacity: .25;\n --bs-focus-ring-color: #0d6efd40;\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=\"dark\"] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: #dee2e6bf;\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: #dee2e680;\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: #ffffff26;\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*, :after, :before {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: transparent;\n margin: 0;\n}\n\nhr {\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: .25;\n margin: 1rem 0;\n}\n\n.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {\n color: var(--bs-heading-color);\n margin-top: 0;\n margin-bottom: .5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\n.h1, h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n\n@media (min-width: 1200px) {\n .h1, h1 {\n font-size: 2.5rem;\n }\n}\n\n.h2, h2 {\n font-size: calc(1.325rem + .9vw);\n}\n\n@media (min-width: 1200px) {\n .h2, h2 {\n font-size: 2rem;\n }\n}\n\n.h3, h3 {\n font-size: calc(1.3rem + .6vw);\n}\n\n@media (min-width: 1200px) {\n .h3, h3 {\n font-size: 1.75rem;\n }\n}\n\n.h4, h4 {\n font-size: calc(1.275rem + .3vw);\n}\n\n@media (min-width: 1200px) {\n .h4, h4 {\n font-size: 1.5rem;\n }\n}\n\n.h5, h5 {\n font-size: 1.25rem;\n}\n\n.h6, h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\naddress {\n font-style: normal;\n line-height: inherit;\n margin-bottom: 1rem;\n}\n\nol, ul {\n padding-left: 2rem;\n}\n\ndl, ol, ul {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol, ol ul, ul ol, ul ul {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb, strong {\n font-weight: bolder;\n}\n\n.small, small {\n font-size: .875em;\n}\n\n.mark, mark {\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n padding: .1875em;\n}\n\nsub, sup {\n vertical-align: baseline;\n font-size: .75em;\n line-height: 0;\n position: relative;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\n\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\ncode, kbd, pre, samp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: .875em;\n display: block;\n overflow: auto;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n color: var(--bs-code-color);\n word-wrap: break-word;\n font-size: .875em;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: .25rem;\n padding: .1875rem .375rem;\n font-size: .875em;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg, svg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n color: var(--bs-secondary-color);\n text-align: left;\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\ntbody, td, tfoot, th, thead, tr {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\nbutton, input, optgroup, select, textarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n margin: 0;\n}\n\nbutton, select {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\n[type=\"button\"], [type=\"reset\"], [type=\"submit\"], button {\n -webkit-appearance: button;\n}\n\n[type=\"button\"]:not(:disabled), [type=\"reset\"]:not(:disabled), [type=\"submit\"]:not(:disabled), button:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n border: 0;\n min-width: 0;\n margin: 0;\n padding: 0;\n}\n\nlegend {\n float: left;\n font-size: calc(1.275rem + .3vw);\n line-height: inherit;\n width: 100%;\n margin-bottom: .5rem;\n padding: 0;\n}\n\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\n\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-day-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-datetime-edit-hour-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-minute {\n padding: 0;\n}\n\n::-webkit-datetime-edit-month-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-text {\n padding: 0;\n}\n\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n cursor: pointer;\n display: list-item;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled, .list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: .5rem;\n}\n\n.initialism {\n text-transform: uppercase;\n font-size: .875em;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n color: #6c757d;\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: .875em;\n}\n\n.blockquote-footer:before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n padding: .25rem;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: .5rem;\n line-height: 1;\n}\n\n.figure-caption {\n color: var(--bs-secondary-color);\n font-size: .875em;\n}\n\n.container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n padding-right: calc(var(--bs-gutter-x) * .5);\n padding-left: calc(var(--bs-gutter-x) * .5);\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-md, .container-sm {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-lg, .container-md, .container-sm {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-lg, .container-md, .container-sm, .container-xl {\n max-width: 1140px;\n }\n}\n\n@media (min-width: 1400px) {\n .container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {\n max-width: 1320px;\n }\n}\n\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-.5 * var(--bs-gutter-x));\n margin-left: calc(-.5 * var(--bs-gutter-x));\n flex-wrap: wrap;\n display: flex;\n}\n\n.row > * {\n padding-right: calc(var(--bs-gutter-x) * .5);\n padding-left: calc(var(--bs-gutter-x) * .5);\n margin-top: var(--bs-gutter-y);\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n}\n\n.col {\n flex: 1 0;\n}\n\n.row-cols-auto > * {\n flex: none;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: none;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: none;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: none;\n width: 33.3333%;\n}\n\n.row-cols-4 > * {\n flex: none;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: none;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: none;\n width: 16.6667%;\n}\n\n.col-auto {\n flex: none;\n width: auto;\n}\n\n.col-1 {\n flex: none;\n width: 8.33333%;\n}\n\n.col-2 {\n flex: none;\n width: 16.6667%;\n}\n\n.col-3 {\n flex: none;\n width: 25%;\n}\n\n.col-4 {\n flex: none;\n width: 33.3333%;\n}\n\n.col-5 {\n flex: none;\n width: 41.6667%;\n}\n\n.col-6 {\n flex: none;\n width: 50%;\n}\n\n.col-7 {\n flex: none;\n width: 58.3333%;\n}\n\n.col-8 {\n flex: none;\n width: 66.6667%;\n}\n\n.col-9 {\n flex: none;\n width: 75%;\n}\n\n.col-10 {\n flex: none;\n width: 83.3333%;\n}\n\n.col-11 {\n flex: none;\n width: 91.6667%;\n}\n\n.col-12 {\n flex: none;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333%;\n}\n\n.offset-2 {\n margin-left: 16.6667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333%;\n}\n\n.offset-5 {\n margin-left: 41.6667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333%;\n}\n\n.offset-8 {\n margin-left: 66.6667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333%;\n}\n\n.offset-11 {\n margin-left: 91.6667%;\n}\n\n.g-0, .gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0, .gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1, .gx-1 {\n --bs-gutter-x: .25rem;\n}\n\n.g-1, .gy-1 {\n --bs-gutter-y: .25rem;\n}\n\n.g-2, .gx-2 {\n --bs-gutter-x: .5rem;\n}\n\n.g-2, .gy-2 {\n --bs-gutter-y: .5rem;\n}\n\n.g-3, .gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3, .gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4, .gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4, .gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5, .gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5, .gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0;\n }\n\n .row-cols-sm-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-sm-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-sm-auto {\n flex: none;\n width: auto;\n }\n\n .col-sm-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-sm-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-sm-3 {\n flex: none;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-sm-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-sm-6 {\n flex: none;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-sm-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-sm-9 {\n flex: none;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-sm-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-sm-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.33333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6667%;\n }\n\n .g-sm-0, .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0, .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1, .gx-sm-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-sm-1, .gy-sm-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-sm-2, .gx-sm-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-sm-2, .gy-sm-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-sm-3, .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3, .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4, .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4, .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5, .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5, .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0;\n }\n\n .row-cols-md-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-md-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-md-auto {\n flex: none;\n width: auto;\n }\n\n .col-md-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-md-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-md-3 {\n flex: none;\n width: 25%;\n }\n\n .col-md-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-md-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-md-6 {\n flex: none;\n width: 50%;\n }\n\n .col-md-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-md-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-md-9 {\n flex: none;\n width: 75%;\n }\n\n .col-md-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-md-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-md-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.33333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6667%;\n }\n\n .g-md-0, .gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0, .gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1, .gx-md-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-md-1, .gy-md-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-md-2, .gx-md-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-md-2, .gy-md-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-md-3, .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3, .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4, .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4, .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5, .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5, .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0;\n }\n\n .row-cols-lg-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-lg-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-lg-auto {\n flex: none;\n width: auto;\n }\n\n .col-lg-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-lg-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-lg-3 {\n flex: none;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-lg-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-lg-6 {\n flex: none;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-lg-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-lg-9 {\n flex: none;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-lg-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-lg-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.33333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6667%;\n }\n\n .g-lg-0, .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0, .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1, .gx-lg-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-lg-1, .gy-lg-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-lg-2, .gx-lg-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-lg-2, .gy-lg-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-lg-3, .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3, .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4, .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4, .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5, .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5, .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0;\n }\n\n .row-cols-xl-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-xl-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xl-auto {\n flex: none;\n width: auto;\n }\n\n .col-xl-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-xl-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xl-3 {\n flex: none;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-xl-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-xl-6 {\n flex: none;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-xl-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-xl-9 {\n flex: none;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-xl-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-xl-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.33333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6667%;\n }\n\n .g-xl-0, .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0, .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1, .gx-xl-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-xl-1, .gy-xl-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-xl-2, .gx-xl-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-xl-2, .gy-xl-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-xl-3, .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3, .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4, .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4, .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5, .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5, .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0;\n }\n\n .row-cols-xxl-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xxl-auto {\n flex: none;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-xxl-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xxl-3 {\n flex: none;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-xxl-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-xxl-6 {\n flex: none;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-xxl-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-xxl-9 {\n flex: none;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-xxl-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-xxl-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-left: 0;\n }\n\n .offset-xxl-1 {\n margin-left: 8.33333%;\n }\n\n .offset-xxl-2 {\n margin-left: 16.6667%;\n }\n\n .offset-xxl-3 {\n margin-left: 25%;\n }\n\n .offset-xxl-4 {\n margin-left: 33.3333%;\n }\n\n .offset-xxl-5 {\n margin-left: 41.6667%;\n }\n\n .offset-xxl-6 {\n margin-left: 50%;\n }\n\n .offset-xxl-7 {\n margin-left: 58.3333%;\n }\n\n .offset-xxl-8 {\n margin-left: 66.6667%;\n }\n\n .offset-xxl-9 {\n margin-left: 75%;\n }\n\n .offset-xxl-10 {\n margin-left: 83.3333%;\n }\n\n .offset-xxl-11 {\n margin-left: 91.6667%;\n }\n\n .g-xxl-0, .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0, .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1, .gx-xxl-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-xxl-1, .gy-xxl-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-xxl-2, .gx-xxl-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-xxl-2, .gy-xxl-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-xxl-3, .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3, .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4, .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4, .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5, .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5, .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), .05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), .1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n width: 100%;\n margin-bottom: 1rem;\n}\n\n.table > :not(caption) > * > * {\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n padding: .5rem;\n}\n\n.table > tbody {\n vertical-align: inherit;\n}\n\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: .25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > *, .table-striped-columns > :not(caption) > tr > :nth-child(2n) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n.form-label {\n margin-bottom: .5rem;\n}\n\n.col-form-label {\n padding-top: calc(.375rem + var(--bs-border-width));\n padding-bottom: calc(.375rem + var(--bs-border-width));\n font-size: inherit;\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(.5rem + var(--bs-border-width));\n padding-bottom: calc(.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(.25rem + var(--bs-border-width));\n padding-bottom: calc(.25rem + var(--bs-border-width));\n font-size: .875rem;\n}\n\n.form-text {\n color: var(--bs-secondary-color);\n margin-top: .25rem;\n font-size: .875em;\n}\n\n.form-control {\n color: var(--bs-body-color);\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n background-clip: padding-box;\n width: 100%;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control[type=\"file\"] {\n overflow: hidden;\n}\n\n.form-control[type=\"file\"]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n\n.form-control::-webkit-datetime-edit {\n padding: 0;\n display: block;\n}\n\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n\n.form-control::-webkit-file-upload-button {\n -webkit-margin-end: .75rem;\n margin: -.375rem -.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n margin-inline-end: .75rem;\n padding: .375rem .75rem;\n 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\n.form-control::file-selector-button {\n -webkit-margin-end: .75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n margin: -.375rem -.75rem;\n margin-inline-end: .75rem;\n padding: .375rem .75rem;\n 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\n@media (prefers-reduced-motion: reduce) {\n .form-control::file-selector-button {\n transition: none;\n }\n}\n\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n color: var(--bs-body-color);\n border: solid #0000;\n border-width: var(--bs-border-width) 0;\n background-color: #0000;\n width: 100%;\n margin-bottom: 0;\n padding: .375rem 0;\n line-height: 1.5;\n display: block;\n}\n\n.form-control-plaintext:focus {\n outline: 0;\n}\n\n.form-control-plaintext.form-control-lg, .form-control-plaintext.form-control-sm {\n padding-left: 0;\n padding-right: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n border-radius: var(--bs-border-radius-sm);\n padding: .25rem .5rem;\n font-size: .875rem;\n}\n\n.form-control-sm::file-selector-button {\n -webkit-margin-end: .5rem;\n margin: -.25rem -.5rem;\n margin-inline-end: .5rem;\n padding: .25rem .5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n border-radius: var(--bs-border-radius-lg);\n padding: .5rem 1rem;\n font-size: 1.25rem;\n}\n\n.form-control-lg::file-selector-button {\n -webkit-margin-end: 1rem;\n margin: -.5rem -1rem;\n margin-inline-end: 1rem;\n padding: .5rem 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));\n}\n\ntextarea.form-control-sm {\n min-height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n}\n\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n height: calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));\n width: 3rem;\n padding: .375rem;\n}\n\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n\n.form-control-color::-moz-color-swatch {\n border-radius: var(--bs-border-radius);\n border: 0 !important;\n}\n\n.form-control-color::-webkit-color-swatch {\n border-radius: var(--bs-border-radius);\n border: 0 !important;\n}\n\n.form-control-color.form-control-sm {\n height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n color: var(--bs-body-color);\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n background-position: right .75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n width: 100%;\n padding: .375rem 2.25rem .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n background-image: none;\n padding-right: .75rem;\n}\n\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-select:-moz-focusring {\n color: #0000;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n border-radius: var(--bs-border-radius-sm);\n padding-top: .25rem;\n padding-bottom: .25rem;\n padding-left: .5rem;\n font-size: .875rem;\n}\n\n.form-select-lg {\n border-radius: var(--bs-border-radius-lg);\n padding-top: .5rem;\n padding-bottom: .5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n[data-bs-theme=\"dark\"] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n min-height: 1.5rem;\n margin-bottom: .125rem;\n padding-left: 1.5em;\n display: block;\n}\n\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n text-align: right;\n padding-left: 0;\n padding-right: 1.5em;\n}\n\n.form-check-reverse .form-check-input {\n float: right;\n margin-left: 0;\n margin-right: -1.5em;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n vertical-align: top;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: .25em;\n}\n\n.form-check-input[type=\"checkbox\"] {\n border-radius: .25em;\n}\n\n.form-check-input[type=\"radio\"] {\n border-radius: 50%;\n}\n\n.form-check-input:active {\n filter: brightness(90%);\n}\n\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n\n.form-check-input:checked[type=\"checkbox\"] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check-input:checked[type=\"radio\"] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-input[type=\"checkbox\"]:indeterminate {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: .5;\n}\n\n.form-check-input:disabled ~ .form-check-label, .form-check-input[disabled] ~ .form-check-label {\n cursor: default;\n opacity: .5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n background-image: var(--bs-form-switch-bg);\n background-position: 0;\n border-radius: 2em;\n width: 2em;\n margin-left: -2.5em;\n transition: background-position .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n\n.form-switch .form-check-input:checked {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n background-position: 100%;\n}\n\n.form-switch.form-check-reverse {\n padding-left: 0;\n padding-right: 2.5em;\n}\n\n.form-switch.form-check-reverse .form-check-input {\n margin-left: 0;\n margin-right: -2.5em;\n}\n\n.form-check-inline {\n margin-right: 1rem;\n display: inline-block;\n}\n\n.btn-check {\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n position: absolute;\n}\n\n.btn-check:disabled + .btn, .btn-check[disabled] + .btn {\n pointer-events: none;\n filter: none;\n opacity: .65;\n}\n\n[data-bs-theme=\"dark\"] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0000;\n width: 100%;\n height: 1.5rem;\n padding: 0;\n}\n\n.form-range:focus {\n outline: 0;\n}\n\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem #0d6efd40;\n}\n\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem #0d6efd40;\n}\n\n.form-range::-moz-focus-outer {\n border: 0;\n}\n\n.form-range::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n width: 1rem;\n height: 1rem;\n margin-top: -.25rem;\n transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n\n.form-range::-webkit-slider-runnable-track {\n color: #0000;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: #0000;\n border-radius: 1rem;\n width: 100%;\n height: .5rem;\n}\n\n.form-range::-moz-range-thumb {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n width: 1rem;\n height: 1rem;\n transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n\n.form-range::-moz-range-track {\n color: #0000;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: #0000;\n border-radius: 1rem;\n width: 100%;\n height: .5rem;\n}\n\n.form-range:disabled {\n pointer-events: none;\n}\n\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n\n.form-floating > .form-control, .form-floating > .form-control-plaintext, .form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n\n.form-floating > label {\n z-index: 2;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n height: 100%;\n padding: 1rem .75rem;\n transition: opacity .1s ease-in-out, transform .1s ease-in-out;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n\n.form-floating > .form-control, .form-floating > .form-control-plaintext {\n padding: 1rem .75rem;\n}\n\n.form-floating > .form-control-plaintext::-moz-placeholder {\n color: #0000;\n}\n\n.form-floating > .form-control::-moz-placeholder {\n color: #0000;\n}\n\n.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {\n color: #0000;\n}\n\n:-webkit-any(.form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:not(:placeholder-shown)), .form-floating > .form-control-plaintext:focus, .form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), :-webkit-any(.form-floating > .form-control-plaintext:-webkit-autofill, .form-floating > .form-control:-webkit-autofill), .form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: .625rem;\n}\n\n:is(.form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:not(:placeholder-shown)), .form-floating > .form-control-plaintext:focus, .form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), :is(.form-floating > .form-control-plaintext:autofill, .form-floating > .form-control:autofill), .form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: .625rem;\n}\n\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control-plaintext ~ label, .form-floating > .form-control:focus ~ label, .form-floating > .form-control:not(:placeholder-shown) ~ label, .form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label:after {\n z-index: -1;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n height: 1.5em;\n position: absolute;\n inset: 1rem .375rem;\n}\n\n.form-floating > .form-control-plaintext ~ label:after, .form-floating > .form-control:focus ~ label:after, .form-floating > .form-control:not(:placeholder-shown) ~ label:after, .form-floating > .form-select ~ label:after {\n z-index: -1;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n height: 1.5em;\n position: absolute;\n inset: 1rem .375rem;\n}\n\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n\n.form-floating > .form-control:disabled ~ label, .form-floating > :disabled ~ label {\n color: #6c757d;\n}\n\n.form-floating > .form-control:disabled ~ label:after, .form-floating > :disabled ~ label:after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n display: flex;\n position: relative;\n}\n\n.input-group > .form-control, .input-group > .form-floating, .input-group > .form-select {\n flex: auto;\n width: 1%;\n min-width: 0;\n position: relative;\n}\n\n.input-group > .form-control:focus, .input-group > .form-floating:focus-within, .input-group > .form-select:focus {\n z-index: 5;\n}\n\n.input-group .btn {\n z-index: 2;\n position: relative;\n}\n\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n align-items: center;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n display: flex;\n}\n\n.input-group-lg > .btn, .input-group-lg > .form-control, .input-group-lg > .form-select, .input-group-lg > .input-group-text {\n border-radius: var(--bs-border-radius-lg);\n padding: .5rem 1rem;\n font-size: 1.25rem;\n}\n\n.input-group-sm > .btn, .input-group-sm > .form-control, .input-group-sm > .form-select, .input-group-sm > .input-group-text {\n border-radius: var(--bs-border-radius-sm);\n padding: .25rem .5rem;\n font-size: .875rem;\n}\n\n.input-group-lg > .form-select, .input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select, .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select, .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .form-floating:not(:first-child) > .form-control, .input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n color: var(--bs-form-valid-color);\n width: 100%;\n margin-top: .25rem;\n font-size: .875em;\n display: none;\n}\n\n.valid-tooltip {\n z-index: 5;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n margin-top: .1rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n display: none;\n position: absolute;\n top: 100%;\n}\n\n.is-valid ~ .valid-feedback, .is-valid ~ .valid-tooltip, .was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-tooltip {\n display: block;\n}\n\n.form-control.is-valid, .was-validated .form-control:valid {\n border-color: var(--bs-form-valid-border-color);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-position: right calc(.375em + .1875rem) center;\n background-repeat: no-repeat;\n background-size: calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-control.is-valid:focus, .was-validated .form-control:valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n background-position: right calc(.375em + .1875rem) top calc(.375em + .1875rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-select.is-valid, .was-validated .form-select:valid {\n border-color: var(--bs-form-valid-border-color);\n}\n\n.form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"], .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-position: right .75rem center, right 2.25rem center;\n background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: 4.125rem;\n}\n\n.form-select.is-valid:focus, .was-validated .form-select:valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.form-control-color.is-valid, .was-validated .form-control-color:valid {\n width: calc(1.5em + 3.75rem);\n}\n\n.form-check-input.is-valid, .was-validated .form-check-input:valid {\n border-color: var(--bs-form-valid-border-color);\n}\n\n.form-check-input.is-valid:checked, .was-validated .form-check-input:valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n\n.form-check-input.is-valid:focus, .was-validated .form-check-input:valid:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.form-check-input.is-valid ~ .form-check-label, .was-validated .form-check-input:valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: .5em;\n}\n\n.input-group > .form-control:not(:focus).is-valid, .input-group > .form-floating:not(:focus-within).is-valid, .input-group > .form-select:not(:focus).is-valid, .was-validated .input-group > .form-control:not(:focus):valid, .was-validated .input-group > .form-floating:not(:focus-within):valid, .was-validated .input-group > .form-select:not(:focus):valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n color: var(--bs-form-invalid-color);\n width: 100%;\n margin-top: .25rem;\n font-size: .875em;\n display: none;\n}\n\n.invalid-tooltip {\n z-index: 5;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n margin-top: .1rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n display: none;\n position: absolute;\n top: 100%;\n}\n\n.is-invalid ~ .invalid-feedback, .is-invalid ~ .invalid-tooltip, .was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.form-control.is-invalid, .was-validated .form-control:invalid {\n border-color: var(--bs-form-invalid-border-color);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-position: right calc(.375em + .1875rem) center;\n background-repeat: no-repeat;\n background-size: calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-control.is-invalid:focus, .was-validated .form-control:invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n background-position: right calc(.375em + .1875rem) top calc(.375em + .1875rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-select.is-invalid, .was-validated .form-select:invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n\n.form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"], .was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-position: right .75rem center, right 2.25rem center;\n background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: 4.125rem;\n}\n\n.form-select.is-invalid:focus, .was-validated .form-select:invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.form-control-color.is-invalid, .was-validated .form-control-color:invalid {\n width: calc(1.5em + 3.75rem);\n}\n\n.form-check-input.is-invalid, .was-validated .form-check-input:invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n\n.form-check-input.is-invalid:checked, .was-validated .form-check-input:invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n\n.form-check-input.is-invalid:focus, .was-validated .form-check-input:invalid:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.form-check-input.is-invalid ~ .form-check-label, .was-validated .form-check-input:invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: .5em;\n}\n\n.input-group > .form-control:not(:focus).is-invalid, .input-group > .form-floating:not(:focus-within).is-invalid, .input-group > .form-select:not(:focus).is-invalid, .was-validated .input-group > .form-control:not(:focus):invalid, .was-validated .input-group > .form-floating:not(:focus-within):invalid, .was-validated .input-group > .form-select:not(:focus):invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: .75rem;\n --bs-btn-padding-y: .375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 #ffffff26, 0 1px 1px #00000013;\n --bs-btn-disabled-opacity: .65;\n --bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n text-decoration: none;\n 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 display: inline-block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n box-shadow: var(--bs-btn-focus-box-shadow);\n outline: 0;\n}\n\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n box-shadow: var(--bs-btn-focus-box-shadow);\n outline: 0;\n}\n\n.btn-check:checked + .btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check) + .btn:active {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n\n.btn-check:checked + .btn:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible, .btn:first-child:active:focus-visible, :not(.btn-check) + .btn:active:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n\n.btn.disabled, .btn:disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-group-lg > .btn, .btn-lg {\n --bs-btn-padding-y: .5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-group-sm > .btn, .btn-sm {\n --bs-btn-padding-y: .25rem;\n --bs-btn-padding-x: .5rem;\n --bs-btn-font-size: .875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity .15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\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 transition: height .35s;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width .35s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropdown, .dropdown-center, .dropend, .dropstart, .dropup, .dropup-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-top-color: currentColor;\n border-bottom: 0;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: .5rem;\n --bs-dropdown-spacer: .125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: .5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: .25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: .5rem;\n z-index: var(--bs-dropdown-zindex);\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n background-color: var(--bs-dropdown-bg);\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n background-clip: padding-box;\n margin: 0;\n list-style: none;\n display: none;\n position: absolute;\n}\n\n.dropdown-menu[data-bs-popper] {\n margin-top: var(--bs-dropdown-spacer);\n top: 100%;\n left: 0;\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n\n.dropdown-menu-start[data-bs-popper] {\n left: 0;\n right: auto;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n\n.dropdown-menu-end[data-bs-popper] {\n left: auto;\n right: 0;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n\n .dropdown-menu-sm-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n\n .dropdown-menu-sm-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n\n .dropdown-menu-md-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n\n .dropdown-menu-md-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n\n .dropdown-menu-lg-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n\n .dropdown-menu-lg-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n\n .dropdown-menu-xl-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n\n .dropdown-menu-xl-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n\n .dropdown-menu-xxl-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n\n .dropdown-menu-xxl-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n.dropup .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n top: auto;\n bottom: 100%;\n}\n\n.dropup .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-top: 0;\n border-bottom-color: currentColor;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropup .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n top: 0;\n left: 100%;\n right: auto;\n}\n\n.dropend .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-left-color: currentColor;\n border-right: 0;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropend .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropend .dropdown-toggle:after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n top: 0;\n left: auto;\n right: 100%;\n}\n\n.dropstart .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n margin-left: .255em;\n display: none;\n}\n\n.dropstart .dropdown-toggle:before {\n vertical-align: .255em;\n content: \"\";\n border-top: .3em solid #0000;\n border-bottom: .3em solid #0000;\n border-right: .3em solid;\n margin-right: .255em;\n display: inline-block;\n}\n\n.dropstart .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropstart .dropdown-toggle:before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n margin: var(--bs-dropdown-divider-margin-y) 0;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n height: 0;\n overflow: hidden;\n}\n\n.dropdown-item {\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n white-space: nowrap;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n background-color: #0000;\n border: 0;\n width: 100%;\n font-weight: 400;\n text-decoration: none;\n display: block;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n background-color: var(--bs-dropdown-link-active-bg);\n text-decoration: none;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: #0000;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n margin-bottom: 0;\n font-size: .875rem;\n display: block;\n}\n\n.dropdown-item-text {\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n display: block;\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: #ffffff26;\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group, .btn-group-vertical {\n vertical-align: middle;\n display: inline-flex;\n position: relative;\n}\n\n.btn-group-vertical > .btn, .btn-group > .btn {\n flex: auto;\n position: relative;\n}\n\n.btn-group-vertical > .btn-check:checked + .btn, .btn-group-vertical > .btn-check:focus + .btn, .btn-group-vertical > .btn.active, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:hover, .btn-group > .btn-check:checked + .btn, .btn-group > .btn-check:focus + .btn, .btn-group > .btn.active, .btn-group > .btn:active, .btn-group > .btn:focus, .btn-group > .btn:hover {\n z-index: 1;\n}\n\n.btn-toolbar {\n flex-wrap: wrap;\n justify-content: flex-start;\n display: flex;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n\n.btn-group > .btn-group:not(:first-child), .btn-group > :not(.btn-check:first-child) + .btn {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n\n.btn-group > .btn-group:not(:last-child) > .btn, .btn-group > .btn.dropdown-toggle-split:first-child, .btn-group > .btn:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:not(:first-child) > .btn, .btn-group > .btn:nth-child(n+3), .btn-group > :not(.btn-check) + .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-left: .5625rem;\n padding-right: .5625rem;\n}\n\n.dropdown-toggle-split:after, .dropend .dropdown-toggle-split:after, .dropup .dropdown-toggle-split:after {\n margin-left: 0;\n}\n\n.dropstart .dropdown-toggle-split:before {\n margin-right: 0;\n}\n\n.btn-group-sm > .btn + .dropdown-toggle-split, .btn-sm + .dropdown-toggle-split {\n padding-left: .375rem;\n padding-right: .375rem;\n}\n\n.btn-group-lg > .btn + .dropdown-toggle-split, .btn-lg + .dropdown-toggle-split {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n}\n\n.btn-group-vertical > .btn, .btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child), .btn-group-vertical > .btn:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n\n.btn-group-vertical > .btn-group:not(:last-child) > .btn, .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child) > .btn, .btn-group-vertical > .btn ~ .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: .5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n flex-wrap: wrap;\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.nav-link {\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n background: none;\n border: 0;\n text-decoration: none;\n transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n\n.nav-link:focus, .nav-link:hover {\n color: var(--bs-nav-link-hover-color);\n}\n\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n\n.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: .125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n\n.nav-underline .nav-link {\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n padding-left: 0;\n padding-right: 0;\n}\n\n.nav-underline .nav-link:focus, .nav-underline .nav-link:hover {\n border-bottom-color: currentColor;\n}\n\n.nav-underline .nav-link.active, .nav-underline .show > .nav-link {\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentColor;\n font-weight: 700;\n}\n\n.nav-fill .nav-item, .nav-fill > .nav-link {\n text-align: center;\n flex: auto;\n}\n\n.nav-justified .nav-item, .nav-justified > .nav-link {\n text-align: center;\n flex-grow: 1;\n flex-basis: 0;\n}\n\n.nav-fill .nav-item .nav-link, .nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: .5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: .3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: .5rem;\n --bs-navbar-toggler-padding-y: .25rem;\n --bs-navbar-toggler-padding-x: .75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: .25rem;\n --bs-navbar-toggler-transition: box-shadow .15s ease-in-out;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.navbar > .container, .navbar > .container-fluid, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container-xl, .navbar > .container-xxl {\n flex-wrap: inherit;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n white-space: nowrap;\n text-decoration: none;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: .5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n flex-direction: column;\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n color: var(--bs-navbar-color);\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.navbar-text a, .navbar-text a:focus, .navbar-text a:hover {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-grow: 1;\n flex-basis: 100%;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n color: var(--bs-navbar-color);\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n background-color: #0000;\n line-height: 1;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n\n.navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler:focus {\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n outline: 0;\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-position: center;\n background-repeat: no-repeat;\n background-size: 100%;\n width: 1.5em;\n height: 1.5em;\n display: inline-block;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-sm .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-sm .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-sm .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-md .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-md .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-md .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-lg .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-lg .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-lg .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-xl .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-xl .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-xl .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-xxl .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-xxl .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n\n.navbar-expand .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n}\n\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n\n.navbar-expand .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n}\n\n.navbar-dark, .navbar[data-bs-theme=\"dark\"] {\n --bs-navbar-color: #ffffff8c;\n --bs-navbar-hover-color: #ffffffbf;\n --bs-navbar-disabled-color: #ffffff40;\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: #ffffff1a;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=\"dark\"] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: .5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: .5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: .75rem;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n background-clip: border-box;\n flex-direction: column;\n min-width: 0;\n display: flex;\n position: relative;\n}\n\n.card > hr {\n margin-left: 0;\n margin-right: 0;\n}\n\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n\n.card > .list-group:first-child {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n border-top-width: 0;\n}\n\n.card > .list-group:last-child {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n border-bottom-width: 0;\n}\n\n.card > .card-header + .list-group, .card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n flex: auto;\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-.5 * var(--bs-card-title-spacer-y));\n color: var(--bs-card-subtitle-color);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n margin-bottom: 0;\n}\n\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n position: absolute;\n inset: 0;\n}\n\n.card-img, .card-img-bottom, .card-img-top {\n width: 100%;\n}\n\n.card-img, .card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img, .card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n\n@media (min-width: 576px) {\n .card-group {\n flex-flow: wrap;\n display: flex;\n }\n\n .card-group > .card {\n flex: 1 0;\n margin-bottom: 0;\n }\n\n .card-group > .card + .card {\n border-left: 0;\n margin-left: 0;\n }\n\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .card-group > .card:not(:last-child) .card-header, .card-group > .card:not(:last-child) .card-img-top {\n border-top-right-radius: 0;\n }\n\n .card-group > .card:not(:last-child) .card-footer, .card-group > .card:not(:last-child) .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .card-group > .card:not(:first-child) .card-header, .card-group > .card:not(:first-child) .card-img-top {\n border-top-left-radius: 0;\n }\n\n .card-group > .card:not(:first-child) .card-footer, .card-group > .card:not(:first-child) .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform .2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-border-color: #86b7fe;\n --bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n border: 0;\n border-radius: 0;\n align-items: center;\n width: 100%;\n font-size: 1rem;\n display: flex;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n\n.accordion-button:not(.collapsed):after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n\n.accordion-button:after {\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n flex-shrink: 0;\n margin-left: auto;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion-button:after {\n transition: none;\n }\n}\n\n.accordion-button:hover {\n z-index: 2;\n}\n\n.accordion-button:focus {\n z-index: 3;\n border-color: var(--bs-accordion-btn-focus-border-color);\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n outline: 0;\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-item:first-of-type .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-item:last-of-type .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n\n.accordion-item:last-of-type .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush .accordion-collapse {\n border-width: 0;\n}\n\n.accordion-flush .accordion-item {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n}\n\n.accordion-flush .accordion-item:first-child {\n border-top: 0;\n}\n\n.accordion-flush .accordion-item:last-child {\n border-bottom: 0;\n}\n\n.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=\"dark\"] .accordion-button:after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: .5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n flex-wrap: wrap;\n list-style: none;\n display: flex;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n\n.breadcrumb-item + .breadcrumb-item:before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\");\n}\n\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: .75rem;\n --bs-pagination-padding-y: .375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.page-link {\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n text-decoration: none;\n 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 display: block;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n box-shadow: var(--bs-pagination-focus-box-shadow);\n outline: 0;\n}\n\n.active > .page-link, .page-link.active {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n\n.disabled > .page-link, .page-link.disabled {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: .75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: .5rem;\n --bs-pagination-padding-y: .25rem;\n --bs-pagination-font-size: .875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: .65em;\n --bs-badge-padding-y: .35em;\n --bs-badge-font-size: .75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n line-height: 1;\n display: inline-block;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n position: relative;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n color: var(--bs-alert-link-color);\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n\n.alert-dismissible .btn-close {\n z-index: 2;\n padding: 1.25rem 1rem;\n position: absolute;\n top: 0;\n right: 0;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n\n.progress, .progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: .75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width .6s ease;\n height: var(--bs-progress-height);\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n display: flex;\n overflow: hidden;\n}\n\n.progress-bar {\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n flex-direction: column;\n justify-content: center;\n display: flex;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, #ffffff26 25%, #0000 25% 50%, #ffffff26 50% 75%, #0000 75%, #0000);\n background-size: var(--bs-progress-height) var(--bs-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.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: .5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n border-radius: var(--bs-list-group-border-radius);\n flex-direction: column;\n margin-bottom: 0;\n padding-left: 0;\n display: flex;\n}\n\n.list-group-numbered {\n counter-reset: section;\n list-style-type: none;\n}\n\n.list-group-numbered > .list-group-item:before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n width: 100%;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n background-color: var(--bs-list-group-action-hover-bg);\n text-decoration: none;\n}\n\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n text-decoration: none;\n display: block;\n position: relative;\n}\n\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n.list-group-flush {\n border-radius: 0;\n}\n\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: .5;\n --bs-btn-close-hover-opacity: .75;\n --bs-btn-close-focus-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: .25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center / 1em auto no-repeat;\n opacity: var(--bs-btn-close-opacity);\n border: 0;\n border-radius: .375rem;\n width: 1em;\n height: 1em;\n padding: .25em;\n}\n\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n opacity: var(--bs-btn-close-hover-opacity);\n text-decoration: none;\n}\n\n.btn-close:focus {\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n outline: 0;\n}\n\n.btn-close.disabled, .btn-close:disabled {\n pointer-events: none;\n -webkit-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white, [data-bs-theme=\"dark\"] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: .75rem;\n --bs-toast-padding-y: .5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: .875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n background-clip: padding-box;\n max-width: 100%;\n}\n\n.toast.showing {\n opacity: 0;\n}\n\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n z-index: var(--bs-toast-zindex);\n pointer-events: none;\n width: max-content;\n max-width: 100%;\n position: absolute;\n}\n\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n background-clip: padding-box;\n align-items: center;\n display: flex;\n}\n\n.toast-header .btn-close {\n margin-right: calc(-.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: .5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: .5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n z-index: var(--bs-modal-zindex);\n outline: 0;\n width: 100%;\n height: 100%;\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n overflow: hidden auto;\n}\n\n.modal-dialog {\n margin: var(--bs-modal-margin);\n pointer-events: none;\n width: auto;\n position: relative;\n}\n\n.modal.fade .modal-dialog {\n transition: transform .3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n align-items: center;\n display: flex;\n}\n\n.modal-content {\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n width: 100%;\n display: flex;\n position: relative;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: .5;\n z-index: var(--bs-backdrop-zindex);\n background-color: var(--bs-backdrop-bg);\n width: 100vw;\n height: 100vh;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n flex-shrink: 0;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);\n margin: calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n line-height: var(--bs-modal-title-line-height);\n margin-bottom: 0;\n}\n\n.modal-body {\n padding: var(--bs-modal-padding);\n flex: auto;\n position: relative;\n}\n\n.modal-footer {\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n flex-wrap: wrap;\n flex-shrink: 0;\n justify-content: flex-end;\n align-items: center;\n display: flex;\n}\n\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * .5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-left: auto;\n margin-right: auto;\n }\n\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg, .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n\n.modal-fullscreen .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n}\n\n.modal-fullscreen .modal-footer, .modal-fullscreen .modal-header {\n border-radius: 0;\n}\n\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-sm-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-sm-down .modal-footer, .modal-fullscreen-sm-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-md-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-md-down .modal-footer, .modal-fullscreen-md-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-lg-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-lg-down .modal-footer, .modal-fullscreen-lg-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-xl-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-xl-down .modal-footer, .modal-fullscreen-xl-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-xxl-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-xxl-down .modal-footer, .modal-fullscreen-xxl-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: .5rem;\n --bs-tooltip-padding-y: .25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: .875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: .9;\n --bs-tooltip-arrow-width: .8rem;\n --bs-tooltip-arrow-height: .4rem;\n z-index: var(--bs-tooltip-zindex);\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n text-align: left;\n text-align: start;\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-style: normal;\n font-weight: 400;\n line-height: 1.5;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n text-decoration: none;\n display: block;\n}\n\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n\n.tooltip .tooltip-arrow {\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n display: block;\n}\n\n.tooltip .tooltip-arrow:before {\n content: \"\";\n border-style: solid;\n border-color: #0000;\n position: absolute;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow, .bs-tooltip-top .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow:before, .bs-tooltip-top .tooltip-arrow:before {\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;\n border-top-color: var(--bs-tooltip-bg);\n top: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow, .bs-tooltip-end .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow:before, .bs-tooltip-end .tooltip-arrow:before {\n border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;\n border-right-color: var(--bs-tooltip-bg);\n right: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow, .bs-tooltip-bottom .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow:before, .bs-tooltip-bottom .tooltip-arrow:before {\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n bottom: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow, .bs-tooltip-start .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow:before, .bs-tooltip-start .tooltip-arrow:before {\n border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n left: -1px;\n}\n\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: .875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: .5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: .5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n text-align: left;\n text-align: start;\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-style: normal;\n font-weight: 400;\n line-height: 1.5;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n background-clip: padding-box;\n text-decoration: none;\n display: block;\n}\n\n.popover .popover-arrow {\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n display: block;\n}\n\n.popover .popover-arrow:after, .popover .popover-arrow:before {\n content: \"\";\n border: 0 solid #0000;\n display: block;\n position: absolute;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow, .bs-popover-top > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:before, .bs-popover-top > .popover-arrow:after, .bs-popover-top > .popover-arrow:before {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:before, .bs-popover-top > .popover-arrow:before {\n border-top-color: var(--bs-popover-arrow-border);\n bottom: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:after, .bs-popover-top > .popover-arrow:after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow, .bs-popover-end > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:before, .bs-popover-end > .popover-arrow:after, .bs-popover-end > .popover-arrow:before {\n border-width: calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:before, .bs-popover-end > .popover-arrow:before {\n border-right-color: var(--bs-popover-arrow-border);\n left: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:after, .bs-popover-end > .popover-arrow:after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow, .bs-popover-bottom > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:before, .bs-popover-bottom > .popover-arrow:after, .bs-popover-bottom > .popover-arrow:before {\n border-width: 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:before, .bs-popover-bottom > .popover-arrow:before {\n border-bottom-color: var(--bs-popover-arrow-border);\n top: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:after, .bs-popover-bottom > .popover-arrow:after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] .popover-header:before, .bs-popover-bottom .popover-header:before {\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n display: block;\n position: absolute;\n top: 0;\n left: 50%;\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow, .bs-popover-start > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:before, .bs-popover-start > .popover-arrow:after, .bs-popover-start > .popover-arrow:before {\n border-width: calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height);\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:before, .bs-popover-start > .popover-arrow:before {\n border-left-color: var(--bs-popover-arrow-border);\n right: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:after, .bs-popover-start > .popover-arrow:after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n margin-bottom: 0;\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n width: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.carousel-inner:after {\n clear: both;\n content: \"\";\n display: block;\n}\n\n.carousel-item {\n float: left;\n backface-visibility: hidden;\n width: 100%;\n margin-right: -100%;\n transition: transform .6s ease-in-out;\n display: none;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item-next, .carousel-item-prev, .carousel-item.active {\n display: block;\n}\n\n.active.carousel-item-end, .carousel-item-next:not(.carousel-item-start) {\n transform: translateX(100%);\n}\n\n.active.carousel-item-start, .carousel-item-prev:not(.carousel-item-end) {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item-next.carousel-item-start, .carousel-fade .carousel-item-prev.carousel-item-end, .carousel-fade .carousel-item.active {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-end, .carousel-fade .active.carousel-item-start {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s .6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-end, .carousel-fade .active.carousel-item-start {\n transition: none;\n }\n}\n\n.carousel-control-next, .carousel-control-prev {\n z-index: 1;\n color: #fff;\n text-align: center;\n opacity: .5;\n background: none;\n border: 0;\n justify-content: center;\n align-items: center;\n width: 15%;\n padding: 0;\n transition: opacity .15s;\n display: flex;\n position: absolute;\n top: 0;\n bottom: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-next, .carousel-control-prev {\n transition: none;\n }\n}\n\n.carousel-control-next:focus, .carousel-control-next:hover, .carousel-control-prev:focus, .carousel-control-prev:hover {\n color: #fff;\n opacity: .9;\n outline: 0;\n text-decoration: none;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-next-icon, .carousel-control-prev-icon {\n background-position: 50%;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n width: 2rem;\n height: 2rem;\n display: inline-block;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n z-index: 2;\n justify-content: center;\n margin-bottom: 1rem;\n margin-left: 15%;\n margin-right: 15%;\n padding: 0;\n display: flex;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n text-indent: -999px;\n cursor: pointer;\n opacity: .5;\n background-color: #fff;\n background-clip: padding-box;\n border: 10px solid #0000;\n border-left: 0;\n border-right: 0;\n flex: 0 auto;\n width: 30px;\n height: 3px;\n margin-left: 3px;\n margin-right: 3px;\n padding: 0;\n transition: opacity .6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n color: #fff;\n text-align: center;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n position: absolute;\n bottom: 1.25rem;\n left: 15%;\n right: 15%;\n}\n\n.carousel-dark .carousel-control-next-icon, .carousel-dark .carousel-control-prev-icon {\n filter: invert() grayscale(100);\n}\n\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-control-next-icon, [data-bs-theme=\"dark\"] .carousel .carousel-control-prev-icon, [data-bs-theme=\"dark\"].carousel .carousel-control-next-icon, [data-bs-theme=\"dark\"].carousel .carousel-control-prev-icon {\n filter: invert() grayscale(100);\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=\"dark\"].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-caption, [data-bs-theme=\"dark\"].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-border, .spinner-grow {\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n border-radius: 50%;\n display: inline-block;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -.125em;\n --bs-spinner-border-width: .25em;\n --bs-spinner-animation-speed: .75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: #0000;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: .2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -.125em;\n --bs-spinner-animation-speed: .75s;\n --bs-spinner-animation-name: spinner-grow;\n opacity: 0;\n background-color: currentColor;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border, .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n\n.offcanvas, .offcanvas-lg, .offcanvas-md, .offcanvas-sm, .offcanvas-xl, .offcanvas-xxl {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform .3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-sm.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-sm.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-sm.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-sm.show:not(.hiding), .offcanvas-sm.showing {\n transform: none;\n }\n\n .offcanvas-sm.hiding, .offcanvas-sm.show, .offcanvas-sm.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n\n .offcanvas-sm .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-md.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-md.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-md.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-md.show:not(.hiding), .offcanvas-md.showing {\n transform: none;\n }\n\n .offcanvas-md.hiding, .offcanvas-md.show, .offcanvas-md.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n\n .offcanvas-md .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-lg.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-lg.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-lg.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-lg.show:not(.hiding), .offcanvas-lg.showing {\n transform: none;\n }\n\n .offcanvas-lg.hiding, .offcanvas-lg.show, .offcanvas-lg.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n\n .offcanvas-lg .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-xl.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-xl.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-xl.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-xl.show:not(.hiding), .offcanvas-xl.showing {\n transform: none;\n }\n\n .offcanvas-xl.hiding, .offcanvas-xl.show, .offcanvas-xl.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n\n .offcanvas-xl .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-xxl.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-xxl.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-xxl.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-xxl.show:not(.hiding), .offcanvas-xxl.showing {\n transform: none;\n }\n\n .offcanvas-xxl.hiding, .offcanvas-xxl.show, .offcanvas-xxl.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n\n .offcanvas-xxl .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n.offcanvas {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n\n.offcanvas.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n}\n\n.offcanvas.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n}\n\n.offcanvas.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n}\n\n.offcanvas.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n}\n\n.offcanvas.show:not(.hiding), .offcanvas.showing {\n transform: none;\n}\n\n.offcanvas.hiding, .offcanvas.show, .offcanvas.showing {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n z-index: 1040;\n background-color: #000;\n width: 100vw;\n height: 100vh;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n\n.offcanvas-backdrop.show {\n opacity: .5;\n}\n\n.offcanvas-header {\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);\n margin-top: calc(-.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-.5 * var(--bs-offcanvas-padding-y));\n}\n\n.offcanvas-title {\n line-height: var(--bs-offcanvas-title-line-height);\n margin-bottom: 0;\n}\n\n.offcanvas-body {\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n flex-grow: 1;\n overflow-y: auto;\n}\n\n.placeholder {\n vertical-align: middle;\n cursor: wait;\n opacity: .5;\n background-color: currentColor;\n min-height: 1em;\n display: inline-block;\n}\n\n.placeholder.btn:before {\n content: \"\";\n display: inline-block;\n}\n\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.placeholder-glow .placeholder {\n animation: 2s ease-in-out infinite placeholder-glow;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: .2;\n }\n}\n\n.placeholder-wave {\n animation: 2s linear infinite placeholder-wave;\n -webkit-mask-image: linear-gradient(130deg, #000 55%, #000c 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, #000c 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0;\n mask-position: -200% 0;\n }\n}\n\n.clearfix:after {\n clear: both;\n content: \"\";\n display: block;\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-primary:focus, .link-primary:hover {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary:focus, .link-secondary:hover {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success:focus, .link-success:hover {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info:focus, .link-info:hover {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning:focus, .link-warning:hover {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger:focus, .link-danger:hover {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light:focus, .link-light:hover {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark:focus, .link-dark:hover {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis:focus, .link-body-emphasis:hover {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, .75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n}\n\n.focus-ring:focus {\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n outline: 0;\n}\n\n.icon-link {\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n text-underline-offset: .25em;\n backface-visibility: hidden;\n align-items: center;\n gap: .375rem;\n display: inline-flex;\n}\n\n.icon-link > .bi {\n fill: currentColor;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n transition: transform .2s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:focus-visible > .bi, .icon-link-hover:hover > .bi {\n transform: var(--bs-icon-link-transform, translate3d(.25em, 0, 0));\n}\n\n.ratio {\n width: 100%;\n position: relative;\n}\n\n.ratio:before {\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n display: block;\n}\n\n.ratio > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571%;\n}\n\n.fixed-top {\n z-index: 1030;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.fixed-bottom {\n z-index: 1030;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.sticky-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n}\n\n.sticky-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-sm-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 768px) {\n .sticky-md-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-md-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 992px) {\n .sticky-lg-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-lg-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .sticky-xl-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-xl-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-xxl-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n.hstack {\n flex-direction: row;\n align-self: stretch;\n align-items: center;\n display: flex;\n}\n\n.vstack {\n flex-direction: column;\n flex: auto;\n align-self: stretch;\n display: flex;\n}\n\n.visually-hidden, .visually-hidden-focusable:not(:focus):not(:focus-within) {\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n width: 1px !important;\n height: 1px !important;\n margin: -1px !important;\n padding: 0 !important;\n overflow: hidden !important;\n}\n\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption), .visually-hidden:not(caption) {\n position: absolute !important;\n}\n\n.stretched-link:after {\n z-index: 1;\n content: \"\";\n position: absolute;\n inset: 0;\n}\n\n.text-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.vr {\n width: var(--bs-border-width);\n opacity: .25;\n background-color: currentColor;\n align-self: stretch;\n min-height: 1em;\n display: inline-block;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: .25 !important;\n}\n\n.opacity-50 {\n opacity: .5 !important;\n}\n\n.opacity-75 {\n opacity: .75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: .1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: .25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: .5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: .75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: .25rem !important;\n}\n\n.m-2 {\n margin: .5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n}\n\n.mx-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n}\n\n.my-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: .25rem !important;\n}\n\n.mt-2 {\n margin-top: .5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: .25rem !important;\n}\n\n.me-2 {\n margin-right: .5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: .25rem !important;\n}\n\n.mb-2 {\n margin-bottom: .5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: .25rem !important;\n}\n\n.ms-2 {\n margin-left: .5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: .25rem !important;\n}\n\n.p-2 {\n padding: .5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n}\n\n.px-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n}\n\n.py-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: .25rem !important;\n}\n\n.pt-2 {\n padding-top: .5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: .25rem !important;\n}\n\n.pe-2 {\n padding-right: .5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: .25rem !important;\n}\n\n.pb-2 {\n padding-bottom: .5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: .25rem !important;\n}\n\n.ps-2 {\n padding-left: .5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: .25rem !important;\n}\n\n.gap-2 {\n gap: .5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: .25rem !important;\n}\n\n.row-gap-2 {\n row-gap: .5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + .9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + .6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + .3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: #00000080 !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: #ffffff80 !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: .25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: .5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: .75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10, .link-opacity-10-hover:hover {\n --bs-link-opacity: .1;\n}\n\n.link-opacity-25, .link-opacity-25-hover:hover {\n --bs-link-opacity: .25;\n}\n\n.link-opacity-50, .link-opacity-50-hover:hover {\n --bs-link-opacity: .5;\n}\n\n.link-opacity-75, .link-opacity-75-hover:hover {\n --bs-link-opacity: .75;\n}\n\n.link-opacity-100, .link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1, .link-offset-1-hover:hover {\n text-underline-offset: .125em !important;\n}\n\n.link-offset-2, .link-offset-2-hover:hover {\n text-underline-offset: .25em !important;\n}\n\n.link-offset-3, .link-offset-3-hover:hover {\n text-underline-offset: .375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0, .link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10, .link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: .1;\n}\n\n.link-underline-opacity-25, .link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: .25;\n}\n\n.link-underline-opacity-50, .link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: .5;\n}\n\n.link-underline-opacity-75, .link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: .75;\n}\n\n.link-underline-opacity-100, .link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: #0000 !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: .1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: .25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: .5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: .75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-top-left-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n\n .float-sm-end {\n float: right !important;\n }\n\n .float-sm-none {\n float: none !important;\n }\n\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: .25rem !important;\n }\n\n .m-sm-2 {\n margin: .5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-sm-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-sm-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-sm-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: .25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: .5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-right: 0 !important;\n }\n\n .me-sm-1 {\n margin-right: .25rem !important;\n }\n\n .me-sm-2 {\n margin-right: .5rem !important;\n }\n\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n\n .me-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n\n .ms-sm-1 {\n margin-left: .25rem !important;\n }\n\n .ms-sm-2 {\n margin-left: .5rem !important;\n }\n\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-left: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: .25rem !important;\n }\n\n .p-sm-2 {\n padding: .5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-sm-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-sm-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-sm-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: .25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: .5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n\n .pe-sm-1 {\n padding-right: .25rem !important;\n }\n\n .pe-sm-2 {\n padding-right: .5rem !important;\n }\n\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n\n .ps-sm-1 {\n padding-left: .25rem !important;\n }\n\n .ps-sm-2 {\n padding-left: .5rem !important;\n }\n\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n\n .gap-sm-0 {\n gap: 0 !important;\n }\n\n .gap-sm-1 {\n gap: .25rem !important;\n }\n\n .gap-sm-2 {\n gap: .5rem !important;\n }\n\n .gap-sm-3 {\n gap: 1rem !important;\n }\n\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n\n .gap-sm-5 {\n gap: 3rem !important;\n }\n\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-sm-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-sm-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-sm-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-sm-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-sm-start {\n text-align: left !important;\n }\n\n .text-sm-end {\n text-align: right !important;\n }\n\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n\n .float-md-end {\n float: right !important;\n }\n\n .float-md-none {\n float: none !important;\n }\n\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: .25rem !important;\n }\n\n .m-md-2 {\n margin: .5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-md-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-md-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-md-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: .25rem !important;\n }\n\n .mt-md-2 {\n margin-top: .5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-right: 0 !important;\n }\n\n .me-md-1 {\n margin-right: .25rem !important;\n }\n\n .me-md-2 {\n margin-right: .5rem !important;\n }\n\n .me-md-3 {\n margin-right: 1rem !important;\n }\n\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-right: 3rem !important;\n }\n\n .me-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-left: 0 !important;\n }\n\n .ms-md-1 {\n margin-left: .25rem !important;\n }\n\n .ms-md-2 {\n margin-left: .5rem !important;\n }\n\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n\n .ms-md-auto {\n margin-left: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: .25rem !important;\n }\n\n .p-md-2 {\n padding: .5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-md-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-md-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-md-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: .25rem !important;\n }\n\n .pt-md-2 {\n padding-top: .5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-right: 0 !important;\n }\n\n .pe-md-1 {\n padding-right: .25rem !important;\n }\n\n .pe-md-2 {\n padding-right: .5rem !important;\n }\n\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-left: 0 !important;\n }\n\n .ps-md-1 {\n padding-left: .25rem !important;\n }\n\n .ps-md-2 {\n padding-left: .5rem !important;\n }\n\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n\n .gap-md-0 {\n gap: 0 !important;\n }\n\n .gap-md-1 {\n gap: .25rem !important;\n }\n\n .gap-md-2 {\n gap: .5rem !important;\n }\n\n .gap-md-3 {\n gap: 1rem !important;\n }\n\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n\n .gap-md-5 {\n gap: 3rem !important;\n }\n\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-md-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-md-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-md-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-md-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-md-start {\n text-align: left !important;\n }\n\n .text-md-end {\n text-align: right !important;\n }\n\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n\n .float-lg-end {\n float: right !important;\n }\n\n .float-lg-none {\n float: none !important;\n }\n\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: .25rem !important;\n }\n\n .m-lg-2 {\n margin: .5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-lg-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-lg-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-lg-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: .25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: .5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-right: 0 !important;\n }\n\n .me-lg-1 {\n margin-right: .25rem !important;\n }\n\n .me-lg-2 {\n margin-right: .5rem !important;\n }\n\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n\n .me-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n\n .ms-lg-1 {\n margin-left: .25rem !important;\n }\n\n .ms-lg-2 {\n margin-left: .5rem !important;\n }\n\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-left: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: .25rem !important;\n }\n\n .p-lg-2 {\n padding: .5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-lg-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-lg-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-lg-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: .25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: .5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n\n .pe-lg-1 {\n padding-right: .25rem !important;\n }\n\n .pe-lg-2 {\n padding-right: .5rem !important;\n }\n\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n\n .ps-lg-1 {\n padding-left: .25rem !important;\n }\n\n .ps-lg-2 {\n padding-left: .5rem !important;\n }\n\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n\n .gap-lg-0 {\n gap: 0 !important;\n }\n\n .gap-lg-1 {\n gap: .25rem !important;\n }\n\n .gap-lg-2 {\n gap: .5rem !important;\n }\n\n .gap-lg-3 {\n gap: 1rem !important;\n }\n\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n\n .gap-lg-5 {\n gap: 3rem !important;\n }\n\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-lg-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-lg-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-lg-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-lg-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-lg-start {\n text-align: left !important;\n }\n\n .text-lg-end {\n text-align: right !important;\n }\n\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n\n .float-xl-end {\n float: right !important;\n }\n\n .float-xl-none {\n float: none !important;\n }\n\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: .25rem !important;\n }\n\n .m-xl-2 {\n margin: .5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xl-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-xl-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-xl-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: .25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: .5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-right: 0 !important;\n }\n\n .me-xl-1 {\n margin-right: .25rem !important;\n }\n\n .me-xl-2 {\n margin-right: .5rem !important;\n }\n\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xl-1 {\n margin-left: .25rem !important;\n }\n\n .ms-xl-2 {\n margin-left: .5rem !important;\n }\n\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-left: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: .25rem !important;\n }\n\n .p-xl-2 {\n padding: .5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xl-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-xl-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-xl-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: .25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: .5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xl-1 {\n padding-right: .25rem !important;\n }\n\n .pe-xl-2 {\n padding-right: .5rem !important;\n }\n\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xl-1 {\n padding-left: .25rem !important;\n }\n\n .ps-xl-2 {\n padding-left: .5rem !important;\n }\n\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n\n .gap-xl-0 {\n gap: 0 !important;\n }\n\n .gap-xl-1 {\n gap: .25rem !important;\n }\n\n .gap-xl-2 {\n gap: .5rem !important;\n }\n\n .gap-xl-3 {\n gap: 1rem !important;\n }\n\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n\n .gap-xl-5 {\n gap: 3rem !important;\n }\n\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-xl-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-xl-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-xl-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-xl-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-xl-start {\n text-align: left !important;\n }\n\n .text-xl-end {\n text-align: right !important;\n }\n\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n\n .float-xxl-end {\n float: right !important;\n }\n\n .float-xxl-none {\n float: none !important;\n }\n\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: .25rem !important;\n }\n\n .m-xxl-2 {\n margin: .5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-xxl-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: .25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: .5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n\n .me-xxl-1 {\n margin-right: .25rem !important;\n }\n\n .me-xxl-2 {\n margin-right: .5rem !important;\n }\n\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-right: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-left: .25rem !important;\n }\n\n .ms-xxl-2 {\n margin-left: .5rem !important;\n }\n\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: .25rem !important;\n }\n\n .p-xxl-2 {\n padding: .5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xxl-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-xxl-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: .25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: .5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-right: .25rem !important;\n }\n\n .pe-xxl-2 {\n padding-right: .5rem !important;\n }\n\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-left: .25rem !important;\n }\n\n .ps-xxl-2 {\n padding-left: .5rem !important;\n }\n\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n\n .gap-xxl-0 {\n gap: 0 !important;\n }\n\n .gap-xxl-1 {\n gap: .25rem !important;\n }\n\n .gap-xxl-2 {\n gap: .5rem !important;\n }\n\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-xxl-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-xxl-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-xxl-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-xxl-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-xxl-start {\n text-align: left !important;\n }\n\n .text-xxl-end {\n text-align: right !important;\n }\n\n .text-xxl-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n\n .fs-2 {\n font-size: 2rem !important;\n }\n\n .fs-3 {\n font-size: 1.75rem !important;\n }\n\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n\n:root {\n --body-color: #212529;\n --move-btn-width: 60px;\n --move-btn-height: 34px;\n --focus-ring: 0 0 0 .2rem #268fff80;\n}\n\n:not(:defined) {\n display: none !important;\n}\n\nhtml, body {\n font-size: 14px;\n}\n\nbody {\n background-color: #eae9e9;\n overflow-x: hidden;\n}\n\n[hidden] {\n display: none !important;\n}\n\na:focus-visible, details summary:focus-visible {\n box-shadow: var(--focus-ring);\n border-radius: .25rem;\n outline: 0;\n transition: box-shadow .15s ease-in-out;\n}\n\n.container {\n max-width: 1400px;\n}\n\n.site-header {\n text-align: center;\n flex-direction: column;\n align-items: center;\n row-gap: .5rem;\n margin: 3rem .5rem;\n display: flex;\n}\n\n.page-title {\n margin-bottom: 0;\n font-weight: 300;\n}\n\n.canvas {\n max-width: 100%;\n display: block;\n}\n\n.inputs-container input[type=\"color\"], .settings-button {\n cursor: pointer;\n border: 0;\n width: 30px;\n height: 30px;\n margin: 0 2px;\n padding: 0;\n line-height: 1;\n}\n\n.inputs-container .meme-text {\n min-width: 0;\n height: calc(1.5em + .75rem + 2px);\n min-height: calc(1.5em + .75rem + 2px);\n margin: .5rem;\n}\n\n.settings-button {\n background-image: url(\"gear.b3b5d1a5.svg\");\n background-position: center;\n background-repeat: no-repeat;\n background-size: 60%;\n}\n\n.inputs-container {\n flex: 1;\n}\n\n.inputs-container:empty {\n display: none;\n}\n\n.instructions {\n text-align: center;\n text-wrap: balance;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n row-gap: 1rem;\n height: 100%;\n min-height: 200px;\n padding: 1rem;\n display: flex;\n}\n\n.errorsContainer {\n z-index: 1051;\n pointer-events: none;\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.errorsContainer .alert {\n pointer-events: all;\n}\n\ndetails[open] summary {\n margin-bottom: .5rem;\n}\n\nbutton[data-button=\"delete-text-box\"] {\n background-image: url(\"trash.d9edab78.svg\");\n background-position: center;\n background-repeat: no-repeat;\n width: 25px;\n min-width: 25px;\n height: 25px;\n margin-left: .5rem;\n padding: 0;\n}\n\n.gallery {\n scroll-behavior: smooth;\n gap: .5rem;\n min-height: 112px;\n margin: 0;\n padding: .25rem 0;\n display: flex;\n overflow-x: auto;\n}\n\n.gallery > button {\n cursor: pointer;\n padding: 0;\n}\n\n.gallery > button > img {\n object-fit: cover;\n border-radius: .2rem;\n min-width: 88px;\n height: 88px;\n display: block;\n}\n\n.gallery__no-results {\n text-align: center;\n flex: 1;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.move-text-actions {\n width: calc(var(--move-btn-width) * 3);\n height: calc(var(--move-btn-height) * 2);\n margin: 0 auto;\n position: relative;\n}\n\n.move-text-actions [data-move] {\n width: var(--move-btn-width);\n height: var(--move-btn-height);\n background-position: center;\n background-repeat: no-repeat;\n position: absolute;\n}\n\n.move-text-actions [data-move=\"offsetY\"][data-sign=\"-\"] {\n top: -1px;\n left: var(--move-btn-width);\n background-image: url(\"chevron-up.f532d8b6.svg\");\n}\n\n.move-text-actions [data-move=\"offsetY\"][data-sign=\"+\"] {\n top: calc(var(--move-btn-height) + 1px);\n left: var(--move-btn-width);\n background-image: url(\"chevron-down.ad14d981.svg\");\n}\n\n.move-text-actions [data-move=\"offsetX\"][data-sign=\"-\"] {\n top: calc(var(--move-btn-height) / 2);\n background-image: url(\"chevron-left.20a2f252.svg\");\n left: -2px;\n}\n\n.move-text-actions [data-move=\"offsetX\"][data-sign=\"+\"] {\n top: calc(var(--move-btn-height) / 2);\n left: calc(var(--move-btn-width) * 2 + 2px);\n background-image: url(\"chevron-right.1be074ac.svg\");\n}\n\ncapture-photo:not(:defined) {\n display: none;\n}\n\ncapture-photo {\n overflow: hidden;\n}\n\ncapture-photo::part(video) {\n background-color: #000;\n width: 100%;\n}\n\ncapture-photo::part(actions-container) {\n justify-content: center;\n align-items: center;\n gap: 2rem;\n padding: 1rem 0;\n display: flex;\n}\n\ncapture-photo::part(capture-button), capture-photo::part(facing-mode-button) {\n text-indent: -9999px;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n background-position: center;\n background-repeat: no-repeat;\n border-radius: 50%;\n overflow: hidden;\n box-shadow: 0 0 1rem #0000004d;\n}\n\ncapture-photo::part(capture-button) {\n background-color: #c2c3c7;\n background-image: url(\"aperture.4bf28ce8.svg\");\n background-size: 90%;\n border: 5px solid #fff;\n width: 70px;\n height: 70px;\n}\n\ncapture-photo::part(facing-mode-button) {\n background-color: #fff;\n background-image: url(\"camera-reverse.284e8ac9.svg\");\n background-size: 60%;\n border: 0;\n width: 50px;\n height: 50px;\n margin-right: calc(-50px - 2rem);\n}\n\ncapture-photo[loading]::part(video) {\n background-image: url(\"spinner.4452ed29.svg\");\n background-position: center;\n background-repeat: no-repeat;\n background-size: 60px;\n}\n\ncapture-photo[loading]::part(capture-button), capture-photo[loading]::part(facing-mode-button) {\n opacity: .6;\n pointer-events: none;\n}\n\nmodal-element {\n --me-width: fit-content;\n --me-border-radius: .25rem;\n --me-border-width: 0;\n --me-box-shadow: 0 0 1rem 0 #0000004d;\n}\n\n#videoModal {\n --me-width: 600px;\n}\n\nmodal-element::part(base):focus-visible {\n outline: 0;\n}\n\nmodal-element [slot=\"header\"] {\n color: var(--body-color);\n margin: 0;\n}\n\nmodal-element::part(close) {\n color: var(--body-color);\n border-radius: .25rem;\n transition: box-shadow .15s ease-in-out;\n}\n\nmodal-element::part(close):focus-visible {\n box-shadow: var(--focus-ring);\n outline: 0;\n}\n\nmodal-element::part(body) {\n padding-block: 0;\n}\n\nmodal-element [slot=\"footer\"] {\n text-align: center;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n gap: .25rem;\n display: flex;\n}\n\nfiles-dropzone {\n --dropzone-border-color: var(--bs-secondary);\n --dropzone-border-color-hover: var(--bs-primary);\n --dropzone-border-color-dragover: var(--bs-primary);\n --dropzone-background-color-hover: var(--bs-light);\n --dropzone-background-color-dragover: var(--bs-light);\n --dropzone-focus-box-shadow: var(--focus-ring);\n height: 100%;\n}\n\nfiles-dropzone::part(dropzone) {\n height: 100%;\n padding: .5rem;\n}\n\n.text-underline {\n text-decoration: underline;\n}\n\n/*# sourceMappingURL=index.58beac5f.css.map */\n","@charset \"UTF-8\";/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",\"Noto Sans\",\"Liberation Sans\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;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-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:\"— \"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' 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:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size=\"1\"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:\"\";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:\"\";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size=\"1\"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size=\"1\"]{--bs-form-select-bg-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size=\"1\"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size=\"1\"]{--bs-form-select-bg-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);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);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--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-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.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;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\"}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{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)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-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)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.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}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.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-card-cap-bg);border-top:var(--bs-card-border-width) solid 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-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-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,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, \"/\")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@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{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{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-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;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);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);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:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, \".\") \". \";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-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-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width: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-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;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}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.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)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;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);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.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-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:\"\";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.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-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.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)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.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:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.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}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:\"\"}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:\"\"}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:\"\"}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:\"\"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}\n","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::-moz-placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n -webkit-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 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.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\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 .form-control::-webkit-file-upload-button {\n -webkit-transition: none;\n transition: none;\n }\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-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-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::-webkit-file-upload-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::-webkit-file-upload-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' 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: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: 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 .form-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n -moz-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: 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 .form-range::-moz-range-thumb {\n -moz-transition: none;\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\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 padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {\n color: transparent;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\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: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\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.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\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-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\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 .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\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.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\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(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-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-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-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, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-border-color: #86b7fe;\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n border-color: var(--bs-accordion-btn-focus-border-color);\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush .accordion-collapse {\n border-width: 0;\n}\n.accordion-flush .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-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(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\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(--bs-progress-height) var(--bs-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.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\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\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-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-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-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(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: -webkit-max-content;\n width: -moz-max-content;\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\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(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\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(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-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\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n/* rtl:options: {\n \"autoRename\": true,\n \"stringMap\":[ {\n \"name\" : \"prev-next\",\n \"search\" : \"prev\",\n \"replace\" : \"next\"\n } ]\n} */\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\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 --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0%;\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n -webkit-backface-visibility: hidden;\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\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n -moz-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n .float-xxl-end {\n float: right !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: left !important;\n }\n .text-xxl-end {\n text-align: right !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\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\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\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 @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\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\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` 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(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\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\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-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\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include 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\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}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\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\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\nbutton {\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\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`\n`;\nclass $4f74a8126e204146$export$30b344bef3e55b67 extends HTMLElement {\n #t;\n #e;\n #s = [];\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\",\n delegatesFocus: !0\n }).appendChild($4f74a8126e204146$var$e.content.cloneNode(!0)), this.#t = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null, this.#e = this.#i();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n attributeChangedCallback(t, e, s) {\n \"disabled\" === t && e !== s && this.#e && (this.#e.toggleAttribute(\"disabled\", this.disabled), this.#e.setAttribute(\"aria-disabled\", this.disabled.toString()), this.#e.part && this.#e.part.contains(\"button\") && this.#e.part.toggle(\"button--disabled\", this.disabled));\n }\n connectedCallback() {\n this.#r(\"shareUrl\"), this.#r(\"shareTitle\"), this.#r(\"shareText\"), this.#r(\"shareFiles\"), this.#r(\"disabled\"), this.#t?.addEventListener(\"slotchange\", this.#a), this.#e?.addEventListener(\"click\", this.#n);\n }\n disconnectedCallback() {\n this.#t?.removeEventListener(\"slotchange\", this.#a), this.#e?.removeEventListener(\"click\", this.#n);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(t) {\n this.toggleAttribute(\"disabled\", !!t);\n }\n get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(t) {\n this.setAttribute(\"share-url\", t);\n }\n get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(t) {\n this.setAttribute(\"share-title\", t);\n }\n get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(t) {\n this.setAttribute(\"share-text\", t);\n }\n get shareFiles() {\n return this.#s;\n }\n set shareFiles(t) {\n Array.isArray(t) && t.length > 0 && (this.#s = t);\n }\n async share() {\n if (!this.disabled) try {\n let t = {};\n this.shareUrl && (t.url = this.shareUrl), this.shareTitle && (t.title = this.shareTitle), this.shareText && (t.text = this.shareText), Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n }) && (t.files = this.shareFiles), await navigator.share(t), this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: !0,\n composed: !0,\n detail: {\n shareData: t\n }\n }));\n } catch (t) {\n if (t instanceof Error && \"AbortError\" === t.name) {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n #n = (t)=>{\n t.preventDefault(), this.disabled || this.share();\n };\n #a = (t)=>{\n t.target && \"button\" === t.target.name && (this.#e?.removeEventListener(\"click\", this.#n), this.#e = this.#i(), this.#e && (this.#e.addEventListener(\"click\", this.#n), \"BUTTON\" === this.#e.nodeName || this.#e.hasAttribute(\"role\") || this.#e.setAttribute(\"role\", \"button\")));\n };\n #i() {\n return this.#t && this.#t.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"button\" === t.getAttribute(\"slot\")) || null;\n }\n #r(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n static defineCustomElement(t = \"web-share\") {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $4f74a8126e204146$export$30b344bef3e55b67);\n }\n}\n$4f74a8126e204146$export$30b344bef3e55b67.defineCustomElement();\n\n\nObject.defineProperty({}, \"CapturePhoto\", {\n get: function() {\n return $636b0cf1ed0b9f88$export$cc30a98fe3890794;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $636b0cf1ed0b9f88$var$t = (t, e, i)=>(Number.isNaN(e) && (e = 0), Number.isNaN(i) && (i = 0), Math.min(Math.max(t, Math.min(e, i)), Math.max(e, i))), $636b0cf1ed0b9f88$var$e = \"capture-photo\", $636b0cf1ed0b9f88$var$i = `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`, $636b0cf1ed0b9f88$var$o = document.createElement(\"template\");\n$636b0cf1ed0b9f88$var$o.innerHTML = `\n \n\n \n\n \n\n

\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\nclass $636b0cf1ed0b9f88$export$cc30a98fe3890794 extends HTMLElement {\n #t = {};\n #e = null;\n #i = null;\n #o = null;\n #n = null;\n #a = null;\n #s = null;\n #r = null;\n #l = null;\n constructor(){\n super(), this.#t = this.getSupportedConstraints(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($636b0cf1ed0b9f88$var$o.content.cloneNode(!0));\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n attributeChangedCallback(t, e, i) {\n if (!this.isConnected) return;\n let o = this.getTrackCapabilities(), n = this.getTrackSettings();\n if (\"no-image\" === t && e !== i && this.#u(), \"facing-mode\" === t && e !== i && \"facingMode\" in this.#t) {\n let t = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n \"facingMode\" in n && t && (this.stopVideoStream(), this.startVideoStream());\n }\n if (\"camera-resolution\" === t && e !== i && \"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [t = 0, e = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n if (t > 0 && e > 0 && \"width\" in o && \"height\" in o) {\n let i = !!(o.width?.min && o.width?.max) && t >= o?.width?.min && t <= o?.width?.max, a = !!(o.height?.min && o.height?.max) && e >= o?.height?.min && e <= o?.height?.max;\n \"width\" in n && \"height\" in n && i && a && (this.stopVideoStream(), this.startVideoStream());\n }\n }\n if (\"pan\" === t && e !== i && \"pan\" in this.#t) {\n let t = !!(\"pan\" in o && o.pan?.min && o.pan?.max) && this.pan >= o.pan.min && this.pan <= o.pan.max;\n \"pan\" in n && \"number\" == typeof this.pan && t && this.#h(\"pan\", this.pan);\n }\n if (\"tilt\" === t && e !== i && \"tilt\" in this.#t) {\n let t = !!(\"tilt\" in o && o.tilt?.min && o.tilt?.max) && this.tilt >= o.tilt.min && this.tilt <= o.tilt.max;\n \"tilt\" in n && \"number\" == typeof this.tilt && t && this.#h(\"tilt\", this.tilt);\n }\n if (\"zoom\" === t && e !== i && \"zoom\" in this.#t) {\n let t = !!(\"zoom\" in o && o.zoom?.min && o.zoom?.max) && this.zoom >= o.zoom.min && this.zoom <= o.zoom.max;\n \"zoom\" in n && \"number\" == typeof this.zoom && t && this.#h(\"zoom\", this.zoom);\n }\n }\n connectedCallback() {\n if (this.#d(\"autpoPlay\"), this.#d(\"noImage\"), this.#d(\"facingMode\"), this.#d(\"cameraResolution\"), this.#d(\"pan\"), this.#d(\"tilt\"), this.#d(\"zoom\"), this.#d(\"calculateFileSize\"), this.#i = this.shadowRoot?.querySelector(\"canvas\") || null, this.#o = this.shadowRoot?.getElementById(\"output\") || null, this.#n = this.shadowRoot?.querySelector(\"video\") || null, this.#a = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null, this.#s = this.#c(), this.#r = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null, this.#l = this.#m(), this.#n?.addEventListener(\"loadedmetadata\", this.#p), this.#a?.addEventListener(\"slotchange\", this.#g), this.#s?.addEventListener(\"click\", this.#b), this.#r?.addEventListener(\"slotchange\", this.#f), this.#l?.addEventListener(\"click\", this.#v), !$636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n this.autoPlay && this.startVideoStream();\n }\n disconnectedCallback() {\n this.stopVideoStream(), this.#l?.removeEventListener(\"click\", this.#v), this.#s?.removeEventListener(\"click\", this.#b), this.#n?.removeEventListener(\"canplay\", this.#p), this.#a?.removeEventListener(\"slotchange\", this.#g), this.#r?.removeEventListener(\"slotchange\", this.#f);\n }\n get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(t) {\n this.toggleAttribute(\"auto-play\", !!t);\n }\n get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(t) {\n this.toggleAttribute(\"no-image\", !!t);\n }\n get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(t) {\n this.setAttribute(\"facing-mode\", t);\n }\n get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(t) {\n this.setAttribute(\"camera-resolution\", t);\n }\n get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(t) {\n this.setAttribute(\"pan\", null != t ? t.toString() : t);\n }\n get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(t) {\n this.setAttribute(\"tilt\", null != t ? t.toString() : t);\n }\n get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(t) {\n this.setAttribute(\"zoom\", null != t ? t.toString() : t);\n }\n get loading() {\n return this.hasAttribute(\"loading\");\n }\n get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(t) {\n this.toggleAttribute(\"calculate-file-size\", !!t);\n }\n #v = (t)=>{\n t.preventDefault(), this.loading || (this.facingMode = \"user\" !== this.facingMode && this.facingMode ? \"user\" : \"environment\");\n };\n #b = (t)=>{\n t.preventDefault(), this.capture();\n };\n #p = (t)=>{\n let i = t.target;\n i.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:video-play`, {\n bubbles: !0,\n composed: !0,\n detail: {\n video: i\n }\n }));\n }).catch((t)=>{\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n #u() {\n this.#o && Array.from(this.#o.childNodes).forEach((t)=>t.remove());\n }\n #h(e, i) {\n if (!this.#e || !e || !i) return;\n let [o] = this.#e.getVideoTracks(), n = this.getTrackCapabilities();\n e in this.getTrackSettings() && o.applyConstraints({\n advanced: [\n {\n [e]: $636b0cf1ed0b9f88$var$t(Number(i), n[e]?.min || 1, n[e]?.max || 1)\n }\n ]\n });\n }\n #g = (t)=>{\n t.target?.name === \"capture-button\" && (this.#s?.removeEventListener(\"click\", this.#b), this.#s = this.#c(), this.#s && (this.#s.addEventListener(\"click\", this.#b), \"BUTTON\" === this.#s.nodeName || this.#s.hasAttribute(\"role\") || this.#s.setAttribute(\"role\", \"button\")));\n };\n #f = (t)=>{\n t.target?.name === \"facing-mode-button\" && (this.#l?.removeEventListener(\"click\", this.#v), this.#l = this.#m(), this.#l && (this.#l.addEventListener(\"click\", this.#v), \"BUTTON\" === this.#l.nodeName || this.#l.hasAttribute(\"role\") || this.#l.setAttribute(\"role\", \"button\")));\n };\n #m() {\n return this.#r && this.#r.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"facing-mode-button\" === t.getAttribute(\"slot\")) || null;\n }\n #c() {\n return this.#a && this.#a.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"capture-button\" === t.getAttribute(\"slot\")) || null;\n }\n #d(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n async startVideoStream() {\n if (!$636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported() || this.#e) return;\n this.setAttribute(\"loading\", \"\");\n let t = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: !0,\n tilt: !0,\n zoom: !0\n },\n audio: !1\n };\n if (\"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [e = 0, i = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n e > 0 && i > 0 && (t.video.width = e, t.video.height = i);\n }\n try {\n this.#e = await navigator.mediaDevices.getUserMedia(t), this.#n && (this.#n.srcObject = this.#e), this.#h(\"pan\", this.pan), this.#h(\"tilt\", this.tilt), this.#h(\"zoom\", this.zoom);\n let e = this.getTrackSettings();\n \"facingMode\" in e && this.#r && (this.#r.hidden = !1);\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n stopVideoStream() {\n if (!this.#n || !this.#e) return;\n let [t] = this.#e.getVideoTracks();\n t?.stop(), this.#n.srcObject = null, this.#e = null;\n }\n async capture() {\n if (!this.loading && this.#i && this.#n) try {\n let t = this.#i.getContext(\"2d\"), i = this.#n.videoWidth, o = this.#n.videoHeight;\n this.#i.width = i, this.#i.height = o, t?.drawImage(this.#n, 0, 0, i, o);\n let n = this.#i.toDataURL(\"image/png\");\n if (\"string\" == typeof n && n.includes(\"data:image\")) {\n if (!this.noImage) {\n let t = new Image;\n t.src = n, t.width = i, t.height = o, t.setAttribute(\"part\", \"output-image\"), this.#u(), this.#o?.appendChild(t);\n }\n let t = {\n dataURI: n,\n width: i,\n height: o\n };\n if (this.calculateFileSize) try {\n let e = await fetch(n), i = (await e.blob()).size;\n i && (t.size = i);\n } catch (t) {}\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:success`, {\n bubbles: !0,\n composed: !0,\n detail: t\n }));\n }\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n getSupportedConstraints() {\n return $636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported() && navigator.mediaDevices.getSupportedConstraints() || {};\n }\n getTrackCapabilities() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getCapabilities && t.getCapabilities() || {};\n }\n getTrackSettings() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getSettings && t.getSettings() || {};\n }\n static isSupported() {\n return !!navigator.mediaDevices?.getUserMedia;\n }\n static defineCustomElement(t = $636b0cf1ed0b9f88$var$e) {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $636b0cf1ed0b9f88$export$cc30a98fe3890794);\n }\n}\n$636b0cf1ed0b9f88$export$cc30a98fe3890794.defineCustomElement();\n\n\nObject.defineProperty({}, \"ModalElement\", {\n get: function() {\n return $4da30046ce6d9325$export$32589115725b904b;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $4da30046ce6d9325$var$e = document.createElement(\"template\");\n$4da30046ce6d9325$var$e.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`; /**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ \nclass $4da30046ce6d9325$export$32589115725b904b extends HTMLElement {\n #e = null;\n #t = null;\n #o = void 0;\n constructor(){\n if (super(), !this.shadowRoot) {\n let t = this.attachShadow({\n mode: \"open\"\n });\n t.appendChild($4da30046ce6d9325$var$e.content.cloneNode(!0));\n }\n this.shadowRoot && (this.#e = this.shadowRoot.querySelector(\"dialog\"), this.#t = this.shadowRoot.querySelector('slot[name=\"footer\"]'));\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n if (null !== this.#e) {\n if (\"open\" === e && t !== o && (this.open ? (this.#e.showModal(), document.body && (document.body.style.overflowY = \"hidden\"), this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }))) : this.#e.close()), \"no-header\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__header\");\n null !== e && (e.hidden = this.noHeader);\n }\n if (\"no-animations\" === e && t !== o && this.#e.classList.toggle(\"dialog--no-animations\", this.noAnimations), \"no-close-button\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__close\");\n null !== e && (e.hidden = this.noCloseButton);\n }\n }\n }\n connectedCallback() {\n this.#i(\"open\"), this.#i(\"staticBackdrop\"), this.#i(\"noHeader\"), this.#i(\"noAnimations\"), this.#i(\"noCloseButton\"), this.#i(\"fullscreen\"), this.#e?.addEventListener(\"click\", this.#a), this.#e?.addEventListener(\"close\", this.#l), this.#e?.addEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#n), this.#t?.addEventListener(\"slotchange\", this.#r);\n }\n disconnectedCallback() {\n this.#o && clearTimeout(this.#o), this.#e?.addEventListener(\"click\", this.#a), this.#e?.removeEventListener(\"close\", this.#l), this.#e?.removeEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#n), this.#t?.removeEventListener(\"slotchange\", this.#r);\n }\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(e) {\n e ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n }\n get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(e) {\n e ? this.setAttribute(\"static-backdrop\", \"\") : this.removeAttribute(\"static-backdrop\");\n }\n get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(e) {\n e ? this.setAttribute(\"no-header\", \"\") : this.removeAttribute(\"no-header\");\n }\n get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(e) {\n e ? this.setAttribute(\"no-animations\", \"\") : this.removeAttribute(\"no-animations\");\n }\n get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(e) {\n e ? this.setAttribute(\"no-close-button\", \"\") : this.removeAttribute(\"no-close-button\");\n }\n get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(e) {\n e ? this.setAttribute(\"fullscreen\", \"\") : this.removeAttribute(\"fullscreen\");\n }\n #d() {\n this.#o || (this.#e?.classList.add(\"dialog--pulse\"), this.#o = setTimeout(()=>{\n this.#e?.classList.remove(\"dialog--pulse\"), clearTimeout(this.#o), this.#o = void 0;\n }, 300));\n }\n #l = ()=>{\n // the open property when the dialog is closed by the user.\n this.open = !1, document.body && (document.body.style.overflowY = \"\"), this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }));\n };\n #s = (e)=>{\n let t = this.#c(\"escape-key\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #n = (e)=>{\n let t = this.#c(\"close-button\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #a = (e)=>{\n if (e.target !== e.currentTarget) return;\n let t = this.#c(\"backdrop-click\");\n if (this.dispatchEvent(t), t.defaultPrevented || this.staticBackdrop) {\n this.noAnimations || this.#d();\n return;\n }\n this.#e?.close();\n };\n #r = ()=>{\n if (null === this.#e) return; /** @type {Nullable} */ \n let e = this.#e.querySelector(\".dialog__footer\");\n if (null === e) return;\n let t = this.#t?.assignedNodes(), o = !!t && t.length > 0;\n e.hidden = !o;\n };\n #c(e) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: !0,\n composed: !0,\n cancelable: !0,\n detail: {\n reason: e,\n element: this\n }\n });\n }\n #i(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n show() {\n this.open || (this.open = !0);\n }\n hide() {\n this.open && (this.open = !1);\n }\n static defineCustomElement(e = \"modal-element\") {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $4da30046ce6d9325$export$32589115725b904b);\n }\n}\n$4da30046ce6d9325$export$32589115725b904b.defineCustomElement();\n //# sourceMappingURL=modal-element-defined.js.map\n\n\nObject.defineProperty({}, \"FilesDropzone\", {\n get: function() {\n return $7aad62ebc3d6fae8$export$6ccd1735166caad9;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $7aad62ebc3d6fae8$var$e = new Map([\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]), $7aad62ebc3d6fae8$var$t = [\n \".DS_Store\",\n \"Thumbs.db\"\n], $7aad62ebc3d6fae8$var$o = (t)=>{\n let { name: o } = t;\n if (o && -1 !== o.lastIndexOf(\".\") && !t.type) {\n let i = (o.split(\".\").pop() || \"\").toLowerCase(), r = $7aad62ebc3d6fae8$var$e.get(i);\n r && Object.defineProperty(t, \"type\", {\n value: r,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return t;\n}, $7aad62ebc3d6fae8$var$i = (e, t)=>{\n let i = $7aad62ebc3d6fae8$var$o(e);\n if (\"string\" != typeof i.path) {\n let { webkitRelativePath: o } = e;\n Object.defineProperty(i, \"path\", {\n value: \"string\" == typeof t ? t : o || e.name,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return i;\n}, $7aad62ebc3d6fae8$var$r = async (e)=>await new Promise((t, o)=>{\n e.readEntries(t, o);\n }), $7aad62ebc3d6fae8$var$a = async (e)=>{\n let t = [], o = await $7aad62ebc3d6fae8$var$r(e);\n for(; o.length > 0;)t.push(...o), o = await $7aad62ebc3d6fae8$var$r(e);\n return t;\n}, $7aad62ebc3d6fae8$var$n = (e)=>new Promise((t, o)=>{\n e.file((o)=>t($7aad62ebc3d6fae8$var$i(o, e.fullPath)), o);\n }), $7aad62ebc3d6fae8$var$s = async (e)=>{\n let o = [], i = [];\n for (let t of e){\n if (\"file\" !== t.kind) continue;\n let e = t.getAsEntry ? t.getAsEntry() : t.webkitGetAsEntry();\n i.push(e);\n }\n for(; i.length > 0;){\n let e = i.shift();\n if (e) {\n if (e.isFile) {\n let i = await $7aad62ebc3d6fae8$var$n(e);\n -1 === $7aad62ebc3d6fae8$var$t.indexOf(i.name) && o.push(i);\n } else e.isDirectory && i.push(...await $7aad62ebc3d6fae8$var$a(e.createReader()));\n }\n }\n return o;\n}, $7aad62ebc3d6fae8$var$d = async (e)=>{\n let o = [];\n for (let r of e)-1 === $7aad62ebc3d6fae8$var$t.indexOf(r.name) && o.push($7aad62ebc3d6fae8$var$i(r));\n return o;\n}, $7aad62ebc3d6fae8$var$l = async (e)=>e.dataTransfer ? e.dataTransfer.items ? await $7aad62ebc3d6fae8$var$s(e.dataTransfer.items) : await $7aad62ebc3d6fae8$var$d(e.dataTransfer.files) : await $7aad62ebc3d6fae8$var$d(e.target.files), $7aad62ebc3d6fae8$var$p = \"files-dropzone\", $7aad62ebc3d6fae8$var$c = \"TOO_MANY_FILES\", $7aad62ebc3d6fae8$var$h = document.createElement(\"template\"), $7aad62ebc3d6fae8$var$u = `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$7aad62ebc3d6fae8$var$h.innerHTML = `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\nclass $7aad62ebc3d6fae8$export$6ccd1735166caad9 extends HTMLElement {\n #e = null;\n #t = null;\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($7aad62ebc3d6fae8$var$h.content.cloneNode(!0)), this.shadowRoot && (this.#e = this.shadowRoot.getElementById(\"fileInput\"), this.#t = this.shadowRoot.getElementById(\"dropzoneEl\"));\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n \"accept\" === e && t !== o && this.#e && (this.#e.accept = this.accept), \"disabled\" === e && t !== o && this.#e && (this.#e.disabled = this.disabled, this.disabled ? this.#t?.removeAttribute(\"tabindex\") : this.#t?.setAttribute(\"tabindex\", \"0\")), \"multiple\" === e && t !== o && this.#e && (this.#e.multiple = this.multiple), \"no-keyboard\" === e && t !== o && this.#t && (this.noKeyboard ? this.#t.removeAttribute(\"tabindex\") : this.#t.setAttribute(\"tabindex\", \"0\"));\n }\n connectedCallback() {\n this.#o(\"accept\"), this.#o(\"disabled\"), this.#o(\"maxFiles\"), this.#o(\"maxSize\"), this.#o(\"minSize\"), this.#o(\"multiple\"), this.#o(\"noClick\"), this.#o(\"noDrag\"), this.#o(\"noKeyboard\"), this.#o(\"autoFocus\"), this.#o(\"noStyle\"), this.#e?.addEventListener(\"change\", this.#i), this.#t?.addEventListener(\"dragenter\", this.#r), this.#t?.addEventListener(\"dragover\", this.#a), this.#t?.addEventListener(\"dragleave\", this.#n), this.#t?.addEventListener(\"drop\", this.#s), this.#t?.addEventListener(\"click\", this.#d), this.#t?.addEventListener(\"keyup\", this.#l), this.autoFocus && this.#t?.focus();\n }\n disconnectedCallback() {\n this.#e?.removeEventListener(\"change\", this.#i), this.#t?.removeEventListener(\"dragenter\", this.#r), this.#t?.removeEventListener(\"dragover\", this.#a), this.#t?.removeEventListener(\"dragleave\", this.#n), this.#t?.removeEventListener(\"drop\", this.#s), this.#t?.removeEventListener(\"click\", this.#d), this.#t?.removeEventListener(\"keyup\", this.#l);\n }\n get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(e) {\n this.setAttribute(\"accept\", null != e ? e.toString() : e);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(e) {\n this.toggleAttribute(\"disabled\", !!e);\n }\n get maxFiles() {\n let e = Number(this.getAttribute(\"max-files\")) || 0;\n return e <= 0 ? 1 / 0 : Math.floor(Math.abs(e));\n }\n set maxFiles(e) {\n this.setAttribute(\"max-files\", null != e ? e.toString() : e);\n }\n get maxSize() {\n let e = this.getAttribute(\"max-size\");\n if (null === e) return 1 / 0;\n let t = Number(e);\n return Number.isNaN(t) ? 1 / 0 : t;\n }\n set maxSize(e) {\n this.setAttribute(\"max-size\", null != e ? e.toString() : e);\n }\n get minSize() {\n let e = this.getAttribute(\"min-size\");\n if (null === e) return 0;\n let t = Number(e);\n return Number.isNaN(t) ? 0 : t;\n }\n set minSize(e) {\n this.setAttribute(\"min-size\", null != e ? e.toString() : e);\n }\n get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(e) {\n this.toggleAttribute(\"multiple\", !!e);\n }\n get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(e) {\n this.toggleAttribute(\"no-click\", !!e);\n }\n get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(e) {\n this.toggleAttribute(\"no-drag\", !!e);\n }\n get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(e) {\n this.toggleAttribute(\"no-keyboard\", !!e);\n }\n get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(e) {\n this.toggleAttribute(\"auto-focus\", !!e);\n }\n get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(e) {\n this.toggleAttribute(\"no-style\", !!e);\n }\n #i = async (e)=>{\n try {\n this.#p(await $7aad62ebc3d6fae8$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n };\n #r = ()=>{\n this.disabled || this.noDrag || this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragenter`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #a = (e)=>{\n if (e.preventDefault(), this.disabled || this.noDrag) {\n e.dataTransfer.dropEffect = \"none\";\n return;\n }\n e.dataTransfer.dropEffect = \"copy\", this.#t && (this.#t.classList.add(\"dropzone--dragover\"), this.#t.part.add(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragover`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #n = ()=>{\n this.disabled || this.noDrag || (this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragleave`, {\n bubbles: !0,\n composed: !0\n })));\n };\n #s = async (e)=>{\n if (!this.disabled && !this.noDrag) {\n e.preventDefault(), this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\"));\n try {\n this.#p(await $7aad62ebc3d6fae8$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n }\n };\n #d = ()=>{\n this.disabled || this.noClick || this.#e?.click();\n };\n #l = (e)=>{\n this.disabled || this.noKeyboard || \" \" !== e.key && \"Enter\" !== e.key || this.#e?.click();\n };\n #p(e) {\n if (!Array.isArray(e) || !e.length) return;\n let t = [], o = [], i = e.length;\n if (!this.multiple && i > 1) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $7aad62ebc3d6fae8$var$c,\n message: \"Too many files selected. Only 1 file is allowed.\"\n }\n ]\n });\n else if (this.multiple && i > this.maxFiles) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $7aad62ebc3d6fae8$var$c,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else for (let i of e){\n let e = function(e, t = \"\") {\n if (!t) return !0;\n let o = [\n ...new Set(t.split(\",\").map((e)=>e.trim()).filter(Boolean))\n ], i = e.type, r = i.replace(/\\/.*$/, \"\");\n for (let t of o)if (\".\" === t.charAt(0)) {\n if (-1 !== e.name.toLowerCase().indexOf(t.toLowerCase(), e.name.length - t.length)) return !0;\n } else if (/\\/\\*$/.test(t)) {\n if (r === t.replace(/\\/.*$/, \"\")) return !0;\n } else if (i === t) return !0;\n return !1;\n }(i, this.accept), r = i.size > this.maxSize, a = i.size < this.minSize;\n if (!e || r || a) {\n let t = [];\n e || t.push({\n code: \"INVALID_MIME_TYPE\",\n message: `File type \"${i.type}\" is not accepted.`\n }), r && t.push({\n code: \"FILE_TOO_LARGE\",\n message: `File size ${i.size} exceeds the maximum size of ${this.maxSize}.`\n }), a && t.push({\n code: \"FILE_TOO_SMALL\",\n message: `File size ${i.size} is smaller than the minimum size of ${this.minSize}.`\n }), o.push({\n file: i,\n errors: t\n });\n } else t.push(i);\n }\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t,\n rejectedFiles: o\n }\n })), t.length > 0 && this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop-accepted`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t\n }\n })), o.length > 0 && this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop-rejected`, {\n bubbles: !0,\n composed: !0,\n detail: {\n rejectedFiles: o\n }\n })), this.#e && (this.#e.value = this.#e.defaultValue);\n }\n openFileDialog() {\n this.disabled || this.#e?.click();\n }\n #o(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n static defineCustomElement(e = $7aad62ebc3d6fae8$var$p) {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $7aad62ebc3d6fae8$export$6ccd1735166caad9);\n }\n}\n$7aad62ebc3d6fae8$export$6ccd1735166caad9.defineCustomElement();\n\n\n\n\n/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */ const $5742c9e143620cb1$export$30a014203d0d7e4f = (array, ...indexes)=>{\n if (!Array.isArray(array)) throw new TypeError(\"Expected an array for first argument\");\n return array.filter((_, i)=>indexes.indexOf(i) === -1);\n};\n\n\n/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */ const $21c3f3a8dccfa4fd$export$e2a22331486dcca0 = (prefix = \"\", suffix = \"\")=>{\n const prefixString = typeof prefix === \"string\" && prefix !== \"\" ? prefix + \"-\" : \"\";\n const suffixString = typeof suffix === \"string\" && suffix !== \"\" ? \"-\" + suffix : \"\";\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n return `${prefixString}${randomString}${suffixString}`;\n};\n\n\nconst $33dea9d9a6da4c9a$export$63e7bed68b07a85c = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\"\n];\n\n\nvar $b9a1dffffdf320f2$exports = {};\n\n$b9a1dffffdf320f2$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Anton-Regular.e58ab3fe.ttf\";\n\n\nvar $6f8f0ad93b4f4fec$exports = {};\n\n$6f8f0ad93b4f4fec$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Oswald-Regular.89ec7d89.ttf\";\n\n\nvar $60f12aeb358e1d01$exports = {};\n\n$60f12aeb358e1d01$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Oswald-Bold.0f6a7ca6.ttf\";\n\n\nvar $b312cc3e2ac443c7$exports = {};\n\n$b312cc3e2ac443c7$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Roboto-Regular.ca197847.ttf\";\n\n\nvar $481315e8ee95f8f9$exports = {};\n\n$481315e8ee95f8f9$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Roboto-Bold.fdb9b54a.ttf\";\n\n\nvar $7cee0a691e2711a6$exports = {};\n\n$7cee0a691e2711a6$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"RobotoCondensed-Regular.d585f5c7.ttf\";\n\n\nvar $12b7043e62e67366$exports = {};\n\n$12b7043e62e67366$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"RobotoCondensed-Bold.e1f96d4b.ttf\";\n\n\nvar $f224edc54658ebde$exports = {};\n\n$f224edc54658ebde$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"CourierPrime-Regular.3a25a501.ttf\";\n\n\nvar $33ce2f42587a9c55$exports = {};\n\n$33ce2f42587a9c55$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"CourierPrime-Bold.3d6bf689.ttf\";\n\n\nvar $1375393a097acb0e$exports = {};\n\n$1375393a097acb0e$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"OpenSans-Regular.edf9e01b.ttf\";\n\n\nvar $728f6ce83c7b6e27$exports = {};\n\n$728f6ce83c7b6e27$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"OpenSans-Bold.8fceb72b.ttf\";\n\n\nconst $055531bbd0af154c$export$6874249d87f2602a = [\n {\n name: \"Anton\",\n label: \"Anton\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($b9a1dffffdf320f2$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Regular\",\n label: \"Oswald\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($6f8f0ad93b4f4fec$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Bold\",\n label: \"Oswald Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($60f12aeb358e1d01$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"Roboto-Regular\",\n label: \"Roboto\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($b312cc3e2ac443c7$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Roboto-Bold\",\n label: \"Roboto Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($481315e8ee95f8f9$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"RobotoCondensed-Regular\",\n label: \"Roboto Condensed\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($7cee0a691e2711a6$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"RobotoCondensed-Bold\",\n label: \"Roboto Condensed Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($12b7043e62e67366$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"CourierPrime-Regular\",\n label: \"Courier Prime\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($f224edc54658ebde$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"CourierPrime-Bold\",\n label: \"Courier Prime Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($33ce2f42587a9c55$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"OpenSans-Regular\",\n label: \"Open Sans\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($1375393a097acb0e$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"OpenSans-Bold\",\n label: \"Open Sans Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($728f6ce83c7b6e27$exports))),\n style: \"normal\",\n weight: \"400\"\n }\n];\nconst $055531bbd0af154c$export$59eceaef0c7797b2 = async (name, path, options = {})=>{\n try {\n const font = new FontFace(name, `url(${path})`, {\n ...options\n });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n\n\n\nconst $008970865eefc93d$export$6539e087749cf9d3 = async (options = {})=>{\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || \"\";\n if (!(0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c).includes(mimeType)) throw new Error(`This is not an accepted image format. Accepted MIME types are: ${(0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c).join(\", \")}`);\n return new File([\n blob\n ], options.filename || \"\", blob);\n};\n\n\nconst $166cfb2484b08c80$var$errorsContainer = document.getElementById(\"errorsContainer\");\nconst $166cfb2484b08c80$var$hideError = (evt)=>{\n const target = evt.currentTarget;\n target.removeEventListener(\"click\", $166cfb2484b08c80$var$hideError);\n $166cfb2484b08c80$var$errorsContainer.removeChild(target.parentNode);\n};\nconst $166cfb2484b08c80$export$af04143326425dbd = (message = \"\", type = \"info\")=>{\n const types = [\n \"info\",\n \"warning\",\n \"danger\"\n ];\n if (!types.includes(type)) type = \"info\";\n const template = /* html */ `\n ${message}\n \n `;\n const div = document.createElement(\"div\");\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector(\"button\").addEventListener(\"click\", $166cfb2484b08c80$var$hideError);\n $166cfb2484b08c80$var$errorsContainer.appendChild(div);\n setTimeout(()=>div.classList.add(\"show\"), 100);\n};\n\n\n\nconst $50a37fdc18d479c2$export$293a4b86a6fe2398 = (index, data = {})=>{\n const inputTemplate = /* html */ `\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n const fragment = document.createDocumentFragment();\n const div = document.createElement(\"div\");\n div.className = \"bg-light border shadow-sm mb-3 rounded\";\n div.setAttribute(\"data-section\", \"textBox\");\n div.setAttribute(\"data-index\", index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n return fragment.appendChild(div);\n};\n\n\nconst $d346fdc99aed49b3$export$e653a2de0f3a8b89 = (image, canvas, ctx, textOptions = [])=>{\n if (image == null) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n if (typeof image === \"string\") {\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n textOptions.forEach(function(item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n const multiplier = index + 1;\n const lineHeight = ctx.measureText(\"M\").width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split(\"\\n\");\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index)=>ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else textLines.forEach((text, index)=>{\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n ctx.restore();\n });\n};\n\n\nconst $44ae6d9db4eaca0f$var$videoModal = document.getElementById(\"videoModal\");\nconst $44ae6d9db4eaca0f$var$downloadModal = document.getElementById(\"downloadModal\");\nconst $44ae6d9db4eaca0f$var$canvas = document.getElementById(\"canvas\");\nconst $44ae6d9db4eaca0f$var$dropzoneEl = document.querySelector(\"files-dropzone\");\nconst $44ae6d9db4eaca0f$var$instructionsEl = document.getElementById(\"instructions\");\nconst $44ae6d9db4eaca0f$var$ctx = $44ae6d9db4eaca0f$var$canvas.getContext(\"2d\");\nconst $44ae6d9db4eaca0f$var$imageUploadMethodSelect = document.getElementById(\"imageUploadMethodSelect\");\nconst $44ae6d9db4eaca0f$var$fileSelectBtn = document.getElementById(\"fileSelectBtn\");\nconst $44ae6d9db4eaca0f$var$imageUrlForm = document.getElementById(\"imageUrlForm\");\nconst $44ae6d9db4eaca0f$var$addTextboxBtn = document.getElementById(\"addTextboxBtn\");\nconst $44ae6d9db4eaca0f$var$inputsContainer = document.getElementById(\"inputsContainer\");\nconst $44ae6d9db4eaca0f$var$generateMemeBtn = document.getElementById(\"generateMemeBtn\");\nconst $44ae6d9db4eaca0f$var$openVideoModalBtn = document.getElementById(\"openVideoModalBtn\");\nconst $44ae6d9db4eaca0f$var$downloadMemeBtn = document.getElementById(\"downloadMemeBtn\");\nconst $44ae6d9db4eaca0f$var$downloadMemePreview = document.getElementById(\"downloadMemePreview\");\nconst $44ae6d9db4eaca0f$var$webShareComponent = document.querySelector(\"web-share\");\nconst $44ae6d9db4eaca0f$var$galleryEl = document.getElementById(\"gallery\");\nconst $44ae6d9db4eaca0f$var$gallerySearchEl = document.getElementById(\"gallerySearch\");\nconst $44ae6d9db4eaca0f$var$galleryNoResultsEl = $44ae6d9db4eaca0f$var$galleryEl.querySelector(\".gallery__no-results\");\nconst $44ae6d9db4eaca0f$var$solidColorForm = document.getElementById(\"solidColorForm\");\nconst $44ae6d9db4eaca0f$var$uploadMethodEls = document.querySelectorAll(\".upload-method\");\nlet $44ae6d9db4eaca0f$var$selectedImage = null;\nlet $44ae6d9db4eaca0f$var$reqAnimFrame = null;\nconst $44ae6d9db4eaca0f$var$defaultTextOptions = {\n _isSettingsOpen: false,\n text: \"\",\n fillColor: \"#ffffff\",\n shadowColor: \"#000000\",\n font: \"Anton\",\n fontSize: 40,\n fontWeight: \"normal\",\n textAlign: \"center\",\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\nlet $44ae6d9db4eaca0f$var$textOptions = [\n {\n ...$44ae6d9db4eaca0f$var$defaultTextOptions\n }\n];\nconst $44ae6d9db4eaca0f$var$generateMeme = async ()=>{\n const dataUrl = $44ae6d9db4eaca0f$var$canvas.toDataURL(\"image/png\");\n // Prepare download link\n const downloadLink = dataUrl.replace(\"image/png\", \"image/octet-stream\");\n $44ae6d9db4eaca0f$var$downloadMemeBtn.download = `${(0, $21c3f3a8dccfa4fd$export$e2a22331486dcca0)(\"meme\")}.png`;\n $44ae6d9db4eaca0f$var$downloadMemeBtn.href = downloadLink;\n $44ae6d9db4eaca0f$var$downloadMemePreview.src = downloadLink;\n // Prepare for sharing file\n if ((0, $94933cc6427541bd$export$c37129e465f64ef0)()) try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: dataUrl,\n filename: `${(0, $21c3f3a8dccfa4fd$export$e2a22331486dcca0)(\"meme\")}.png`,\n mimeType: \"image/png\"\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file && (0, $94933cc6427541bd$export$c37129e465f64ef0)({\n files: [\n file\n ]\n })) {\n $44ae6d9db4eaca0f$var$webShareComponent.shareFiles = [\n file\n ];\n $44ae6d9db4eaca0f$var$webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n $44ae6d9db4eaca0f$var$downloadModal.open = true;\n};\nconst $44ae6d9db4eaca0f$var$onImageLoaded = (evt)=>{\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n $44ae6d9db4eaca0f$var$canvas.width = width;\n $44ae6d9db4eaca0f$var$canvas.height = height;\n $44ae6d9db4eaca0f$var$selectedImage = evt.target;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$generateMemeBtn.disabled = false;\n $44ae6d9db4eaca0f$var$canvas.hidden = false;\n $44ae6d9db4eaca0f$var$instructionsEl.hidden = true;\n};\nconst $44ae6d9db4eaca0f$var$handleSolidColorFormInput = (evt)=>{\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n if (evt.target === $44ae6d9db4eaca0f$var$solidColorForm[\"canvasColor\"]) $44ae6d9db4eaca0f$var$selectedImage = evt.target.value;\n if (typeof $44ae6d9db4eaca0f$var$selectedImage === \"string\") {\n $44ae6d9db4eaca0f$var$canvas.width = Number($44ae6d9db4eaca0f$var$solidColorForm[\"canvasWidth\"].value) || DEFAULT_WIDTH;\n $44ae6d9db4eaca0f$var$canvas.height = Number($44ae6d9db4eaca0f$var$solidColorForm[\"canvasHeight\"].value) || DEFAULT_HEIGHT;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$generateMemeBtn.disabled = false;\n $44ae6d9db4eaca0f$var$canvas.hidden = false;\n $44ae6d9db4eaca0f$var$instructionsEl.hidden = true;\n }\n};\nconst $44ae6d9db4eaca0f$var$handleFileSelect = (file)=>{\n if (!file) return;\n const image = new Image();\n const reader = new FileReader();\n reader.addEventListener(\"load\", function(evt) {\n const data = evt.target.result;\n image.addEventListener(\"load\", $44ae6d9db4eaca0f$var$onImageLoaded);\n image.src = data;\n });\n reader.readAsDataURL(file);\n};\nconst $44ae6d9db4eaca0f$var$handleOpenVideoModalButtonClick = ()=>{\n $44ae6d9db4eaca0f$var$videoModal.open = true;\n};\nconst $44ae6d9db4eaca0f$var$handleTextPropChange = (element, index, prop)=>{\n if (element.type === \"checkbox\") $44ae6d9db4eaca0f$var$textOptions[index][prop] = element.checked;\n else if (element.type === \"number\") $44ae6d9db4eaca0f$var$textOptions[index][prop] = Number(element.value);\n else $44ae6d9db4eaca0f$var$textOptions[index][prop] = element.value;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n};\nconst $44ae6d9db4eaca0f$var$handleAddTextboxBtnClick = ()=>{\n const textOptionsLength = $44ae6d9db4eaca0f$var$textOptions.length;\n const newTextBox = (0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(textOptionsLength, $44ae6d9db4eaca0f$var$defaultTextOptions);\n $44ae6d9db4eaca0f$var$textOptions.push({\n ...$44ae6d9db4eaca0f$var$defaultTextOptions\n });\n $44ae6d9db4eaca0f$var$inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\nconst $44ae6d9db4eaca0f$var$handleImageUploadFromURL = async (evt)=>{\n evt.preventDefault();\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form[\"imageUrl\"].value;\n if (!imageUrl.trim()) return;\n submitButton.disabled = true;\n submitButton.querySelector(\".spinner\").hidden = false;\n submitButton.querySelector(\".label\").hidden = true;\n try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: imageUrl\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n } catch (err) {\n (0, $166cfb2484b08c80$export$af04143326425dbd)(`Failed to load image from \"${imageUrl}\".`, \"danger\");\n } finally{\n submitButton.disabled = false;\n submitButton.querySelector(\".spinner\").hidden = true;\n submitButton.querySelector(\".label\").hidden = false;\n }\n};\nconst $44ae6d9db4eaca0f$var$moveText = (offsetDir, sign, index)=>()=>{\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n if (offsetDir === \"offsetY\") {\n if (sign === \"-\") $44ae6d9db4eaca0f$var$textOptions[index].offsetY -= 1;\n if (sign === \"+\") $44ae6d9db4eaca0f$var$textOptions[index].offsetY += 1;\n offsetYInput.value = $44ae6d9db4eaca0f$var$textOptions[index].offsetY;\n }\n if (offsetDir === \"offsetX\") {\n if (sign === \"-\") $44ae6d9db4eaca0f$var$textOptions[index].offsetX -= 1;\n if (sign === \"+\") $44ae6d9db4eaca0f$var$textOptions[index].offsetX += 1;\n offsetXInput.value = $44ae6d9db4eaca0f$var$textOptions[index].offsetX;\n }\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$reqAnimFrame = requestAnimationFrame($44ae6d9db4eaca0f$var$moveText(offsetDir, sign, index));\n };\nconst $44ae6d9db4eaca0f$var$handleUploadMethodChange = (evt)=>{\n $44ae6d9db4eaca0f$var$uploadMethodEls.forEach((el)=>el.hidden = el.id !== evt.target.value);\n};\nconst $44ae6d9db4eaca0f$var$handleFileSelectClick = ()=>{\n if (typeof $44ae6d9db4eaca0f$var$dropzoneEl.openFileDialog === \"function\") $44ae6d9db4eaca0f$var$dropzoneEl.openFileDialog();\n};\nconst $44ae6d9db4eaca0f$var$handleDropFilesAccepted = (evt)=>{\n const [file] = evt.detail.acceptedFiles;\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerInput = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"text\"]')) prop = \"text\";\n else if (element.matches('[data-input=\"fillColor\"]')) prop = \"fillColor\";\n else if (element.matches('[data-input=\"shadowColor\"]')) prop = \"shadowColor\";\n else if (element.matches('[data-input=\"font\"]')) prop = \"font\";\n else if (element.matches('[data-input=\"fontSize\"]')) prop = \"fontSize\";\n else if (element.matches('[data-input=\"fontWeight\"]')) prop = \"fontWeight\";\n else if (element.matches('[data-input=\"textAlign\"]')) prop = \"textAlign\";\n else if (element.matches('[data-input=\"shadowBlur\"]')) prop = \"shadowBlur\";\n else if (element.matches('[data-input=\"offsetY\"]')) prop = \"offsetY\";\n else if (element.matches('[data-input=\"offsetX\"]')) prop = \"offsetX\";\n else if (element.matches('[data-input=\"rotate\"]')) prop = \"rotate\";\n if (prop) $44ae6d9db4eaca0f$var$handleTextPropChange(element, index, prop);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerChange = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"allCaps\"]')) prop = \"allCaps\";\n if (prop) $44ae6d9db4eaca0f$var$handleTextPropChange(element, index, prop);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerClick = (evt)=>{\n const element = evt.target;\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\");\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n textBoxEls.forEach((el, index)=>{\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n if (el.getAttribute(\"data-index\") === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n $44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen = !$44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n $44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let confirm = true;\n if ($44ae6d9db4eaca0f$var$textOptions[index].text.trim()) confirm = window.confirm(\"Are you sure you want to remove this text box?\");\n if (confirm) {\n $44ae6d9db4eaca0f$var$textOptions = (0, $5742c9e143620cb1$export$30a014203d0d7e4f)($44ae6d9db4eaca0f$var$textOptions, index);\n $44ae6d9db4eaca0f$var$inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach((el)=>el.remove());\n $44ae6d9db4eaca0f$var$textOptions.forEach((item, index)=>$44ae6d9db4eaca0f$var$inputsContainer.appendChild((0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(index, item)));\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n }\n }\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerdown = (evt)=>{\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n if (!textBoxEl) return;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n const offsetDir = element.getAttribute(\"data-move\");\n const sign = element.getAttribute(\"data-sign\");\n $44ae6d9db4eaca0f$var$reqAnimFrame = requestAnimationFrame($44ae6d9db4eaca0f$var$moveText(offsetDir, sign, index));\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerup = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n cancelAnimationFrame($44ae6d9db4eaca0f$var$reqAnimFrame);\n $44ae6d9db4eaca0f$var$reqAnimFrame = null;\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerout = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton || !$44ae6d9db4eaca0f$var$reqAnimFrame) return;\n cancelAnimationFrame($44ae6d9db4eaca0f$var$reqAnimFrame);\n $44ae6d9db4eaca0f$var$reqAnimFrame = null;\n};\nconst $44ae6d9db4eaca0f$var$handleGalleryClick = async (evt)=>{\n const button = evt.target.closest(\"button\");\n if (!button) return;\n const img = button.querySelector(\"img\");\n try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: img.src\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n } catch (err) {\n (0, $166cfb2484b08c80$export$af04143326425dbd)(`Failed to load image: \"${img.alt}\".`, \"danger\");\n }\n};\nconst $44ae6d9db4eaca0f$var$handleGallerySearchInput = (evt)=>{\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = $44ae6d9db4eaca0f$var$galleryEl.querySelectorAll(\"button\");\n galleryItems.forEach((item)=>{\n const alt = (item.querySelector(\"img\").getAttribute(\"alt\") || \"\").toLowerCase();\n item.hidden = !alt.includes(query);\n });\n $44ae6d9db4eaca0f$var$galleryNoResultsEl.hidden = !!$44ae6d9db4eaca0f$var$galleryEl.querySelector(\"button:not([hidden])\");\n};\nconst $44ae6d9db4eaca0f$var$handleWebShareError = ()=>{\n $44ae6d9db4eaca0f$var$downloadModal.open = false;\n (0, $166cfb2484b08c80$export$af04143326425dbd)(\"There was an error while trying to share your meme.\", \"danger\");\n};\nconst $44ae6d9db4eaca0f$var$handleCapturePhotoError = (evt)=>{\n console.error(evt.detail.error);\n (0, $166cfb2484b08c80$export$af04143326425dbd)(evt.detail.error.message, \"danger\");\n};\nconst $44ae6d9db4eaca0f$var$handleCapturePhotoSuccess = (evt)=>{\n $44ae6d9db4eaca0f$var$videoModal.open = false;\n const image = new Image();\n image.addEventListener(\"load\", $44ae6d9db4eaca0f$var$onImageLoaded);\n image.src = evt.detail.dataURI;\n};\nconst $44ae6d9db4eaca0f$var$handleModalOpen = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $44ae6d9db4eaca0f$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === \"function\") capturePhotoComponent.startVideoStream();\n }\n};\nconst $44ae6d9db4eaca0f$var$handleModalClose = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $44ae6d9db4eaca0f$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === \"function\") capturePhotoComponent.stopVideoStream();\n }\n};\n$44ae6d9db4eaca0f$var$fileSelectBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleFileSelectClick);\n$44ae6d9db4eaca0f$var$openVideoModalBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleOpenVideoModalButtonClick);\n$44ae6d9db4eaca0f$var$addTextboxBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleAddTextboxBtnClick);\n$44ae6d9db4eaca0f$var$generateMemeBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$generateMeme);\n$44ae6d9db4eaca0f$var$downloadMemeBtn.addEventListener(\"click\", ()=>$44ae6d9db4eaca0f$var$downloadModal.open = false);\n$44ae6d9db4eaca0f$var$imageUrlForm.addEventListener(\"submit\", $44ae6d9db4eaca0f$var$handleImageUploadFromURL);\n$44ae6d9db4eaca0f$var$dropzoneEl.addEventListener(\"files-dropzone-drop-accepted\", $44ae6d9db4eaca0f$var$handleDropFilesAccepted);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleInputsContainerInput);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"change\", $44ae6d9db4eaca0f$var$handleInputsContainerChange);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleInputsContainerClick);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerdown\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerdown);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerup\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerup);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerout\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerout);\n$44ae6d9db4eaca0f$var$imageUploadMethodSelect.addEventListener(\"change\", $44ae6d9db4eaca0f$var$handleUploadMethodChange);\n$44ae6d9db4eaca0f$var$galleryEl.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleGalleryClick);\n$44ae6d9db4eaca0f$var$gallerySearchEl.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleGallerySearchInput);\n$44ae6d9db4eaca0f$var$solidColorForm.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleSolidColorFormInput);\ndocument.addEventListener(\"web-share:error\", $44ae6d9db4eaca0f$var$handleWebShareError);\ndocument.addEventListener(\"capture-photo:error\", $44ae6d9db4eaca0f$var$handleCapturePhotoError);\ndocument.addEventListener(\"capture-photo:success\", $44ae6d9db4eaca0f$var$handleCapturePhotoSuccess);\ndocument.addEventListener(\"me-open\", $44ae6d9db4eaca0f$var$handleModalOpen);\ndocument.addEventListener(\"me-close\", $44ae6d9db4eaca0f$var$handleModalClose);\n$44ae6d9db4eaca0f$var$galleryEl.querySelectorAll(\"button > img\")?.forEach((image)=>{\n image.setAttribute(\"title\", image.getAttribute(\"alt\"));\n});\n$44ae6d9db4eaca0f$var$textOptions.forEach((item, index)=>{\n $44ae6d9db4eaca0f$var$inputsContainer.appendChild((0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(index, item));\n});\n$44ae6d9db4eaca0f$var$dropzoneEl.accept = (0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c);\n(0, $055531bbd0af154c$export$6874249d87f2602a).forEach(({ name: name, path: path, style: style, weight: weight })=>{\n (0, $055531bbd0af154c$export$59eceaef0c7797b2)(name, path, {\n style: style,\n weight: weight\n });\n});\n\n})();\n//# sourceMappingURL=index.5ae9312f.js.map\n","\"use strict\";\n\nvar mapping = new Map();\nfunction register(baseUrl, manifest) {\n for (var i = 0; i < manifest.length - 1; i += 2) {\n mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n }\n}\nfunction resolve(id) {\n var resolved = mapping.get(id);\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","\"use strict\";\n\nvar bundleURL = {};\nfunction getBundleURLCached(id) {\n var value = bundleURL[id];\n if (!value) {\n value = getBundleURL();\n bundleURL[id] = value;\n }\n return value;\n}\nfunction getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) {\n // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return getBaseURL(matches[2]);\n }\n }\n return '/';\n}\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction getOrigin(url) {\n var matches = ('' + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) {\n throw new Error('Origin not found');\n }\n return matches[0];\n}\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\nexports.getOrigin = getOrigin;","require('./helpers/bundle-manifest').register(require('./helpers/bundle-url').getBundleURL('8tAhj'),JSON.parse(\"[\\\"8tAhj\\\",\\\"index.5ae9312f.js\\\",\\\"cmj6F\\\",\\\"Anton-Regular.e58ab3fe.ttf\\\",\\\"a9OJN\\\",\\\"Oswald-Regular.89ec7d89.ttf\\\",\\\"jOuj0\\\",\\\"Oswald-Bold.0f6a7ca6.ttf\\\",\\\"ePq3V\\\",\\\"Roboto-Regular.ca197847.ttf\\\",\\\"9WQUU\\\",\\\"Roboto-Bold.fdb9b54a.ttf\\\",\\\"hIywO\\\",\\\"RobotoCondensed-Regular.d585f5c7.ttf\\\",\\\"ab1rw\\\",\\\"RobotoCondensed-Bold.e1f96d4b.ttf\\\",\\\"j4ruO\\\",\\\"CourierPrime-Regular.3a25a501.ttf\\\",\\\"3nnD2\\\",\\\"CourierPrime-Bold.3d6bf689.ttf\\\",\\\"8fsWK\\\",\\\"OpenSans-Regular.edf9e01b.ttf\\\",\\\"5JXG6\\\",\\\"OpenSans-Bold.8fceb72b.ttf\\\",\\\"9FH7D\\\",\\\"index.58beac5f.css\\\"]\"));","import { isWebShareSupported } from '@georapbox/web-share-element/dist/is-web-share-supported.js';\nimport '@georapbox/web-share-element/dist/web-share-defined.js';\nimport '@georapbox/capture-photo-element/dist/capture-photo-defined.js';\nimport '@georapbox/modal-element/dist/modal-element-defined.js';\nimport '@georapbox/files-dropzone-element/dist/files-dropzone-defined.js';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport '../css/main.css';\nimport { arrayRemove } from './utils/array-remove.js';\nimport { uid } from './utils/uid.js';\nimport { ACCEPTED_MIME_TYPES } from './constants.js';\nimport { customFonts, loadCustomFont } from './custom-fonts.js';\nimport { fileFromUrl } from './file-from-url.js';\nimport { toastAlert } from './toast-alert.js';\nimport { createTextBox } from './create-text-box.js';\nimport { drawCanvas } from './draw-canvas.js';\n\nconst videoModal = document.getElementById('videoModal');\nconst downloadModal = document.getElementById('downloadModal');\nconst canvas = document.getElementById('canvas');\nconst dropzoneEl = document.querySelector('files-dropzone');\nconst instructionsEl = document.getElementById('instructions');\nconst ctx = canvas.getContext('2d');\nconst imageUploadMethodSelect = document.getElementById('imageUploadMethodSelect');\nconst fileSelectBtn = document.getElementById('fileSelectBtn');\nconst imageUrlForm = document.getElementById('imageUrlForm');\nconst addTextboxBtn = document.getElementById('addTextboxBtn');\nconst inputsContainer = document.getElementById('inputsContainer');\nconst generateMemeBtn = document.getElementById('generateMemeBtn');\nconst openVideoModalBtn = document.getElementById('openVideoModalBtn');\nconst downloadMemeBtn = document.getElementById('downloadMemeBtn');\nconst downloadMemePreview = document.getElementById('downloadMemePreview');\nconst webShareComponent = document.querySelector('web-share');\nconst galleryEl = document.getElementById('gallery');\nconst gallerySearchEl = document.getElementById('gallerySearch');\nconst galleryNoResultsEl = galleryEl.querySelector('.gallery__no-results');\nconst solidColorForm = document.getElementById('solidColorForm');\nconst uploadMethodEls = document.querySelectorAll('.upload-method');\nlet selectedImage = null;\nlet reqAnimFrame = null;\n\nconst defaultTextOptions = {\n _isSettingsOpen: false,\n text: '',\n fillColor: '#ffffff',\n shadowColor: '#000000',\n font: 'Anton',\n fontSize: 40,\n fontWeight: 'normal',\n textAlign: 'center',\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\n\nlet textOptions = [\n { ...defaultTextOptions }\n];\n\nconst generateMeme = async () => {\n const dataUrl = canvas.toDataURL('image/png');\n\n // Prepare download link\n const downloadLink = dataUrl.replace('image/png', 'image/octet-stream');\n downloadMemeBtn.download = `${uid('meme')}.png`;\n downloadMemeBtn.href = downloadLink;\n downloadMemePreview.src = downloadLink;\n\n // Prepare for sharing file\n if (isWebShareSupported()) {\n try {\n const file = await fileFromUrl({\n url: dataUrl,\n filename: `${uid('meme')}.png`,\n mimeType: 'image/png'\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file && isWebShareSupported({ files: [file] })) {\n webShareComponent.shareFiles = [file];\n webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n downloadModal.open = true;\n};\n\nconst onImageLoaded = evt => {\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n\n selectedImage = evt.target;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n};\n\nconst handleSolidColorFormInput = evt => {\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n\n if (evt.target === solidColorForm['canvasColor']) {\n selectedImage = evt.target.value;\n }\n\n if (typeof selectedImage === 'string') {\n canvas.width = Number(solidColorForm['canvasWidth'].value) || DEFAULT_WIDTH;\n canvas.height = Number(solidColorForm['canvasHeight'].value) || DEFAULT_HEIGHT;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n }\n};\n\nconst handleFileSelect = file => {\n if (!file) {\n return;\n }\n\n const image = new Image();\n const reader = new FileReader();\n\n reader.addEventListener('load', function (evt) {\n const data = evt.target.result;\n image.addEventListener('load', onImageLoaded);\n image.src = data;\n });\n\n reader.readAsDataURL(file);\n};\n\nconst handleOpenVideoModalButtonClick = () => {\n videoModal.open = true;\n};\n\nconst handleTextPropChange = (element, index, prop) => {\n if (element.type === 'checkbox') {\n textOptions[index][prop] = element.checked;\n } else if (element.type === 'number') {\n textOptions[index][prop] = Number(element.value);\n } else {\n textOptions[index][prop] = element.value;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n};\n\nconst handleAddTextboxBtnClick = () => {\n const textOptionsLength = textOptions.length;\n const newTextBox = createTextBox(textOptionsLength, defaultTextOptions);\n\n textOptions.push({ ...defaultTextOptions });\n inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\n\nconst handleImageUploadFromURL = async evt => {\n evt.preventDefault();\n\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form['imageUrl'].value;\n\n if (!imageUrl.trim()) {\n return;\n }\n\n submitButton.disabled = true;\n submitButton.querySelector('.spinner').hidden = false;\n submitButton.querySelector('.label').hidden = true;\n\n try {\n const file = await fileFromUrl({\n url: imageUrl\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image from \"${imageUrl}\".`, 'danger');\n } finally {\n submitButton.disabled = false;\n submitButton.querySelector('.spinner').hidden = true;\n submitButton.querySelector('.label').hidden = false;\n }\n};\n\nconst moveText = (offsetDir, sign, index) => () => {\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n\n if (offsetDir === 'offsetY') {\n if (sign === '-') {\n textOptions[index].offsetY -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetY += 1;\n }\n\n offsetYInput.value = textOptions[index].offsetY;\n }\n\n if (offsetDir === 'offsetX') {\n if (sign === '-') {\n textOptions[index].offsetX -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetX += 1;\n }\n\n offsetXInput.value = textOptions[index].offsetX;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleUploadMethodChange = evt => {\n uploadMethodEls.forEach(el => el.hidden = el.id !== evt.target.value);\n};\n\nconst handleFileSelectClick = () => {\n if (typeof dropzoneEl.openFileDialog === 'function') {\n dropzoneEl.openFileDialog();\n }\n};\n\nconst handleDropFilesAccepted = evt => {\n const [file] = evt.detail.acceptedFiles;\n\n if (file) {\n handleFileSelect(file);\n }\n};\n\nconst handleInputsContainerInput = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"text\"]')) {\n prop = 'text';\n } else if (element.matches('[data-input=\"fillColor\"]')) {\n prop = 'fillColor';\n } else if (element.matches('[data-input=\"shadowColor\"]')) {\n prop = 'shadowColor';\n } else if (element.matches('[data-input=\"font\"]')) {\n prop = 'font';\n } else if (element.matches('[data-input=\"fontSize\"]')) {\n prop = 'fontSize';\n } else if (element.matches('[data-input=\"fontWeight\"]')) {\n prop = 'fontWeight';\n } else if (element.matches('[data-input=\"textAlign\"]')) {\n prop = 'textAlign';\n } else if (element.matches('[data-input=\"shadowBlur\"]')) {\n prop = 'shadowBlur';\n } else if (element.matches('[data-input=\"offsetY\"]')) {\n prop = 'offsetY';\n } else if (element.matches('[data-input=\"offsetX\"]')) {\n prop = 'offsetX';\n } else if (element.matches('[data-input=\"rotate\"]')) {\n prop = 'rotate';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerChange = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"allCaps\"]')) {\n prop = 'allCaps';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerClick = evt => {\n const element = evt.target;\n\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute('data-index');\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n\n textBoxEls.forEach((el, index) => {\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n\n if (el.getAttribute('data-index') === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n textOptions[index]._isSettingsOpen = !textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let confirm = true;\n\n if (textOptions[index].text.trim()) {\n confirm = window.confirm('Are you sure you want to remove this text box?');\n }\n\n if (confirm) {\n textOptions = arrayRemove(textOptions, index);\n inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach(el => el.remove());\n textOptions.forEach((item, index) => inputsContainer.appendChild(createTextBox(index, item)));\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n }\n }\n};\n\nconst handleInputsContainerPointerdown = evt => {\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n\n if (!textBoxEl) {\n return;\n }\n\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n const offsetDir = element.getAttribute('data-move');\n const sign = element.getAttribute('data-sign');\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleInputsContainerPointerup = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleInputsContainerPointerout = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton || !reqAnimFrame) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleGalleryClick = async evt => {\n const button = evt.target.closest('button');\n\n if (!button) {\n return;\n }\n\n const img = button.querySelector('img');\n\n try {\n const file = await fileFromUrl({\n url: img.src\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image: \"${img.alt}\".`, 'danger');\n }\n};\n\nconst handleGallerySearchInput = evt => {\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = galleryEl.querySelectorAll('button');\n\n galleryItems.forEach(item => {\n const alt = (item.querySelector('img').getAttribute('alt') || '').toLowerCase();\n item.hidden = !alt.includes(query);\n });\n\n galleryNoResultsEl.hidden = !!galleryEl.querySelector('button:not([hidden])');\n};\n\nconst handleWebShareError = () => {\n downloadModal.open = false;\n toastAlert('There was an error while trying to share your meme.', 'danger');\n};\n\nconst handleCapturePhotoError = evt => {\n console.error(evt.detail.error);\n toastAlert(evt.detail.error.message, 'danger');\n};\n\nconst handleCapturePhotoSuccess = evt => {\n videoModal.open = false;\n const image = new Image();\n image.addEventListener('load', onImageLoaded);\n image.src = evt.detail.dataURI;\n};\n\nconst handleModalOpen = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === 'function') {\n capturePhotoComponent.startVideoStream();\n }\n }\n};\n\nconst handleModalClose = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === 'function') {\n capturePhotoComponent.stopVideoStream();\n }\n }\n};\n\nfileSelectBtn.addEventListener('click', handleFileSelectClick);\nopenVideoModalBtn.addEventListener('click', handleOpenVideoModalButtonClick);\naddTextboxBtn.addEventListener('click', handleAddTextboxBtnClick);\ngenerateMemeBtn.addEventListener('click', generateMeme);\ndownloadMemeBtn.addEventListener('click', () => downloadModal.open = false);\nimageUrlForm.addEventListener('submit', handleImageUploadFromURL);\ndropzoneEl.addEventListener('files-dropzone-drop-accepted', handleDropFilesAccepted);\ninputsContainer.addEventListener('input', handleInputsContainerInput);\ninputsContainer.addEventListener('change', handleInputsContainerChange);\ninputsContainer.addEventListener('click', handleInputsContainerClick);\ninputsContainer.addEventListener('pointerdown', handleInputsContainerPointerdown);\ninputsContainer.addEventListener('pointerup', handleInputsContainerPointerup);\ninputsContainer.addEventListener('pointerout', handleInputsContainerPointerout);\nimageUploadMethodSelect.addEventListener('change', handleUploadMethodChange);\ngalleryEl.addEventListener('click', handleGalleryClick);\ngallerySearchEl.addEventListener('input', handleGallerySearchInput);\nsolidColorForm.addEventListener('input', handleSolidColorFormInput);\ndocument.addEventListener('web-share:error', handleWebShareError);\ndocument.addEventListener('capture-photo:error', handleCapturePhotoError);\ndocument.addEventListener('capture-photo:success', handleCapturePhotoSuccess);\ndocument.addEventListener('me-open', handleModalOpen);\ndocument.addEventListener('me-close', handleModalClose);\n\ngalleryEl.querySelectorAll('button > img')?.forEach(image => {\n image.setAttribute('title', image.getAttribute('alt'));\n});\n\ntextOptions.forEach((item, index) => {\n inputsContainer.appendChild(createTextBox(index, item));\n});\n\ndropzoneEl.accept = ACCEPTED_MIME_TYPES;\n\ncustomFonts.forEach(({ name, path, style, weight }) => {\n loadCustomFont(name, path, { style, weight });\n});\n","function a(a){return null!==a&&\"object\"==typeof a?\"share\"in navigator&&\"canShare\"in navigator&&navigator.canShare(a):\"share\"in navigator}export{a as isWebShareSupported};\n//# sourceMappingURL=is-web-share-supported.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $e179325634270afd$exports = {};\n\n$parcel$export($e179325634270afd$exports, \"WebShare\", function () { return $e179325634270afd$export$30b344bef3e55b67; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */ const $e179325634270afd$var$styles = /* css */ `\n :host {\n display: inline-block;\n }\n`;\nconst $e179325634270afd$var$template = document.createElement(\"template\");\n$e179325634270afd$var$template.innerHTML = /* html */ `\n \n \n`;\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */ class $e179325634270afd$export$30b344bef3e55b67 extends HTMLElement {\n /** @type {Nullable} */ #buttonSlot;\n /** @type {Nullable} */ #buttonEl;\n /** @type {File[]} */ #files = [];\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\",\n delegatesFocus: true\n });\n shadowRoot.appendChild($e179325634270afd$var$template.content.cloneNode(true));\n }\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"disabled\" && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute(\"disabled\", this.disabled);\n this.#buttonEl.setAttribute(\"aria-disabled\", this.disabled.toString());\n if (this.#buttonEl.part && this.#buttonEl.part.contains(\"button\")) this.#buttonEl.part.toggle(\"button--disabled\", this.disabled);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"shareUrl\");\n this.#upgradeProperty(\"shareTitle\");\n this.#upgradeProperty(\"shareText\");\n this.#upgradeProperty(\"shareFiles\");\n this.#upgradeProperty(\"disabled\");\n this.#buttonSlot?.addEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.addEventListener(\"click\", this.#handleClick);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#buttonSlot?.removeEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n }\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */ get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(value) {\n this.setAttribute(\"share-url\", value);\n }\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */ get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(value) {\n this.setAttribute(\"share-title\", value);\n }\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */ get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(value) {\n this.setAttribute(\"share-text\", value);\n }\n /**\n * @type {File[]} - The files to share.\n */ get shareFiles() {\n return this.#files;\n }\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) this.#files = value;\n }\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */ async share() {\n if (this.disabled) return;\n try {\n /** @type {ShareData} */ const shareData = {};\n if (this.shareUrl) shareData.url = this.shareUrl;\n if (this.shareTitle) shareData.title = this.shareTitle;\n if (this.shareText) shareData.text = this.shareText;\n if (Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n })) shareData.files = this.shareFiles;\n await navigator.share(shareData);\n this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: true,\n composed: true,\n detail: {\n shareData: shareData\n }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */ #handleClick = (evt)=>{\n evt.preventDefault();\n if (this.disabled) return;\n this.share();\n };\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */ #handleSlotChange = (evt)=>{\n if (evt.target && evt.target.name === \"button\") {\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n this.#buttonEl = this.#getButton();\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener(\"click\", this.#handleClick);\n if (this.#buttonEl.nodeName !== \"BUTTON\" && !this.#buttonEl.hasAttribute(\"role\")) this.#buttonEl.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */ #getButton() {\n if (!this.#buttonSlot) return null;\n return this.#buttonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n static defineCustomElement(elementName = \"web-share\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $e179325634270afd$export$30b344bef3e55b67);\n }\n}\n\n\n(0, $e179325634270afd$export$30b344bef3e55b67).defineCustomElement();\n\n\nexport {$e179325634270afd$export$30b344bef3e55b67 as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","// @ts-check\n\n/**\n * Check if Web Share API is supported by the platform.\n *\n * @param {import('./web-share').ShareData} [options]\n * @returns {boolean} Returns `true` if Web Share API is supported; otherwise `false`.\n */\nfunction isWebShareSupported(options) {\n if (options !== null && typeof options === 'object') {\n return 'share' in navigator && 'canShare' in navigator && navigator.canShare(options);\n }\n\n return 'share' in navigator;\n}\n\nexport { isWebShareSupported };\n","Object.defineProperty({},\"WebShare\",{get:function(){return s},set:void 0,enumerable:!0,configurable:!0});let t=`\n :host {\n display: inline-block;\n }\n`,e=document.createElement(\"template\");e.innerHTML=`\n \n \n`;class s extends HTMLElement{#t;#e;#s=[];constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\",delegatesFocus:!0}).appendChild(e.content.cloneNode(!0)),this.#t=this.shadowRoot?.querySelector('slot[name=\"button\"]')||null,this.#e=this.#i()}static get observedAttributes(){return[\"disabled\"]}attributeChangedCallback(t,e,s){\"disabled\"===t&&e!==s&&this.#e&&(this.#e.toggleAttribute(\"disabled\",this.disabled),this.#e.setAttribute(\"aria-disabled\",this.disabled.toString()),this.#e.part&&this.#e.part.contains(\"button\")&&this.#e.part.toggle(\"button--disabled\",this.disabled))}connectedCallback(){this.#r(\"shareUrl\"),this.#r(\"shareTitle\"),this.#r(\"shareText\"),this.#r(\"shareFiles\"),this.#r(\"disabled\"),this.#t?.addEventListener(\"slotchange\",this.#a),this.#e?.addEventListener(\"click\",this.#n)}disconnectedCallback(){this.#t?.removeEventListener(\"slotchange\",this.#a),this.#e?.removeEventListener(\"click\",this.#n)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(t){this.toggleAttribute(\"disabled\",!!t)}get shareUrl(){return this.getAttribute(\"share-url\")||\"\"}set shareUrl(t){this.setAttribute(\"share-url\",t)}get shareTitle(){return this.getAttribute(\"share-title\")||\"\"}set shareTitle(t){this.setAttribute(\"share-title\",t)}get shareText(){return this.getAttribute(\"share-text\")||\"\"}set shareText(t){this.setAttribute(\"share-text\",t)}get shareFiles(){return this.#s}set shareFiles(t){Array.isArray(t)&&t.length>0&&(this.#s=t)}async share(){if(!this.disabled)try{let t={};this.shareUrl&&(t.url=this.shareUrl),this.shareTitle&&(t.title=this.shareTitle),this.shareText&&(t.text=this.shareText),Array.isArray(this.shareFiles)&&this.shareFiles.length>0&&navigator.canShare&&navigator.canShare({files:this.shareFiles})&&(t.files=this.shareFiles),await navigator.share(t),this.dispatchEvent(new CustomEvent(\"web-share:success\",{bubbles:!0,composed:!0,detail:{shareData:t}}))}catch(t){if(t instanceof Error&&\"AbortError\"===t.name){this.dispatchEvent(new CustomEvent(\"web-share:abort\",{bubbles:!0,composed:!0,detail:{error:t}}));return}this.dispatchEvent(new CustomEvent(\"web-share:error\",{bubbles:!0,composed:!0,detail:{error:t}}))}}#n=t=>{t.preventDefault(),this.disabled||this.share()};#a=t=>{t.target&&\"button\"===t.target.name&&(this.#e?.removeEventListener(\"click\",this.#n),this.#e=this.#i(),this.#e&&(this.#e.addEventListener(\"click\",this.#n),\"BUTTON\"===this.#e.nodeName||this.#e.hasAttribute(\"role\")||this.#e.setAttribute(\"role\",\"button\")))};#i(){return this.#t&&this.#t.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"button\"===t.getAttribute(\"slot\"))||null}#r(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}static defineCustomElement(t=\"web-share\"){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,s)}}s.defineCustomElement();export{s as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","import { WebShare } from './web-share.js';\n\nWebShare.defineCustomElement();\n\nexport { WebShare };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */\n\nconst styles = /* css */`\n :host {\n display: inline-block;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */ `\n \n \n`;\n\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */\nclass WebShare extends HTMLElement {\n /** @type {Nullable} */\n #buttonSlot;\n\n /** @type {Nullable} */\n #buttonEl;\n\n /** @type {File[]} */\n #files = [];\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open', delegatesFocus: true });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n\n static get observedAttributes() {\n return ['disabled'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'disabled' && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute('disabled', this.disabled);\n this.#buttonEl.setAttribute('aria-disabled', this.disabled.toString());\n\n if (this.#buttonEl.part && this.#buttonEl.part.contains('button')) {\n this.#buttonEl.part.toggle('button--disabled', this.disabled);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('shareUrl');\n this.#upgradeProperty('shareTitle');\n this.#upgradeProperty('shareText');\n this.#upgradeProperty('shareFiles');\n this.#upgradeProperty('disabled');\n\n this.#buttonSlot?.addEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.addEventListener('click', this.#handleClick);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#buttonSlot?.removeEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n }\n\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */\n get shareUrl() {\n return this.getAttribute('share-url') || '';\n }\n\n set shareUrl(value) {\n this.setAttribute('share-url', value);\n }\n\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */\n get shareTitle() {\n return this.getAttribute('share-title') || '';\n }\n\n set shareTitle(value) {\n this.setAttribute('share-title', value);\n }\n\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */\n get shareText() {\n return this.getAttribute('share-text') || '';\n }\n\n set shareText(value) {\n this.setAttribute('share-text', value);\n }\n\n /**\n * @type {File[]} - The files to share.\n */\n get shareFiles() {\n return this.#files;\n }\n\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) {\n this.#files = value;\n }\n }\n\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */\n async share() {\n if (this.disabled) {\n return;\n }\n\n try {\n /** @type {ShareData} */\n const shareData = {};\n\n if (this.shareUrl) {\n shareData.url = this.shareUrl;\n }\n\n if (this.shareTitle) {\n shareData.title = this.shareTitle;\n }\n\n if (this.shareText) {\n shareData.text = this.shareText;\n }\n\n if (\n Array.isArray(this.shareFiles)\n && this.shareFiles.length > 0\n && navigator.canShare\n && navigator.canShare({ files: this.shareFiles })\n ) {\n shareData.files = this.shareFiles;\n }\n\n await navigator.share(shareData);\n\n this.dispatchEvent(new CustomEvent('web-share:success', {\n bubbles: true,\n composed: true,\n detail: { shareData }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.dispatchEvent(new CustomEvent('web-share:abort', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n\n return;\n }\n\n this.dispatchEvent(new CustomEvent('web-share:error', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */\n #handleClick = evt => {\n evt.preventDefault();\n\n if (this.disabled) {\n return;\n }\n\n this.share();\n };\n\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */\n #handleSlotChange = evt => {\n if (evt.target && evt.target.name === 'button') {\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n this.#buttonEl = this.#getButton();\n\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener('click', this.#handleClick);\n\n if (this.#buttonEl.nodeName !== 'BUTTON' && !this.#buttonEl.hasAttribute('role')) {\n this.#buttonEl.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */\n #getButton() {\n if (!this.#buttonSlot) {\n return null;\n }\n\n return this.#buttonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n static defineCustomElement(elementName = 'web-share') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, WebShare);\n }\n }\n}\n\nexport { WebShare };\n","Object.defineProperty({},\"CapturePhoto\",{get:function(){return n},set:void 0,enumerable:!0,configurable:!0});let t=(t,e,i)=>(Number.isNaN(e)&&(e=0),Number.isNaN(i)&&(i=0),Math.min(Math.max(t,Math.min(e,i)),Math.max(e,i))),e=\"capture-photo\",i=`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`,o=document.createElement(\"template\");o.innerHTML=`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;class n extends HTMLElement{#t={};#e=null;#i=null;#o=null;#n=null;#a=null;#s=null;#r=null;#l=null;constructor(){super(),this.#t=this.getSupportedConstraints(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(o.content.cloneNode(!0))}static get observedAttributes(){return[\"no-image\",\"facing-mode\",\"camera-resolution\",\"pan\",\"tilt\",\"zoom\"]}attributeChangedCallback(t,e,i){if(!this.isConnected)return;let o=this.getTrackCapabilities(),n=this.getTrackSettings();if(\"no-image\"===t&&e!==i&&this.#u(),\"facing-mode\"===t&&e!==i&&\"facingMode\"in this.#t){let t=[\"user\",\"environment\"].includes(this.facingMode||\"\");\"facingMode\"in n&&t&&(this.stopVideoStream(),this.startVideoStream())}if(\"camera-resolution\"===t&&e!==i&&\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[t=0,e=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));if(t>0&&e>0&&\"width\"in o&&\"height\"in o){let i=!!(o.width?.min&&o.width?.max)&&t>=o?.width?.min&&t<=o?.width?.max,a=!!(o.height?.min&&o.height?.max)&&e>=o?.height?.min&&e<=o?.height?.max;\"width\"in n&&\"height\"in n&&i&&a&&(this.stopVideoStream(),this.startVideoStream())}}if(\"pan\"===t&&e!==i&&\"pan\"in this.#t){let t=!!(\"pan\"in o&&o.pan?.min&&o.pan?.max)&&this.pan>=o.pan.min&&this.pan<=o.pan.max;\"pan\"in n&&\"number\"==typeof this.pan&&t&&this.#h(\"pan\",this.pan)}if(\"tilt\"===t&&e!==i&&\"tilt\"in this.#t){let t=!!(\"tilt\"in o&&o.tilt?.min&&o.tilt?.max)&&this.tilt>=o.tilt.min&&this.tilt<=o.tilt.max;\"tilt\"in n&&\"number\"==typeof this.tilt&&t&&this.#h(\"tilt\",this.tilt)}if(\"zoom\"===t&&e!==i&&\"zoom\"in this.#t){let t=!!(\"zoom\"in o&&o.zoom?.min&&o.zoom?.max)&&this.zoom>=o.zoom.min&&this.zoom<=o.zoom.max;\"zoom\"in n&&\"number\"==typeof this.zoom&&t&&this.#h(\"zoom\",this.zoom)}}connectedCallback(){if(this.#d(\"autpoPlay\"),this.#d(\"noImage\"),this.#d(\"facingMode\"),this.#d(\"cameraResolution\"),this.#d(\"pan\"),this.#d(\"tilt\"),this.#d(\"zoom\"),this.#d(\"calculateFileSize\"),this.#i=this.shadowRoot?.querySelector(\"canvas\")||null,this.#o=this.shadowRoot?.getElementById(\"output\")||null,this.#n=this.shadowRoot?.querySelector(\"video\")||null,this.#a=this.shadowRoot?.querySelector('slot[name=\"capture-button\"]')||null,this.#s=this.#c(),this.#r=this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]')||null,this.#l=this.#m(),this.#n?.addEventListener(\"loadedmetadata\",this.#p),this.#a?.addEventListener(\"slotchange\",this.#g),this.#s?.addEventListener(\"click\",this.#b),this.#r?.addEventListener(\"slotchange\",this.#f),this.#l?.addEventListener(\"click\",this.#v),!n.isSupported())return this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:{name:\"NotSupportedError\",message:\"Not supported\"}}}));this.autoPlay&&this.startVideoStream()}disconnectedCallback(){this.stopVideoStream(),this.#l?.removeEventListener(\"click\",this.#v),this.#s?.removeEventListener(\"click\",this.#b),this.#n?.removeEventListener(\"canplay\",this.#p),this.#a?.removeEventListener(\"slotchange\",this.#g),this.#r?.removeEventListener(\"slotchange\",this.#f)}get autoPlay(){return this.hasAttribute(\"auto-play\")}set autoPlay(t){this.toggleAttribute(\"auto-play\",!!t)}get noImage(){return this.hasAttribute(\"no-image\")}set noImage(t){this.toggleAttribute(\"no-image\",!!t)}get facingMode(){return this.getAttribute(\"facing-mode\")||\"user\"}set facingMode(t){this.setAttribute(\"facing-mode\",t)}get cameraResolution(){return this.getAttribute(\"camera-resolution\")||\"\"}set cameraResolution(t){this.setAttribute(\"camera-resolution\",t)}get pan(){return Number(this.getAttribute(\"pan\"))||0}set pan(t){this.setAttribute(\"pan\",null!=t?t.toString():t)}get tilt(){return Number(this.getAttribute(\"tilt\"))||0}set tilt(t){this.setAttribute(\"tilt\",null!=t?t.toString():t)}get zoom(){return Number(this.getAttribute(\"zoom\"))||1}set zoom(t){this.setAttribute(\"zoom\",null!=t?t.toString():t)}get loading(){return this.hasAttribute(\"loading\")}get calculateFileSize(){return this.hasAttribute(\"calculate-file-size\")}set calculateFileSize(t){this.toggleAttribute(\"calculate-file-size\",!!t)}#v=t=>{t.preventDefault(),this.loading||(this.facingMode=\"user\"!==this.facingMode&&this.facingMode?\"user\":\"environment\")};#b=t=>{t.preventDefault(),this.capture()};#p=t=>{let i=t.target;i.play().then(()=>{this.dispatchEvent(new CustomEvent(`${e}:video-play`,{bubbles:!0,composed:!0,detail:{video:i}}))}).catch(t=>{this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}).finally(()=>{this.removeAttribute(\"loading\")})};#u(){this.#o&&Array.from(this.#o.childNodes).forEach(t=>t.remove())}#h(e,i){if(!this.#e||!e||!i)return;let[o]=this.#e.getVideoTracks(),n=this.getTrackCapabilities();e in this.getTrackSettings()&&o.applyConstraints({advanced:[{[e]:t(Number(i),n[e]?.min||1,n[e]?.max||1)}]})}#g=t=>{t.target?.name===\"capture-button\"&&(this.#s?.removeEventListener(\"click\",this.#b),this.#s=this.#c(),this.#s&&(this.#s.addEventListener(\"click\",this.#b),\"BUTTON\"===this.#s.nodeName||this.#s.hasAttribute(\"role\")||this.#s.setAttribute(\"role\",\"button\")))};#f=t=>{t.target?.name===\"facing-mode-button\"&&(this.#l?.removeEventListener(\"click\",this.#v),this.#l=this.#m(),this.#l&&(this.#l.addEventListener(\"click\",this.#v),\"BUTTON\"===this.#l.nodeName||this.#l.hasAttribute(\"role\")||this.#l.setAttribute(\"role\",\"button\")))};#m(){return this.#r&&this.#r.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"facing-mode-button\"===t.getAttribute(\"slot\"))||null}#c(){return this.#a&&this.#a.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"capture-button\"===t.getAttribute(\"slot\"))||null}#d(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}async startVideoStream(){if(!n.isSupported()||this.#e)return;this.setAttribute(\"loading\",\"\");let t={video:{facingMode:{ideal:this.facingMode||\"user\"},pan:!0,tilt:!0,zoom:!0},audio:!1};if(\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[e=0,i=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));e>0&&i>0&&(t.video.width=e,t.video.height=i)}try{this.#e=await navigator.mediaDevices.getUserMedia(t),this.#n&&(this.#n.srcObject=this.#e),this.#h(\"pan\",this.pan),this.#h(\"tilt\",this.tilt),this.#h(\"zoom\",this.zoom);let e=this.getTrackSettings();\"facingMode\"in e&&this.#r&&(this.#r.hidden=!1)}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}finally{this.removeAttribute(\"loading\")}}stopVideoStream(){if(!this.#n||!this.#e)return;let[t]=this.#e.getVideoTracks();t?.stop(),this.#n.srcObject=null,this.#e=null}async capture(){if(!this.loading&&this.#i&&this.#n)try{let t=this.#i.getContext(\"2d\"),i=this.#n.videoWidth,o=this.#n.videoHeight;this.#i.width=i,this.#i.height=o,t?.drawImage(this.#n,0,0,i,o);let n=this.#i.toDataURL(\"image/png\");if(\"string\"==typeof n&&n.includes(\"data:image\")){if(!this.noImage){let t=new Image;t.src=n,t.width=i,t.height=o,t.setAttribute(\"part\",\"output-image\"),this.#u(),this.#o?.appendChild(t)}let t={dataURI:n,width:i,height:o};if(this.calculateFileSize)try{let e=await fetch(n),i=(await e.blob()).size;i&&(t.size=i)}catch(t){}this.dispatchEvent(new CustomEvent(`${e}:success`,{bubbles:!0,composed:!0,detail:t}))}}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}}getSupportedConstraints(){return n.isSupported()&&navigator.mediaDevices.getSupportedConstraints()||{}}getTrackCapabilities(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getCapabilities&&t.getCapabilities()||{}}getTrackSettings(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getSettings&&t.getSettings()||{}}static isSupported(){return!!navigator.mediaDevices?.getUserMedia}static defineCustomElement(t=e){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,n)}}n.defineCustomElement();export{n as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $c290816263f90981$exports = {};\n\n$parcel$export($c290816263f90981$exports, \"CapturePhoto\", function () { return $c290816263f90981$export$cc30a98fe3890794; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */ /**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */ // @ts-check\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */ const $02ad8beec419df62$export$7d15b64cf5a3a4c4 = (value, lower, upper)=>{\n if (Number.isNaN(lower)) lower = 0;\n if (Number.isNaN(upper)) upper = 0;\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n\n\nconst $c290816263f90981$var$COMPONENT_NAME = \"capture-photo\";\nconst $c290816263f90981$var$styles = /* css */ `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\nconst $c290816263f90981$var$template = document.createElement(\"template\");\n$c290816263f90981$var$template.innerHTML = /* html */ `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */ class $c290816263f90981$export$cc30a98fe3890794 extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/ #supportedConstraints = {};\n /** @type {Nullable} */ #stream = null;\n /** @type {Nullable} */ #canvasElement = null;\n /** @type {Nullable} */ #outputElement = null;\n /** @type {Nullable} */ #videoElement = null;\n /** @type {Nullable} */ #captureButtonSlot = null;\n /** @type {Nullable} */ #captureButton = null;\n /** @type {Nullable} */ #facingModeButtonSlot = null;\n /** @type {Nullable} */ #facingModeButton = null;\n constructor(){\n super();\n this.#supportedConstraints = this.getSupportedConstraints();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($c290816263f90981$var$template.content.cloneNode(true));\n }\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) return;\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (name === \"no-image\" && oldValue !== newValue) this.#emptyOutputElement();\n if (name === \"facing-mode\" && oldValue !== newValue && \"facingMode\" in this.#supportedConstraints) {\n const isValidFacingMode = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n if (\"facingMode\" in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n if (name === \"camera-resolution\" && oldValue !== newValue) {\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0 && \"width\" in trackCapabilities && \"height\" in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max : false;\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max : false;\n if (\"width\" in trackSettings && \"height\" in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n if (name === \"pan\" && oldValue !== newValue && \"pan\" in this.#supportedConstraints) {\n const panInAllowedRange = \"pan\" in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max : false;\n if (\"pan\" in trackSettings && typeof this.pan === \"number\" && panInAllowedRange) this.#applyPTZ(\"pan\", this.pan);\n }\n if (name === \"tilt\" && oldValue !== newValue && \"tilt\" in this.#supportedConstraints) {\n const tiltInAllowedRange = \"tilt\" in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max : false;\n if (\"tilt\" in trackSettings && typeof this.tilt === \"number\" && tiltInAllowedRange) this.#applyPTZ(\"tilt\", this.tilt);\n }\n if (name === \"zoom\" && oldValue !== newValue && \"zoom\" in this.#supportedConstraints) {\n const zoomInAllowedRange = \"zoom\" in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max : false;\n if (\"zoom\" in trackSettings && typeof this.zoom === \"number\" && zoomInAllowedRange) this.#applyPTZ(\"zoom\", this.zoom);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"autpoPlay\");\n this.#upgradeProperty(\"noImage\");\n this.#upgradeProperty(\"facingMode\");\n this.#upgradeProperty(\"cameraResolution\");\n this.#upgradeProperty(\"pan\");\n this.#upgradeProperty(\"tilt\");\n this.#upgradeProperty(\"zoom\");\n this.#upgradeProperty(\"calculateFileSize\");\n this.#canvasElement = this.shadowRoot?.querySelector(\"canvas\") || null;\n this.#outputElement = this.shadowRoot?.getElementById(\"output\") || null;\n this.#videoElement = this.shadowRoot?.querySelector(\"video\") || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n this.#videoElement?.addEventListener(\"loadedmetadata\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n if (this.autoPlay) this.startVideoStream();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener(\"canplay\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n }\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */ get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(value) {\n this.toggleAttribute(\"auto-play\", !!value);\n }\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */ get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(value) {\n this.toggleAttribute(\"no-image\", !!value);\n }\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */ get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(value) {\n this.setAttribute(\"facing-mode\", value);\n }\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */ get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(value) {\n this.setAttribute(\"camera-resolution\", value);\n }\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */ get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(value) {\n this.setAttribute(\"pan\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */ get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(value) {\n this.setAttribute(\"tilt\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */ get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(value) {\n this.setAttribute(\"zoom\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */ get loading() {\n return this.hasAttribute(\"loading\");\n }\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */ get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(value) {\n this.toggleAttribute(\"calculate-file-size\", !!value);\n }\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */ #onFacingModeButtonClick = (evt)=>{\n evt.preventDefault();\n if (this.loading) return;\n this.facingMode = this.facingMode === \"user\" || !this.facingMode ? \"environment\" : \"user\";\n };\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */ #onCapturePhotoButtonClick = (evt)=>{\n evt.preventDefault();\n this.capture();\n };\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */ #onVideoLoadedMetaData = (evt)=>{\n const video = evt.target;\n video.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: {\n video: video\n }\n }));\n }).catch(/** @param {Error} error */ (error)=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n /**\n * Removes all child nodes from the output element.\n */ #emptyOutputElement() {\n if (!this.#outputElement) return;\n Array.from(this.#outputElement.childNodes).forEach((node)=>node.remove());\n }\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */ #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) return;\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (constraintName in trackSettings) track.applyConstraints({\n advanced: [\n {\n [constraintName]: (0, $02ad8beec419df62$export$7d15b64cf5a3a4c4)(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }\n ]\n });\n }\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onCaptureButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"capture-button\") {\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n if (this.#captureButton) {\n this.#captureButton.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n if (this.#captureButton.nodeName !== \"BUTTON\" && !this.#captureButton.hasAttribute(\"role\")) this.#captureButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onFacingModeButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"facing-mode-button\") {\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (this.#facingModeButton.nodeName !== \"BUTTON\" && !this.#facingModeButton.hasAttribute(\"role\")) this.#facingModeButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */ #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) return null;\n return this.#facingModeButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"facing-mode-button\";\n }) || null;\n }\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */ #getCaptureButton() {\n if (!this.#captureButtonSlot) return null;\n return this.#captureButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"capture-button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */ async startVideoStream() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported() || this.#stream) return;\n this.setAttribute(\"loading\", \"\");\n /** @type {ExtendedMediaTrackConstraints} */ const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n if (this.#videoElement) this.#videoElement.srcObject = this.#stream;\n this.#applyPTZ(\"pan\", this.pan);\n this.#applyPTZ(\"tilt\", this.tilt);\n this.#applyPTZ(\"zoom\", this.zoom);\n const trackSettings = this.getTrackSettings();\n if (\"facingMode\" in trackSettings && this.#facingModeButtonSlot) this.#facingModeButtonSlot.hidden = false;\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n /**\n * Stops the video stream.\n */ stopVideoStream() {\n if (!this.#videoElement || !this.#stream) return;\n const [track] = this.#stream.getVideoTracks();\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */ async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) return;\n try {\n const ctx = this.#canvasElement.getContext(\"2d\");\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL(\"image/png\");\n if (typeof dataURI === \"string\" && dataURI.includes(\"data:image\")) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute(\"part\", \"output-image\");\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */ const eventDetail = {\n dataURI: dataURI,\n width: width,\n height: height\n };\n if (this.calculateFileSize) try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n if (size) eventDetail.size = size;\n } catch (err) {\n // Fail silently...\n }\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */ getSupportedConstraints() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return {};\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */ getTrackCapabilities() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getCapabilities === \"function\") return track.getCapabilities() || {};\n return {};\n }\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */ getTrackSettings() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getSettings === \"function\") return track.getSettings() || {};\n return {};\n }\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */ static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */ static defineCustomElement(elementName = $c290816263f90981$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $c290816263f90981$export$cc30a98fe3890794);\n }\n}\n\n\n(0, $c290816263f90981$export$cc30a98fe3890794).defineCustomElement();\n\n\nexport {$c290816263f90981$export$cc30a98fe3890794 as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","import { CapturePhoto } from './capture-photo.js';\n\nCapturePhoto.defineCustomElement();\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */\n\nimport { clamp } from './utils/clamp.js';\n\nconst COMPONENT_NAME = 'capture-photo';\n\nconst styles = /* css */`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */\nclass CapturePhoto extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/\n #supportedConstraints = {};\n\n /** @type {Nullable} */\n #stream = null;\n\n /** @type {Nullable} */\n #canvasElement = null;\n\n /** @type {Nullable} */\n #outputElement = null;\n\n /** @type {Nullable} */\n #videoElement = null;\n\n /** @type {Nullable} */\n #captureButtonSlot = null;\n\n /** @type {Nullable} */\n #captureButton = null;\n\n /** @type {Nullable} */\n #facingModeButtonSlot = null;\n\n /** @type {Nullable} */\n #facingModeButton = null;\n\n constructor() {\n super();\n\n this.#supportedConstraints = this.getSupportedConstraints();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n\n static get observedAttributes() {\n return ['no-image', 'facing-mode', 'camera-resolution', 'pan', 'tilt', 'zoom'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) {\n return;\n }\n\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (name === 'no-image' && oldValue !== newValue) {\n this.#emptyOutputElement();\n }\n\n if (name === 'facing-mode' && oldValue !== newValue && 'facingMode' in this.#supportedConstraints) {\n const isValidFacingMode = ['user', 'environment'].includes(this.facingMode || '');\n\n if ('facingMode' in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n\n if (name === 'camera-resolution' && oldValue !== newValue) {\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0 && 'width' in trackCapabilities && 'height' in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max\n ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max\n : false;\n\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max\n ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max\n : false;\n\n if ('width' in trackSettings && 'height' in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n\n if (name === 'pan' && oldValue !== newValue && 'pan' in this.#supportedConstraints) {\n const panInAllowedRange = 'pan' in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max\n ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max\n : false;\n\n if ('pan' in trackSettings && typeof this.pan === 'number' && panInAllowedRange) {\n this.#applyPTZ('pan', this.pan);\n }\n }\n\n if (name === 'tilt' && oldValue !== newValue && 'tilt' in this.#supportedConstraints) {\n const tiltInAllowedRange = 'tilt' in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max\n ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max\n : false;\n\n if ('tilt' in trackSettings && typeof this.tilt === 'number' && tiltInAllowedRange) {\n this.#applyPTZ('tilt', this.tilt);\n }\n }\n\n if (name === 'zoom' && oldValue !== newValue && 'zoom' in this.#supportedConstraints) {\n const zoomInAllowedRange = 'zoom' in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max\n ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max\n : false;\n\n if ('zoom' in trackSettings && typeof this.zoom === 'number' && zoomInAllowedRange) {\n this.#applyPTZ('zoom', this.zoom);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('autpoPlay');\n this.#upgradeProperty('noImage');\n this.#upgradeProperty('facingMode');\n this.#upgradeProperty('cameraResolution');\n this.#upgradeProperty('pan');\n this.#upgradeProperty('tilt');\n this.#upgradeProperty('zoom');\n this.#upgradeProperty('calculateFileSize');\n\n this.#canvasElement = this.shadowRoot?.querySelector('canvas') || null;\n this.#outputElement = this.shadowRoot?.getElementById('output') || null;\n this.#videoElement = this.shadowRoot?.querySelector('video') || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n\n this.#videoElement?.addEventListener('loadedmetadata', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener('click', this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (!CapturePhoto.isSupported()) {\n return this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: 'NotSupportedError',\n message: 'Not supported'\n }\n }\n }));\n }\n\n if (this.autoPlay) {\n this.startVideoStream();\n }\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener('canplay', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n }\n\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */\n get autoPlay() {\n return this.hasAttribute('auto-play');\n }\n\n set autoPlay(value) {\n this.toggleAttribute('auto-play', !!value);\n }\n\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */\n get noImage() {\n return this.hasAttribute('no-image');\n }\n\n set noImage(value) {\n this.toggleAttribute('no-image', !!value);\n }\n\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */\n get facingMode() {\n return this.getAttribute('facing-mode') || 'user';\n }\n\n set facingMode(value) {\n this.setAttribute('facing-mode', value);\n }\n\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */\n get cameraResolution() {\n return this.getAttribute('camera-resolution') || '';\n }\n\n set cameraResolution(value) {\n this.setAttribute('camera-resolution', value);\n }\n\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */\n get pan() {\n return Number(this.getAttribute('pan')) || 0;\n }\n\n set pan(value) {\n this.setAttribute('pan', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */\n get tilt() {\n return Number(this.getAttribute('tilt')) || 0;\n }\n\n set tilt(value) {\n this.setAttribute('tilt', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */\n get zoom() {\n return Number(this.getAttribute('zoom')) || 1;\n }\n\n set zoom(value) {\n this.setAttribute('zoom', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */\n get loading() {\n return this.hasAttribute('loading');\n }\n\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */\n get calculateFileSize() {\n return this.hasAttribute('calculate-file-size');\n }\n\n set calculateFileSize(value) {\n this.toggleAttribute('calculate-file-size', !!value);\n }\n\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */\n #onFacingModeButtonClick = evt => {\n evt.preventDefault();\n\n if (this.loading) {\n return;\n }\n\n this.facingMode = this.facingMode === 'user' || !this.facingMode ? 'environment' : 'user';\n };\n\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */\n #onCapturePhotoButtonClick = evt => {\n evt.preventDefault();\n this.capture();\n };\n\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */\n #onVideoLoadedMetaData = evt => {\n const video = evt.target;\n\n video.play().then(() => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: { video }\n }));\n }).catch(/** @param {Error} error */error => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }).finally(() => {\n this.removeAttribute('loading');\n });\n };\n\n /**\n * Removes all child nodes from the output element.\n */\n #emptyOutputElement() {\n if (!this.#outputElement) {\n return;\n }\n\n Array.from(this.#outputElement.childNodes).forEach(node => node.remove());\n }\n\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */\n #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (constraintName in trackSettings) {\n track.applyConstraints({\n advanced: [{\n [constraintName]: clamp(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }]\n });\n }\n }\n\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onCaptureButtonSlotChange = evt => {\n if (evt.target?.name === 'capture-button') {\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n\n if (this.#captureButton) {\n this.#captureButton.addEventListener('click', this.#onCapturePhotoButtonClick);\n\n if (this.#captureButton.nodeName !== 'BUTTON' && !this.#captureButton.hasAttribute('role')) {\n this.#captureButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onFacingModeButtonSlotChange = evt => {\n if (evt.target?.name === 'facing-mode-button') {\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (this.#facingModeButton.nodeName !== 'BUTTON' && !this.#facingModeButton.hasAttribute('role')) {\n this.#facingModeButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */\n #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) {\n return null;\n }\n\n return this.#facingModeButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'facing-mode-button';\n }) || null;\n }\n\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */\n #getCaptureButton() {\n if (!this.#captureButtonSlot) {\n return null;\n }\n\n return this.#captureButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'capture-button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */\n async startVideoStream() {\n if (!CapturePhoto.isSupported() || this.#stream) {\n return;\n }\n\n this.setAttribute('loading', '');\n\n /** @type {ExtendedMediaTrackConstraints} */\n const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || 'user'\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n\n if (this.#videoElement) {\n this.#videoElement.srcObject = this.#stream;\n }\n\n this.#applyPTZ('pan', this.pan);\n this.#applyPTZ('tilt', this.tilt);\n this.#applyPTZ('zoom', this.zoom);\n\n const trackSettings = this.getTrackSettings();\n\n if ('facingMode' in trackSettings && this.#facingModeButtonSlot) {\n this.#facingModeButtonSlot.hidden = false;\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n } finally {\n this.removeAttribute('loading');\n }\n }\n\n /**\n * Stops the video stream.\n */\n stopVideoStream() {\n if (!this.#videoElement || !this.#stream) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */\n async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) {\n return;\n }\n\n try {\n const ctx = this.#canvasElement.getContext('2d');\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL('image/png');\n\n if (typeof dataURI === 'string' && dataURI.includes('data:image')) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute('part', 'output-image');\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */\n const eventDetail = { dataURI, width, height };\n\n if (this.calculateFileSize) {\n try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n\n if (size) {\n eventDetail.size = size;\n }\n } catch (err) {\n // Fail silently...\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */\n getSupportedConstraints() {\n if (!CapturePhoto.isSupported()) {\n return {};\n }\n\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */\n getTrackCapabilities() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getCapabilities === 'function') {\n return track.getCapabilities() || {};\n }\n\n return {};\n }\n\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */\n getTrackSettings() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getSettings === 'function') {\n return track.getSettings() || {};\n }\n\n return {};\n }\n\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */\n static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, CapturePhoto);\n }\n }\n}\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */\nexport const clamp = (value, lower, upper) => {\n if (Number.isNaN(lower)) {\n lower = 0;\n }\n\n if (Number.isNaN(upper)) {\n upper = 0;\n }\n\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n","Object.defineProperty({},\"ModalElement\",{get:function(){return t},set:void 0,enumerable:!0,configurable:!0});let e=document.createElement(\"template\");e.innerHTML=/* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */class t extends HTMLElement{/** @type {Nullable} */#e=null;/** @type {Nullable} */#t=null;/** @type {ReturnType | undefined} */#o=void 0;constructor(){if(super(),!this.shadowRoot){let t=this.attachShadow({mode:\"open\"});t.appendChild(e.content.cloneNode(!0))}this.shadowRoot&&(this.#e=this.shadowRoot.querySelector(\"dialog\"),this.#t=this.shadowRoot.querySelector('slot[name=\"footer\"]'))}static get observedAttributes(){return[\"open\",\"no-header\",\"no-animations\",\"no-close-button\"]}/**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */attributeChangedCallback(e,t,o){if(null!==this.#e){if(\"open\"===e&&t!==o&&(this.open?(this.#e.showModal(),document.body&&(document.body.style.overflowY=\"hidden\"),this.dispatchEvent(new CustomEvent(\"me-open\",{bubbles:!0,composed:!0,detail:{element:this}}))):this.#e.close()),\"no-header\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__header\");null!==e&&(e.hidden=this.noHeader)}if(\"no-animations\"===e&&t!==o&&this.#e.classList.toggle(\"dialog--no-animations\",this.noAnimations),\"no-close-button\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__close\");null!==e&&(e.hidden=this.noCloseButton)}}}/**\n * Lifecycle method that is called when the element is added to the DOM.\n */connectedCallback(){this.#i(\"open\"),this.#i(\"staticBackdrop\"),this.#i(\"noHeader\"),this.#i(\"noAnimations\"),this.#i(\"noCloseButton\"),this.#i(\"fullscreen\"),this.#e?.addEventListener(\"click\",this.#a),this.#e?.addEventListener(\"close\",this.#l),this.#e?.addEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\",this.#n),this.#t?.addEventListener(\"slotchange\",this.#r)}/**\n * Lifecycle method that is called when the element is removed from the DOM.\n */disconnectedCallback(){this.#o&&clearTimeout(this.#o),this.#e?.addEventListener(\"click\",this.#a),this.#e?.removeEventListener(\"close\",this.#l),this.#e?.removeEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\",this.#n),this.#t?.removeEventListener(\"slotchange\",this.#r)}/**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */get open(){return this.hasAttribute(\"open\")}set open(e){e?this.setAttribute(\"open\",\"\"):this.removeAttribute(\"open\")}/**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */get staticBackdrop(){return this.hasAttribute(\"static-backdrop\")}set staticBackdrop(e){e?this.setAttribute(\"static-backdrop\",\"\"):this.removeAttribute(\"static-backdrop\")}/**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */get noHeader(){return this.hasAttribute(\"no-header\")}set noHeader(e){e?this.setAttribute(\"no-header\",\"\"):this.removeAttribute(\"no-header\")}/**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */get noAnimations(){return this.hasAttribute(\"no-animations\")}set noAnimations(e){e?this.setAttribute(\"no-animations\",\"\"):this.removeAttribute(\"no-animations\")}/**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */get noCloseButton(){return this.hasAttribute(\"no-close-button\")}set noCloseButton(e){e?this.setAttribute(\"no-close-button\",\"\"):this.removeAttribute(\"no-close-button\")}/**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */get fullscreen(){return this.hasAttribute(\"fullscreen\")}set fullscreen(e){e?this.setAttribute(\"fullscreen\",\"\"):this.removeAttribute(\"fullscreen\")}/**\n * Applies a pulse effect on the dialog.\n */#d(){this.#o||(this.#e?.classList.add(\"dialog--pulse\"),this.#o=setTimeout(()=>{this.#e?.classList.remove(\"dialog--pulse\"),clearTimeout(this.#o),this.#o=void 0},300))}/**\n * Handles the close event of the dialog.\n */#l=()=>{// This is needed because the dialog element does not reset\n// the open property when the dialog is closed by the user.\nthis.open=!1,document.body&&(document.body.style.overflowY=\"\"),this.dispatchEvent(new CustomEvent(\"me-close\",{bubbles:!0,composed:!0,detail:{element:this}}))};/**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */#s=e=>{let t=this.#c(\"escape-key\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */#n=e=>{let t=this.#c(\"close-button\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */#a=e=>{if(e.target!==e.currentTarget)return;let t=this.#c(\"backdrop-click\");if(this.dispatchEvent(t),t.defaultPrevented||this.staticBackdrop){this.noAnimations||this.#d();return}this.#e?.close()};/**\n * Handles the slotchange event of the footer slot.\n */#r=()=>{if(null===this.#e)return;/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__footer\");if(null===e)return;let t=this.#t?.assignedNodes(),o=!!t&&t.length>0;e.hidden=!o};/**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */#c(e){return new CustomEvent(\"me-request-close\",{bubbles:!0,composed:!0,cancelable:!0,detail:{reason:e,element:this}})}/**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */#i(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}/**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */show(){this.open||(this.open=!0)}/**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */hide(){this.open&&(this.open=!1)}/**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */static defineCustomElement(e=\"modal-element\"){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,t)}}t.defineCustomElement();export{t as ModalElement};//# sourceMappingURL=modal-element-defined.js.map\n\n//# sourceMappingURL=modal-element-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $180b6dcf923bafc7$exports = {};\n\n$parcel$export($180b6dcf923bafc7$exports, \"ModalElement\", function () { return $180b6dcf923bafc7$export$32589115725b904b; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ const $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION = 300;\nconst $180b6dcf923bafc7$var$template = document.createElement(\"template\");\n$180b6dcf923bafc7$var$template.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ class $180b6dcf923bafc7$export$32589115725b904b extends HTMLElement {\n /** @type {Nullable} */ #dialogEl = null;\n /** @type {Nullable} */ #footerSlotEl = null;\n /** @type {ReturnType | undefined} */ #pulseAnimationTimeout = void 0;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($180b6dcf923bafc7$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector(\"dialog\");\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) return;\n if (name === \"open\" && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n if (document.body) document.body.style.overflowY = \"hidden\";\n this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n } else this.#dialogEl.close();\n }\n if (name === \"no-header\" && oldValue !== newValue) {\n /** @type {Nullable} */ const headerEl = this.#dialogEl.querySelector(\".dialog__header\");\n if (headerEl !== null) headerEl.hidden = this.noHeader;\n }\n if (name === \"no-animations\" && oldValue !== newValue) this.#dialogEl.classList.toggle(\"dialog--no-animations\", this.noAnimations);\n if (name === \"no-close-button\" && oldValue !== newValue) {\n /** @type {Nullable} */ const closeBtnEl = this.#dialogEl.querySelector(\".dialog__close\");\n if (closeBtnEl !== null) closeBtnEl.hidden = this.noCloseButton;\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"open\");\n this.#upgradeProperty(\"staticBackdrop\");\n this.#upgradeProperty(\"noHeader\");\n this.#upgradeProperty(\"noAnimations\");\n this.#upgradeProperty(\"noCloseButton\");\n this.#upgradeProperty(\"fullscreen\");\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.addEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.addEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.removeEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.removeEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */ get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n if (value) this.setAttribute(\"open\", \"\");\n else this.removeAttribute(\"open\");\n }\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */ get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(value) {\n if (value) this.setAttribute(\"static-backdrop\", \"\");\n else this.removeAttribute(\"static-backdrop\");\n }\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */ get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(value) {\n if (value) this.setAttribute(\"no-header\", \"\");\n else this.removeAttribute(\"no-header\");\n }\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */ get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(value) {\n if (value) this.setAttribute(\"no-animations\", \"\");\n else this.removeAttribute(\"no-animations\");\n }\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */ get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(value) {\n if (value) this.setAttribute(\"no-close-button\", \"\");\n else this.removeAttribute(\"no-close-button\");\n }\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */ get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(value) {\n if (value) this.setAttribute(\"fullscreen\", \"\");\n else this.removeAttribute(\"fullscreen\");\n }\n /**\n * Applies a pulse effect on the dialog.\n */ #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) return;\n this.#dialogEl?.classList.add(\"dialog--pulse\");\n this.#pulseAnimationTimeout = setTimeout(()=>{\n this.#dialogEl?.classList.remove(\"dialog--pulse\");\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION);\n }\n /**\n * Handles the close event of the dialog.\n */ #handleDialogClose = ()=>{\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n if (document.body) document.body.style.overflowY = \"\";\n this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n };\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */ #handleDialogCancel = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"escape-key\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */ #handleCloseButtonClick = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"close-button\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */ #handleDialogClick = (evt)=>{\n if (evt.target !== evt.currentTarget) return;\n const requestCloseEvent = this.#createRequestCloseEvent(\"backdrop-click\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n this.#dialogEl?.close();\n };\n /**\n * Handles the slotchange event of the footer slot.\n */ #handleFooterSlotChange = ()=>{\n if (this.#dialogEl === null) return;\n /** @type {Nullable} */ const footerEl = this.#dialogEl.querySelector(\".dialog__footer\");\n if (footerEl === null) return;\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n footerEl.hidden = !hasFooterSlotNodes;\n };\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */ #createRequestCloseEvent(reason) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason: reason,\n element: this\n }\n });\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */ show() {\n if (this.open) return;\n this.open = true;\n }\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */ hide() {\n if (!this.open) return;\n this.open = false;\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */ static defineCustomElement(elementName = \"modal-element\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $180b6dcf923bafc7$export$32589115725b904b);\n }\n}\n\n\n(0, $180b6dcf923bafc7$export$32589115725b904b).defineCustomElement();\n\n\nexport {$180b6dcf923bafc7$export$32589115725b904b as ModalElement};\n//# sourceMappingURL=modal-element-defined.js.map\n","import { ModalElement } from './modal-element.js';\n\nModalElement.defineCustomElement();\n\nexport { ModalElement };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nconst PULSE_ANIMATION_DURATION = 300;\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */\nclass ModalElement extends HTMLElement {\n /** @type {Nullable} */\n #dialogEl = null;\n\n /** @type {Nullable} */\n #footerSlotEl = null;\n\n /** @type {ReturnType | undefined} */\n #pulseAnimationTimeout = void 0;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector('dialog');\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n\n static get observedAttributes() {\n return ['open', 'no-header', 'no-animations', 'no-close-button'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) {\n return;\n }\n\n if (name === 'open' && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n\n if (document.body) {\n document.body.style.overflowY = 'hidden';\n }\n\n this.dispatchEvent(new CustomEvent('me-open', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n } else {\n this.#dialogEl.close();\n }\n }\n\n if (name === 'no-header' && oldValue !== newValue) {\n /** @type {Nullable} */\n const headerEl = this.#dialogEl.querySelector('.dialog__header');\n\n if (headerEl !== null) {\n headerEl.hidden = this.noHeader;\n }\n }\n\n if (name === 'no-animations' && oldValue !== newValue) {\n this.#dialogEl.classList.toggle('dialog--no-animations', this.noAnimations);\n }\n\n if (name === 'no-close-button' && oldValue !== newValue) {\n /** @type {Nullable} */\n const closeBtnEl = this.#dialogEl.querySelector('.dialog__close');\n\n if (closeBtnEl !== null) {\n closeBtnEl.hidden = this.noCloseButton;\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('open');\n this.#upgradeProperty('staticBackdrop');\n this.#upgradeProperty('noHeader');\n this.#upgradeProperty('noAnimations');\n this.#upgradeProperty('noCloseButton');\n this.#upgradeProperty('fullscreen');\n\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.addEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.addEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.removeEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.removeEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */\n get open() {\n return this.hasAttribute('open');\n }\n\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n } else {\n this.removeAttribute('open');\n }\n }\n\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */\n get staticBackdrop() {\n return this.hasAttribute('static-backdrop');\n }\n\n set staticBackdrop(value) {\n if (value) {\n this.setAttribute('static-backdrop', '');\n } else {\n this.removeAttribute('static-backdrop');\n }\n }\n\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */\n get noHeader() {\n return this.hasAttribute('no-header');\n }\n\n set noHeader(value) {\n if (value) {\n this.setAttribute('no-header', '');\n } else {\n this.removeAttribute('no-header');\n }\n }\n\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */\n get noAnimations() {\n return this.hasAttribute('no-animations');\n }\n\n set noAnimations(value) {\n if (value) {\n this.setAttribute('no-animations', '');\n } else {\n this.removeAttribute('no-animations');\n }\n }\n\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */\n get noCloseButton() {\n return this.hasAttribute('no-close-button');\n }\n\n set noCloseButton(value) {\n if (value) {\n this.setAttribute('no-close-button', '');\n } else {\n this.removeAttribute('no-close-button');\n }\n }\n\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */\n get fullscreen() {\n return this.hasAttribute('fullscreen');\n }\n\n set fullscreen(value) {\n if (value) {\n this.setAttribute('fullscreen', '');\n } else {\n this.removeAttribute('fullscreen');\n }\n }\n\n /**\n * Applies a pulse effect on the dialog.\n */\n #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) {\n return;\n }\n\n this.#dialogEl?.classList.add('dialog--pulse');\n\n this.#pulseAnimationTimeout = setTimeout(() => {\n this.#dialogEl?.classList.remove('dialog--pulse');\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, PULSE_ANIMATION_DURATION);\n }\n\n /**\n * Handles the close event of the dialog.\n */\n #handleDialogClose = () => {\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n\n if (document.body) {\n document.body.style.overflowY = '';\n }\n\n this.dispatchEvent(new CustomEvent('me-close', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n };\n\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */\n #handleDialogCancel = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('escape-key');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */\n #handleCloseButtonClick = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('close-button');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */\n #handleDialogClick = evt => {\n if (evt.target !== evt.currentTarget) {\n return;\n }\n\n const requestCloseEvent = this.#createRequestCloseEvent('backdrop-click');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n\n this.#dialogEl?.close();\n };\n\n /**\n * Handles the slotchange event of the footer slot.\n */\n #handleFooterSlotChange = () => {\n if (this.#dialogEl === null) {\n return;\n }\n\n /** @type {Nullable} */\n const footerEl = this.#dialogEl.querySelector('.dialog__footer');\n\n if (footerEl === null) {\n return;\n }\n\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n\n footerEl.hidden = !hasFooterSlotNodes;\n };\n\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */\n #createRequestCloseEvent(reason) {\n return new CustomEvent('me-request-close', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason,\n element: this\n }\n });\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */\n show() {\n if (this.open) {\n return;\n }\n\n this.open = true;\n }\n\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */\n hide() {\n if (!this.open) {\n return;\n }\n\n this.open = false;\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */\n static defineCustomElement(elementName = 'modal-element') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, ModalElement);\n }\n }\n}\n\nexport { ModalElement };\n","Object.defineProperty({},\"FilesDropzone\",{get:function(){return m},set:void 0,enumerable:!0,configurable:!0});let e=new Map([[\"aac\",\"audio/aac\"],[\"abw\",\"application/x-abiword\"],[\"arc\",\"application/x-freearc\"],[\"avif\",\"image/avif\"],[\"avi\",\"video/x-msvideo\"],[\"azw\",\"application/vnd.amazon.ebook\"],[\"bin\",\"application/octet-stream\"],[\"bmp\",\"image/bmp\"],[\"bz\",\"application/x-bzip\"],[\"bz2\",\"application/x-bzip2\"],[\"cda\",\"application/x-cdf\"],[\"csh\",\"application/x-csh\"],[\"css\",\"text/css\"],[\"csv\",\"text/csv\"],[\"doc\",\"application/msword\"],[\"docx\",\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"],[\"eot\",\"application/vnd.ms-fontobject\"],[\"epub\",\"application/epub+zip\"],[\"gz\",\"application/gzip\"],[\"gif\",\"image/gif\"],[\"heic\",\"image/heic\"],[\"heif\",\"image/heif\"],[\"htm\",\"text/html\"],[\"html\",\"text/html\"],[\"ico\",\"image/vnd.microsoft.icon\"],[\"ics\",\"text/calendar\"],[\"jar\",\"application/java-archive\"],[\"jpeg\",\"image/jpeg\"],[\"jpg\",\"image/jpeg\"],[\"jxl\",\"image/jxl\"],[\"js\",\"text/javascript\"],[\"json\",\"application/json\"],[\"jsonld\",\"application/ld+json\"],[\"markdown\",\"text/markdown\"],[\"md\",\"text/markdown\"],[\"mid\",\"audio/midi\"],[\"midi\",\"audio/midi\"],[\"mjs\",\"text/javascript\"],[\"mp3\",\"audio/mpeg\"],[\"mp4\",\"video/mp4\"],[\"mpeg\",\"video/mpeg\"],[\"mpkg\",\"application/vnd.apple.installer+xml\"],[\"odp\",\"application/vnd.oasis.opendocument.presentation\"],[\"ods\",\"application/vnd.oasis.opendocument.spreadsheet\"],[\"odt\",\"application/vnd.oasis.opendocument.text\"],[\"oga\",\"audio/ogg\"],[\"ogv\",\"video/ogg\"],[\"ogx\",\"application/ogg\"],[\"opus\",\"audio/opus\"],[\"otf\",\"font/otf\"],[\"png\",\"image/png\"],[\"pdf\",\"application/pdf\"],[\"php\",\"application/x-httpd-php\"],[\"ppt\",\"application/vnd.ms-powerpoint\"],[\"pptx\",\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"],[\"rar\",\"application/vnd.rar\"],[\"rtf\",\"application/rtf\"],[\"sh\",\"application/x-sh\"],[\"svg\",\"image/svg+xml\"],[\"swf\",\"application/x-shockwave-flash\"],[\"tar\",\"application/x-tar\"],[\"tif\",\"image/tiff\"],[\"tiff\",\"image/tiff\"],[\"ts\",\"video/mp2t\"],[\"ttf\",\"font/ttf\"],[\"txt\",\"text/plain\"],[\"vsd\",\"application/vnd.visio\"],[\"wav\",\"audio/wav\"],[\"weba\",\"audio/webm\"],[\"webm\",\"video/webm\"],[\"webp\",\"image/webp\"],[\"woff\",\"font/woff\"],[\"woff2\",\"font/woff2\"],[\"xhtml\",\"application/xhtml+xml\"],[\"xls\",\"application/vnd.ms-excel\"],[\"xlsx\",\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],[\"xml\",\"application/xml\"],[\"xul\",\"application/vnd.mozilla.xul+xml\"],[\"zip\",\"application/zip\"],[\"7z\",\"application/x-7z-compressed\"],[\"mkv\",\"video/x-matroska\"],[\"mov\",\"video/quicktime\"],[\"msg\",\"application/vnd.ms-outlook\"]]),t=[\".DS_Store\",\"Thumbs.db\"],o=t=>{let{name:o}=t;if(o&&-1!==o.lastIndexOf(\".\")&&!t.type){let i=(o.split(\".\").pop()||\"\").toLowerCase(),r=e.get(i);r&&Object.defineProperty(t,\"type\",{value:r,writable:!1,configurable:!1,enumerable:!0})}return t},i=(e,t)=>{let i=o(e);if(\"string\"!=typeof i.path){let{webkitRelativePath:o}=e;Object.defineProperty(i,\"path\",{value:\"string\"==typeof t?t:o||e.name,writable:!1,configurable:!1,enumerable:!0})}return i},r=async e=>await new Promise((t,o)=>{e.readEntries(t,o)}),a=async e=>{let t=[],o=await r(e);for(;o.length>0;)t.push(...o),o=await r(e);return t},n=e=>new Promise((t,o)=>{e.file(o=>t(i(o,e.fullPath)),o)}),s=async e=>{let o=[],i=[];for(let t of e){if(\"file\"!==t.kind)continue;let e=t.getAsEntry?t.getAsEntry():t.webkitGetAsEntry();i.push(e)}for(;i.length>0;){let e=i.shift();if(e){if(e.isFile){let i=await n(e);-1===t.indexOf(i.name)&&o.push(i)}else e.isDirectory&&i.push(...await a(e.createReader()))}}return o},d=async e=>{let o=[];for(let r of e)-1===t.indexOf(r.name)&&o.push(i(r));return o},l=async e=>e.dataTransfer?e.dataTransfer.items?await s(e.dataTransfer.items):await d(e.dataTransfer.files):await d(e.target.files),p=\"files-dropzone\",c=\"TOO_MANY_FILES\",h=document.createElement(\"template\"),u=`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;h.innerHTML=`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;class m extends HTMLElement{#e=null;#t=null;constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(h.content.cloneNode(!0)),this.shadowRoot&&(this.#e=this.shadowRoot.getElementById(\"fileInput\"),this.#t=this.shadowRoot.getElementById(\"dropzoneEl\"))}static get observedAttributes(){return[\"accept\",\"disabled\",\"multiple\",\"no-keyboard\"]}attributeChangedCallback(e,t,o){\"accept\"===e&&t!==o&&this.#e&&(this.#e.accept=this.accept),\"disabled\"===e&&t!==o&&this.#e&&(this.#e.disabled=this.disabled,this.disabled?this.#t?.removeAttribute(\"tabindex\"):this.#t?.setAttribute(\"tabindex\",\"0\")),\"multiple\"===e&&t!==o&&this.#e&&(this.#e.multiple=this.multiple),\"no-keyboard\"===e&&t!==o&&this.#t&&(this.noKeyboard?this.#t.removeAttribute(\"tabindex\"):this.#t.setAttribute(\"tabindex\",\"0\"))}connectedCallback(){this.#o(\"accept\"),this.#o(\"disabled\"),this.#o(\"maxFiles\"),this.#o(\"maxSize\"),this.#o(\"minSize\"),this.#o(\"multiple\"),this.#o(\"noClick\"),this.#o(\"noDrag\"),this.#o(\"noKeyboard\"),this.#o(\"autoFocus\"),this.#o(\"noStyle\"),this.#e?.addEventListener(\"change\",this.#i),this.#t?.addEventListener(\"dragenter\",this.#r),this.#t?.addEventListener(\"dragover\",this.#a),this.#t?.addEventListener(\"dragleave\",this.#n),this.#t?.addEventListener(\"drop\",this.#s),this.#t?.addEventListener(\"click\",this.#d),this.#t?.addEventListener(\"keyup\",this.#l),this.autoFocus&&this.#t?.focus()}disconnectedCallback(){this.#e?.removeEventListener(\"change\",this.#i),this.#t?.removeEventListener(\"dragenter\",this.#r),this.#t?.removeEventListener(\"dragover\",this.#a),this.#t?.removeEventListener(\"dragleave\",this.#n),this.#t?.removeEventListener(\"drop\",this.#s),this.#t?.removeEventListener(\"click\",this.#d),this.#t?.removeEventListener(\"keyup\",this.#l)}get accept(){return this.getAttribute(\"accept\")||\"\"}set accept(e){this.setAttribute(\"accept\",null!=e?e.toString():e)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(e){this.toggleAttribute(\"disabled\",!!e)}get maxFiles(){let e=Number(this.getAttribute(\"max-files\"))||0;return e<=0?1/0:Math.floor(Math.abs(e))}set maxFiles(e){this.setAttribute(\"max-files\",null!=e?e.toString():e)}get maxSize(){let e=this.getAttribute(\"max-size\");if(null===e)return 1/0;let t=Number(e);return Number.isNaN(t)?1/0:t}set maxSize(e){this.setAttribute(\"max-size\",null!=e?e.toString():e)}get minSize(){let e=this.getAttribute(\"min-size\");if(null===e)return 0;let t=Number(e);return Number.isNaN(t)?0:t}set minSize(e){this.setAttribute(\"min-size\",null!=e?e.toString():e)}get multiple(){return this.hasAttribute(\"multiple\")}set multiple(e){this.toggleAttribute(\"multiple\",!!e)}get noClick(){return this.hasAttribute(\"no-click\")}set noClick(e){this.toggleAttribute(\"no-click\",!!e)}get noDrag(){return this.hasAttribute(\"no-drag\")}set noDrag(e){this.toggleAttribute(\"no-drag\",!!e)}get noKeyboard(){return this.hasAttribute(\"no-keyboard\")}set noKeyboard(e){this.toggleAttribute(\"no-keyboard\",!!e)}get autoFocus(){return this.hasAttribute(\"auto-focus\")}set autoFocus(e){this.toggleAttribute(\"auto-focus\",!!e)}get noStyle(){return this.hasAttribute(\"no-style\")}set noStyle(e){this.toggleAttribute(\"no-style\",!!e)}#i=async e=>{try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}};#r=()=>{this.disabled||this.noDrag||this.dispatchEvent(new Event(`${p}-dragenter`,{bubbles:!0,composed:!0}))};#a=e=>{if(e.preventDefault(),this.disabled||this.noDrag){e.dataTransfer.dropEffect=\"none\";return}e.dataTransfer.dropEffect=\"copy\",this.#t&&(this.#t.classList.add(\"dropzone--dragover\"),this.#t.part.add(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragover`,{bubbles:!0,composed:!0}))};#n=()=>{this.disabled||this.noDrag||(this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragleave`,{bubbles:!0,composed:!0})))};#s=async e=>{if(!this.disabled&&!this.noDrag){e.preventDefault(),this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\"));try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}}};#d=()=>{this.disabled||this.noClick||this.#e?.click()};#l=e=>{this.disabled||this.noKeyboard||\" \"!==e.key&&\"Enter\"!==e.key||this.#e?.click()};#p(e){if(!Array.isArray(e)||!e.length)return;let t=[],o=[],i=e.length;if(!this.multiple&&i>1)for(let t of e)o.push({file:t,errors:[{code:c,message:\"Too many files selected. Only 1 file is allowed.\"}]});else if(this.multiple&&i>this.maxFiles)for(let t of e)o.push({file:t,errors:[{code:c,message:`Too many files selected. Only ${this.maxFiles} ${this.maxFiles>1?\"files are\":\"file is\"} allowed.`}]});else for(let i of e){let e=function(e,t=\"\"){if(!t)return!0;let o=[...new Set(t.split(\",\").map(e=>e.trim()).filter(Boolean))],i=e.type,r=i.replace(/\\/.*$/,\"\");for(let t of o)if(\".\"===t.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(t.toLowerCase(),e.name.length-t.length))return!0}else if(/\\/\\*$/.test(t)){if(r===t.replace(/\\/.*$/,\"\"))return!0}else if(i===t)return!0;return!1}(i,this.accept),r=i.size>this.maxSize,a=i.size0&&this.dispatchEvent(new CustomEvent(`${p}-drop-accepted`,{bubbles:!0,composed:!0,detail:{acceptedFiles:t}})),o.length>0&&this.dispatchEvent(new CustomEvent(`${p}-drop-rejected`,{bubbles:!0,composed:!0,detail:{rejectedFiles:o}})),this.#e&&(this.#e.value=this.#e.defaultValue)}openFileDialog(){this.disabled||this.#e?.click()}#o(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}static defineCustomElement(e=p){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,m)}}m.defineCustomElement();export{m as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $862aa3736b0514bc$exports = {};\n\n$parcel$export($862aa3736b0514bc$exports, \"FilesDropzone\", function () { return $862aa3736b0514bc$export$6ccd1735166caad9; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ // @ts-check\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */ function $38f222170fd4d21a$export$7c47054fed488f80(file, acceptedTypeSpecifiers = \"\") {\n if (!acceptedTypeSpecifiers) return true;\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(\",\").map((v)=>v.trim()).filter(Boolean))\n ];\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, \"\");\n for (const validType of acceptedMimeTypesList){\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (fileMimeType === validType) return true;\n }\n }\n return false;\n}\n\n\n// @ts-check\n/**\n * A map of common file extensions and their associated MIME types.\n */ const $f31161edf38949e9$var$COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n // Others\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]);\nconst $f31161edf38949e9$var$FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n \".DS_Store\",\n \"Thumbs.db\" // Windows\n];\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */ const $f31161edf38949e9$var$toFileWithMimeType = (file)=>{\n const { name: name } = file;\n const hasExtension = name && name.lastIndexOf(\".\") !== -1;\n if (hasExtension && !file.type) {\n const extension = (name.split(\".\").pop() || \"\").toLowerCase();\n const type = $f31161edf38949e9$var$COMMON_MIME_TYPES.get(extension);\n if (type) Object.defineProperty(file, \"type\", {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return file;\n};\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */ const $f31161edf38949e9$var$toFileWithPath = (file, path)=>{\n const fileWithMimeType = $f31161edf38949e9$var$toFileWithMimeType(file);\n // @ts-ignore\n if (typeof fileWithMimeType.path !== \"string\") {\n const { webkitRelativePath: webkitRelativePath } = file;\n Object.defineProperty(fileWithMimeType, \"path\", {\n value: typeof path === \"string\" ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return fileWithMimeType;\n};\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readEntriesPromise = async (directoryReader)=>{\n return await new Promise((resolve, reject)=>{\n directoryReader.readEntries(resolve, reject);\n });\n};\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readAllDirectoryEntries = async (directoryReader)=>{\n const entries = [];\n let readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n while(readEntries.length > 0){\n entries.push(...readEntries);\n readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n }\n return entries;\n};\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */ const $f31161edf38949e9$var$getFileFromFileEntry = (fileEntry)=>{\n return new Promise((resolve, reject)=>{\n fileEntry.file((file)=>resolve($f31161edf38949e9$var$toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromDataTransferItemList = async (dataTransferItemList)=>{\n const files = [];\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n for (const item of dataTransferItemList){\n if (item.kind !== \"file\") continue;\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n queue.push(entry);\n }\n while(queue.length > 0){\n const entry = queue.shift();\n if (!entry) continue;\n else if (entry.isFile) {\n const file = await $f31161edf38949e9$var$getFileFromFileEntry(entry);\n if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push(file);\n } else if (entry.isDirectory) queue.push(...await $f31161edf38949e9$var$readAllDirectoryEntries(entry.createReader()));\n }\n return files;\n};\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromFileList = async (fileList)=>{\n const files = [];\n for (const file of fileList)if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push($f31161edf38949e9$var$toFileWithPath(file));\n return files;\n};\nconst $f31161edf38949e9$export$6d52664cd15c442 = async (evt)=>{\n if (evt.dataTransfer) return evt.dataTransfer.items ? await $f31161edf38949e9$var$getFilesFromDataTransferItemList(evt.dataTransfer.items) : await $f31161edf38949e9$var$getFilesFromFileList(evt.dataTransfer.files);\n return await $f31161edf38949e9$var$getFilesFromFileList(evt.target.files);\n};\n\n\nconst $862aa3736b0514bc$var$COMPONENT_NAME = \"files-dropzone\";\nconst $862aa3736b0514bc$var$TOO_MANY_FILES = \"TOO_MANY_FILES\";\nconst $862aa3736b0514bc$var$FILE_TOO_LARGE = \"FILE_TOO_LARGE\";\nconst $862aa3736b0514bc$var$FILE_TOO_SMALL = \"FILE_TOO_SMALL\";\nconst $862aa3736b0514bc$var$INVALID_MIME_TYPE = \"INVALID_MIME_TYPE\";\nconst $862aa3736b0514bc$var$template = document.createElement(\"template\");\nconst $862aa3736b0514bc$var$styles = /* css */ `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$862aa3736b0514bc$var$template.innerHTML = /* html */ `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */ class $862aa3736b0514bc$export$6ccd1735166caad9 extends HTMLElement {\n /** @type {Nullable} */ #fileInput = null;\n /** @type {Nullable} */ #dropzoneEl = null;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($862aa3736b0514bc$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */ this.shadowRoot.getElementById(\"fileInput\");\n this.#dropzoneEl = this.shadowRoot.getElementById(\"dropzoneEl\");\n }\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"accept\" && oldValue !== newValue && this.#fileInput) this.#fileInput.accept = this.accept;\n if (name === \"disabled\" && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n if (this.disabled) this.#dropzoneEl?.removeAttribute(\"tabindex\");\n else this.#dropzoneEl?.setAttribute(\"tabindex\", \"0\");\n }\n if (name === \"multiple\" && oldValue !== newValue && this.#fileInput) this.#fileInput.multiple = this.multiple;\n if (name === \"no-keyboard\" && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) this.#dropzoneEl.removeAttribute(\"tabindex\");\n else this.#dropzoneEl.setAttribute(\"tabindex\", \"0\");\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"accept\");\n this.#upgradeProperty(\"disabled\");\n this.#upgradeProperty(\"maxFiles\");\n this.#upgradeProperty(\"maxSize\");\n this.#upgradeProperty(\"minSize\");\n this.#upgradeProperty(\"multiple\");\n this.#upgradeProperty(\"noClick\");\n this.#upgradeProperty(\"noDrag\");\n this.#upgradeProperty(\"noKeyboard\");\n this.#upgradeProperty(\"autoFocus\");\n this.#upgradeProperty(\"noStyle\");\n this.#fileInput?.addEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.addEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.addEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.addEventListener(\"keyup\", this.#handleKeyUp);\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#fileInput?.removeEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.removeEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.removeEventListener(\"keyup\", this.#handleKeyUp);\n }\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */ get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(value) {\n this.setAttribute(\"accept\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */ get maxFiles() {\n const num = Number(this.getAttribute(\"max-files\")) || 0;\n if (num <= 0) return Infinity;\n return Math.floor(Math.abs(num));\n }\n set maxFiles(value) {\n this.setAttribute(\"max-files\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */ get maxSize() {\n const value = this.getAttribute(\"max-size\");\n if (value === null) return Infinity;\n const num = Number(value);\n return Number.isNaN(num) ? Infinity : num;\n }\n set maxSize(value) {\n this.setAttribute(\"max-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */ get minSize() {\n const value = this.getAttribute(\"min-size\");\n if (value === null) return 0;\n const num = Number(value);\n return Number.isNaN(num) ? 0 : num;\n }\n set minSize(value) {\n this.setAttribute(\"min-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */ get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(value) {\n this.toggleAttribute(\"multiple\", !!value);\n }\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */ get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(value) {\n this.toggleAttribute(\"no-click\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */ get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(value) {\n this.toggleAttribute(\"no-drag\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */ get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(value) {\n this.toggleAttribute(\"no-keyboard\", !!value);\n }\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */ get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(value) {\n this.toggleAttribute(\"auto-focus\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */ get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(value) {\n this.toggleAttribute(\"no-style\", !!value);\n }\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */ #handleFileInputChange = async (evt)=>{\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the dragenter event of the dropzone.\n */ #handleDragEnter = ()=>{\n if (this.disabled || this.noDrag) return;\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDragOver = (evt)=>{\n evt.preventDefault();\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = \"none\";\n return;\n }\n evt.dataTransfer.dropEffect = \"copy\";\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add(\"dropzone--dragover\");\n this.#dropzoneEl.part.add(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragleave event of the dropzone.\n */ #handleDragLeave = ()=>{\n if (this.disabled || this.noDrag) return;\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDrop = async (evt)=>{\n if (this.disabled || this.noDrag) return;\n evt.preventDefault();\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the click event of the dropzone.\n */ #handleClick = ()=>{\n if (this.disabled || this.noClick) return;\n this.#fileInput?.click();\n };\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleKeyUp = (evt)=>{\n if (this.disabled || this.noKeyboard) return;\n if (evt.key === \" \" || evt.key === \"Enter\") this.#fileInput?.click();\n };\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */ #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) return;\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }\n ]\n });\n else if (this.multiple && filesLength > this.maxFiles) // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files){\n const fileHasValidType = (0, $38f222170fd4d21a$export$7c47054fed488f80)(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) acceptedFiles.push(file);\n else {\n const errors = [];\n if (!fileHasValidType) errors.push({\n code: $862aa3736b0514bc$var$INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n if (fileExceedsMaxSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n if (fileIsSmallerThanMinSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n rejectedFiles.push({\n file: file,\n errors: errors\n });\n }\n }\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles,\n rejectedFiles: rejectedFiles\n }\n }));\n if (acceptedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles\n }\n }));\n if (rejectedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles: rejectedFiles\n }\n }));\n if (this.#fileInput) this.#fileInput.value = this.#fileInput.defaultValue;\n }\n /**\n * Opens the file dialog programmatically.\n */ openFileDialog() {\n if (this.disabled) return;\n this.#fileInput?.click();\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */ static defineCustomElement(elementName = $862aa3736b0514bc$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $862aa3736b0514bc$export$6ccd1735166caad9);\n }\n}\n\n\n(0, $862aa3736b0514bc$export$6ccd1735166caad9).defineCustomElement();\n\n\nexport {$862aa3736b0514bc$export$6ccd1735166caad9 as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","import { FilesDropzone } from './files-dropzone.js';\n\nFilesDropzone.defineCustomElement();\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nimport { isValidFile } from './utils/is-valid-file.js';\nimport { getFilesFromEvent } from './utils/files-selector.js';\n\nconst COMPONENT_NAME = 'files-dropzone';\nconst TOO_MANY_FILES = 'TOO_MANY_FILES';\nconst FILE_TOO_LARGE = 'FILE_TOO_LARGE';\nconst FILE_TOO_SMALL = 'FILE_TOO_SMALL';\nconst INVALID_MIME_TYPE = 'INVALID_MIME_TYPE';\nconst template = document.createElement('template');\n\nconst styles = /* css */`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */\nclass FilesDropzone extends HTMLElement {\n /** @type {Nullable} */\n #fileInput = null;\n\n /** @type {Nullable} */\n #dropzoneEl = null;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */(this.shadowRoot.getElementById('fileInput'));\n this.#dropzoneEl = this.shadowRoot.getElementById('dropzoneEl');\n }\n }\n\n static get observedAttributes() {\n return ['accept', 'disabled', 'multiple', 'no-keyboard'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'accept' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.accept = this.accept;\n }\n\n if (name === 'disabled' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n\n if (this.disabled) {\n this.#dropzoneEl?.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl?.setAttribute('tabindex', '0');\n }\n }\n\n if (name === 'multiple' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.multiple = this.multiple;\n }\n\n if (name === 'no-keyboard' && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) {\n this.#dropzoneEl.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('accept');\n this.#upgradeProperty('disabled');\n this.#upgradeProperty('maxFiles');\n this.#upgradeProperty('maxSize');\n this.#upgradeProperty('minSize');\n this.#upgradeProperty('multiple');\n this.#upgradeProperty('noClick');\n this.#upgradeProperty('noDrag');\n this.#upgradeProperty('noKeyboard');\n this.#upgradeProperty('autoFocus');\n this.#upgradeProperty('noStyle');\n\n this.#fileInput?.addEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.addEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.addEventListener('click', this.#handleClick);\n this.#dropzoneEl?.addEventListener('keyup', this.#handleKeyUp);\n\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#fileInput?.removeEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.removeEventListener('click', this.#handleClick);\n this.#dropzoneEl?.removeEventListener('keyup', this.#handleKeyUp);\n }\n\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */\n get accept() {\n return this.getAttribute('accept') || '';\n }\n\n set accept(value) {\n this.setAttribute('accept', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */\n get maxFiles() {\n const num = Number(this.getAttribute('max-files')) || 0;\n\n if (num <= 0) {\n return Infinity;\n }\n\n return Math.floor(Math.abs(num));\n }\n\n set maxFiles(value) {\n this.setAttribute('max-files', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */\n get maxSize() {\n const value = this.getAttribute('max-size');\n\n if (value === null) {\n return Infinity;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? Infinity : num;\n }\n\n set maxSize(value) {\n this.setAttribute('max-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */\n get minSize() {\n const value = this.getAttribute('min-size');\n\n if (value === null) {\n return 0;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? 0 : num;\n }\n\n set minSize(value) {\n this.setAttribute('min-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */\n get multiple() {\n return this.hasAttribute('multiple');\n }\n\n set multiple(value) {\n this.toggleAttribute('multiple', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */\n get noClick() {\n return this.hasAttribute('no-click');\n }\n\n set noClick(value) {\n this.toggleAttribute('no-click', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */\n get noDrag() {\n return this.hasAttribute('no-drag');\n }\n\n set noDrag(value) {\n this.toggleAttribute('no-drag', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */\n get noKeyboard() {\n return this.hasAttribute('no-keyboard');\n }\n\n set noKeyboard(value) {\n this.toggleAttribute('no-keyboard', !!value);\n }\n\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */\n get autoFocus() {\n return this.hasAttribute('auto-focus');\n }\n\n set autoFocus(value) {\n this.toggleAttribute('auto-focus', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */\n get noStyle() {\n return this.hasAttribute('no-style');\n }\n\n set noStyle(value) {\n this.toggleAttribute('no-style', !!value);\n }\n\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */\n #handleFileInputChange = async evt => {\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the dragenter event of the dropzone.\n */\n #handleDragEnter = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDragOver = evt => {\n evt.preventDefault();\n\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = 'none';\n return;\n }\n\n evt.dataTransfer.dropEffect = 'copy';\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add('dropzone--dragover');\n this.#dropzoneEl.part.add('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragleave event of the dropzone.\n */\n #handleDragLeave = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDrop = async evt => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n evt.preventDefault();\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the click event of the dropzone.\n */\n #handleClick = () => {\n if (this.disabled || this.noClick) {\n return;\n }\n\n this.#fileInput?.click();\n };\n\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleKeyUp = evt => {\n if (this.disabled || this.noKeyboard) {\n return;\n }\n\n if (evt.key === ' ' || evt.key === 'Enter') {\n this.#fileInput?.click();\n }\n };\n\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */\n #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) {\n return;\n }\n\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) {\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }]\n });\n }\n } else if (this.multiple && filesLength > this.maxFiles) {\n // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? 'files are' : 'file is'} allowed.`\n }]\n });\n }\n } else {\n // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files) {\n const fileHasValidType = isValidFile(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) {\n acceptedFiles.push(file);\n } else {\n const errors = [];\n\n if (!fileHasValidType) {\n errors.push({\n code: INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n }\n\n if (fileExceedsMaxSize) {\n errors.push({\n code: FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n }\n\n if (fileIsSmallerThanMinSize) {\n errors.push({\n code: FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n }\n\n rejectedFiles.push({ file, errors });\n }\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles,\n rejectedFiles\n }\n }));\n\n if (acceptedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles\n }\n }));\n }\n\n if (rejectedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles\n }\n }));\n }\n\n if (this.#fileInput) {\n this.#fileInput.value = this.#fileInput.defaultValue;\n }\n }\n\n /**\n * Opens the file dialog programmatically.\n */\n openFileDialog() {\n if (this.disabled) {\n return;\n }\n\n this.#fileInput?.click();\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, FilesDropzone);\n }\n }\n}\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */\nexport function isValidFile(file, acceptedTypeSpecifiers = '') {\n if (!acceptedTypeSpecifiers) {\n return true;\n }\n\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(',').map(v => v.trim()).filter(Boolean))\n ];\n\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, '');\n\n for (const validType of acceptedMimeTypesList) {\n if (validType.charAt(0) === '.') {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, '')) {\n return true;\n }\n } else {\n if (fileMimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n}\n","// @ts-check\n\n/**\n * A map of common file extensions and their associated MIME types.\n */\nconst COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['jxl', 'image/jxl'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['markdown', 'text/markdown'],\n ['md', 'text/markdown'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */\nconst toFileWithMimeType = file => {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const extension = (name.split('.').pop() || '').toLowerCase();\n const type = COMMON_MIME_TYPES.get(extension);\n\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n};\n\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */\nconst toFileWithPath = (file, path) => {\n const fileWithMimeType = toFileWithMimeType(file);\n\n // @ts-ignore\n if (typeof fileWithMimeType.path !== 'string') {\n const { webkitRelativePath } = file;\n\n Object.defineProperty(fileWithMimeType, 'path', {\n value: typeof path === 'string' ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return fileWithMimeType;\n};\n\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readEntriesPromise = async directoryReader => {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n};\n\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readAllDirectoryEntries = async directoryReader => {\n const entries = [];\n let readEntries = await readEntriesPromise(directoryReader);\n\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n\n return entries;\n};\n\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */\nconst getFileFromFileEntry = fileEntry => {\n return new Promise((resolve, reject) => {\n fileEntry.file(file => resolve(toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromDataTransferItemList = async dataTransferItemList => {\n const files = [];\n\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n\n for (const item of dataTransferItemList) {\n if (item.kind !== 'file') {\n // Ignore non-file items, such as links.\n continue;\n }\n\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n\n queue.push(entry);\n }\n\n while (queue.length > 0) {\n const entry = queue.shift();\n\n if (!entry) {\n continue;\n } else if (entry.isFile) {\n const file = await getFileFromFileEntry(entry);\n\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(file);\n }\n } else if (entry.isDirectory) {\n queue.push(...await readAllDirectoryEntries(entry.createReader()));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromFileList = async fileList => {\n const files = [];\n\n for (const file of fileList) {\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(toFileWithPath(file));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from an event.\n * This function supports both `drop` and `change` events.\n *\n * @param {*} evt - The event to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nexport const getFilesFromEvent = async evt => {\n if (evt.dataTransfer) {\n return evt.dataTransfer.items\n ? await getFilesFromDataTransferItemList(evt.dataTransfer.items)\n : await getFilesFromFileList(evt.dataTransfer.files);\n }\n\n return await getFilesFromFileList(evt.target.files);\n};\n","/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */\nexport const arrayRemove = (array, ...indexes) => {\n if (!Array.isArray(array)) {\n throw new TypeError('Expected an array for first argument');\n }\n\n return array.filter((_, i) => indexes.indexOf(i) === -1);\n};\n","/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */\nconst uid = (prefix = '', suffix = '') => {\n const prefixString = typeof prefix === 'string' && prefix !== '' ? prefix + '-' : '';\n const suffixString = typeof suffix === 'string' && suffix !== '' ? '-' + suffix : '';\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n\n return `${prefixString}${randomString}${suffixString}`;\n};\n\nexport { uid };\n","export const ACCEPTED_MIME_TYPES = ['image/jpg', 'image/jpeg', 'image/png', 'image/apng', 'image/gif', 'image/webp', 'image/avif'];\n","import AntonRegular from 'url:../assets/fonts/Anton/Anton-Regular.ttf';\nimport OswaldRegular from 'url:../assets/fonts/Oswald/Oswald-Regular.ttf';\nimport OswaldBold from 'url:../assets/fonts/Oswald/Oswald-Bold.ttf';\nimport RobotoRegular from 'url:../assets/fonts/Roboto/Roboto-Regular.ttf';\nimport RobotoBold from 'url:../assets/fonts/Roboto/Roboto-Bold.ttf';\nimport RobotoCondensedRegular from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Regular.ttf';\nimport RobotoCondensedBold from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Bold.ttf';\nimport CourierPrimeRegular from 'url:../assets/fonts/CourierPrime/CourierPrime-Regular.ttf';\nimport CourierPrimeBold from 'url:../assets/fonts/CourierPrime/CourierPrime-Bold.ttf';\nimport OpenSansRegular from 'url:../assets/fonts/OpenSans/OpenSans-Regular.ttf';\nimport OpenSansBold from 'url:../assets/fonts/OpenSans/OpenSans-Bold.ttf';\n\nexport const customFonts = [\n { name: 'Anton', label: 'Anton', path: AntonRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Regular', label: 'Oswald', path: OswaldRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Bold', label: 'Oswald Bold', path: OswaldBold, style: 'normal', weight: '700' },\n { name: 'Roboto-Regular', label: 'Roboto', path: RobotoRegular, style: 'normal', weight: '400' },\n { name: 'Roboto-Bold', label: 'Roboto Bold', path: RobotoBold, style: 'normal', weight: '700' },\n { name: 'RobotoCondensed-Regular', label: 'Roboto Condensed', path: RobotoCondensedRegular, style: 'normal', weight: '400' },\n { name: 'RobotoCondensed-Bold', label: 'Roboto Condensed Bold', path: RobotoCondensedBold, style: 'normal', weight: '700' },\n { name: 'CourierPrime-Regular', label: 'Courier Prime', path: CourierPrimeRegular, style: 'normal', weight: '400' },\n { name: 'CourierPrime-Bold', label: 'Courier Prime Bold', path: CourierPrimeBold, style: 'normal', weight: '700' },\n { name: 'OpenSans-Regular', label: 'Open Sans', path: OpenSansRegular, style: 'normal', weight: '400' },\n { name: 'OpenSans-Bold', label: 'Open Sans Bold', path: OpenSansBold, style: 'normal', weight: '400' }\n];\n\nexport const loadCustomFont = async (name, path, options = {}) => {\n try {\n const font = new FontFace(name, `url(${path})`, { ...options });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Anton-Regular.e58ab3fe.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Oswald-Regular.89ec7d89.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Oswald-Bold.0f6a7ca6.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Roboto-Regular.ca197847.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Roboto-Bold.fdb9b54a.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"RobotoCondensed-Regular.d585f5c7.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"RobotoCondensed-Bold.e1f96d4b.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"CourierPrime-Regular.3a25a501.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"CourierPrime-Bold.3d6bf689.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"OpenSans-Regular.edf9e01b.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"OpenSans-Bold.8fceb72b.ttf\";","import { ACCEPTED_MIME_TYPES } from './constants.js';\n\nexport const fileFromUrl = async (options = {}) => {\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || '';\n\n if (!ACCEPTED_MIME_TYPES.includes(mimeType)) {\n throw new Error(`This is not an accepted image format. Accepted MIME types are: ${ACCEPTED_MIME_TYPES.join(', ')}`);\n }\n\n return new File([blob], options.filename || '', blob);\n};\n","const errorsContainer = document.getElementById('errorsContainer');\n\nconst hideError = evt => {\n const target = evt.currentTarget;\n target.removeEventListener('click', hideError);\n errorsContainer.removeChild(target.parentNode);\n};\n\nexport const toastAlert = (message = '', type = 'info') => {\n const types = ['info', 'warning', 'danger'];\n\n if (!types.includes(type)) {\n type = 'info';\n }\n\n const template = /* html */`\n ${message}\n \n `;\n\n const div = document.createElement('div');\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector('button').addEventListener('click', hideError);\n errorsContainer.appendChild(div);\n setTimeout(() => div.classList.add('show'), 100);\n};\n","import { customFonts } from './custom-fonts.js';\n\nexport const createTextBox = (index, data = {}) => {\n const inputTemplate = /* html */`\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n\n const fragment = document.createDocumentFragment();\n const div = document.createElement('div');\n\n div.className = 'bg-light border shadow-sm mb-3 rounded';\n div.setAttribute('data-section', 'textBox');\n div.setAttribute('data-index', index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n\n return fragment.appendChild(div);\n};\n","export const drawCanvas = (image, canvas, ctx, textOptions = []) => {\n if (image == null) {\n return;\n }\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (typeof image === 'string') { // Assume it's a color\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n }\n\n textOptions.forEach(function (item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n\n const multiplier = index + 1;\n const lineHeight = ctx.measureText('M').width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split('\\n');\n\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index) => ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else {\n textLines.forEach((text, index) => {\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n }\n\n ctx.restore();\n });\n};"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","$94933cc6427541bd$export$c37129e465f64ef0","navigator","canShare","$0380ce8f1f064ccc$export$6503ec6e8aabbaf","$0380ce8f1f064ccc$var$mapping","Map","baseUrl","manifest","i","length","path","$7dd1ddf6834435ca$export$bdfd709ae4826697","$7dd1ddf6834435ca$var$bundleURL","value","$7dd1ddf6834435ca$var$getBundleURL","matches","stack","match","replace","getBundleURL","JSON","parse","$4f74a8126e204146$export$30b344bef3e55b67","$4f74a8126e204146$var$t","$4f74a8126e204146$var$e","document","createElement","innerHTML","HTMLElement","t","constructor","shadowRoot","attachShadow","mode","delegatesFocus","appendChild","content","cloneNode","querySelector","observedAttributes","attributeChangedCallback","toggleAttribute","disabled","setAttribute","toString","part","contains","toggle","connectedCallback","r","addEventListener","disconnectedCallback","removeEventListener","hasAttribute","shareUrl","getAttribute","shareTitle","shareText","shareFiles","Array","isArray","share","url","title","text","files","dispatchEvent","CustomEvent","bubbles","composed","detail","shareData","name","error","preventDefault","target","nodeName","assignedElements","flatten","find","prototype","hasOwnProperty","defineCustomElement","customElements","define","$636b0cf1ed0b9f88$export$cc30a98fe3890794","$636b0cf1ed0b9f88$var$t","Number","isNaN","Math","min","max","$636b0cf1ed0b9f88$var$e","$636b0cf1ed0b9f88$var$i","$636b0cf1ed0b9f88$var$o","o","l","getSupportedConstraints","isConnected","getTrackCapabilities","getTrackSettings","u","includes","facingMode","stopVideoStream","startVideoStream","cameraResolution","trim","split","map","width","height","pan","h","tilt","zoom","d","getElementById","c","m","p","g","b","f","isSupported","message","autoPlay","noImage","loading","calculateFileSize","capture","play","then","video","catch","finally","removeAttribute","from","childNodes","forEach","remove","getVideoTracks","applyConstraints","advanced","ideal","audio","mediaDevices","getUserMedia","srcObject","hidden","stop","getContext","videoWidth","videoHeight","drawImage","toDataURL","Image","src","dataURI","fetch","blob","size","getCapabilities","getSettings","$4da30046ce6d9325$export$32589115725b904b","$4da30046ce6d9325$var$e","open","showModal","body","style","overflowY","element","close","noHeader","classList","noAnimations","noCloseButton","clearTimeout","staticBackdrop","fullscreen","add","setTimeout","defaultPrevented","currentTarget","assignedNodes","cancelable","reason","show","hide","$7aad62ebc3d6fae8$export$6ccd1735166caad9","$7aad62ebc3d6fae8$var$e","$7aad62ebc3d6fae8$var$t","$7aad62ebc3d6fae8$var$o","lastIndexOf","type","pop","toLowerCase","writable","$7aad62ebc3d6fae8$var$i","webkitRelativePath","$7aad62ebc3d6fae8$var$r","Promise","readEntries","$7aad62ebc3d6fae8$var$a","push","$7aad62ebc3d6fae8$var$n","file","fullPath","$7aad62ebc3d6fae8$var$s","kind","getAsEntry","webkitGetAsEntry","shift","isFile","indexOf","isDirectory","createReader","$7aad62ebc3d6fae8$var$d","$7aad62ebc3d6fae8$var$l","dataTransfer","items","$7aad62ebc3d6fae8$var$p","$7aad62ebc3d6fae8$var$c","$7aad62ebc3d6fae8$var$h","$7aad62ebc3d6fae8$var$u","accept","multiple","noKeyboard","autoFocus","focus","maxFiles","floor","abs","maxSize","minSize","noClick","noDrag","noStyle","Event","dropEffect","click","key","errors","Set","filter","Boolean","charAt","test","acceptedFiles","rejectedFiles","defaultValue","openFileDialog","$5742c9e143620cb1$export$30a014203d0d7e4f","array","indexes","TypeError","_","$21c3f3a8dccfa4fd$export$e2a22331486dcca0","prefix","suffix","randomString","random","substring","$33dea9d9a6da4c9a$export$63e7bed68b07a85c","$b9a1dffffdf320f2$exports","$6f8f0ad93b4f4fec$exports","$60f12aeb358e1d01$exports","$b312cc3e2ac443c7$exports","$481315e8ee95f8f9$exports","$7cee0a691e2711a6$exports","$12b7043e62e67366$exports","$f224edc54658ebde$exports","$33ce2f42587a9c55$exports","$1375393a097acb0e$exports","$728f6ce83c7b6e27$exports","$055531bbd0af154c$export$6874249d87f2602a","label","weight","$055531bbd0af154c$export$59eceaef0c7797b2","options","font","FontFace","load","fonts","console","$008970865eefc93d$export$6539e087749cf9d3","res","mimeType","join","File","filename","$166cfb2484b08c80$var$errorsContainer","$166cfb2484b08c80$var$hideError","evt","removeChild","parentNode","$166cfb2484b08c80$export$af04143326425dbd","types","template","div","className","$50a37fdc18d479c2$export$293a4b86a6fe2398","index","data","inputTemplate","fillColor","shadowColor","_isSettingsOpen","fontSize","shadowBlur","rotate","offsetY","offsetX","fragment","createDocumentFragment","textAlign","checked","allCaps","$d346fdc99aed49b3$export$e653a2de0f3a8b89","image","canvas","ctx","textOptions","clearRect","fillStyle","fillRect","item","fontWeight","multiplier","lineHeight","measureText","xPos","textLines","toUpperCase","save","shadowOffsetX","shadowOffsetY","translate","PI","fillText","restore","$44ae6d9db4eaca0f$var$videoModal","$44ae6d9db4eaca0f$var$downloadModal","$44ae6d9db4eaca0f$var$canvas","$44ae6d9db4eaca0f$var$dropzoneEl","$44ae6d9db4eaca0f$var$instructionsEl","$44ae6d9db4eaca0f$var$ctx","$44ae6d9db4eaca0f$var$imageUploadMethodSelect","$44ae6d9db4eaca0f$var$fileSelectBtn","$44ae6d9db4eaca0f$var$imageUrlForm","$44ae6d9db4eaca0f$var$addTextboxBtn","$44ae6d9db4eaca0f$var$inputsContainer","$44ae6d9db4eaca0f$var$generateMemeBtn","$44ae6d9db4eaca0f$var$openVideoModalBtn","$44ae6d9db4eaca0f$var$downloadMemeBtn","$44ae6d9db4eaca0f$var$downloadMemePreview","$44ae6d9db4eaca0f$var$webShareComponent","$44ae6d9db4eaca0f$var$galleryEl","$44ae6d9db4eaca0f$var$gallerySearchEl","$44ae6d9db4eaca0f$var$galleryNoResultsEl","$44ae6d9db4eaca0f$var$solidColorForm","$44ae6d9db4eaca0f$var$uploadMethodEls","querySelectorAll","$44ae6d9db4eaca0f$var$selectedImage","$44ae6d9db4eaca0f$var$reqAnimFrame","$44ae6d9db4eaca0f$var$defaultTextOptions","$44ae6d9db4eaca0f$var$textOptions","$44ae6d9db4eaca0f$var$generateMeme","dataUrl","downloadLink","download","href","$44ae6d9db4eaca0f$var$onImageLoaded","MAX_WIDTH","MAX_HEIGHT","$44ae6d9db4eaca0f$var$handleFileSelect","reader","FileReader","result","readAsDataURL","$44ae6d9db4eaca0f$var$handleTextPropChange","prop","$44ae6d9db4eaca0f$var$handleImageUploadFromURL","form","submitButton","imageUrl","$44ae6d9db4eaca0f$var$moveText","offsetDir","sign","textBoxSection","offsetYInput","offsetXInput","requestAnimationFrame","$44ae6d9db4eaca0f$var$handleGalleryClick","button","closest","img","alt","newTextBox","textBoxIndex","textBoxEls","el","settingsEl","confirm","isOffsetYButton","isOffsetXButton","cancelAnimationFrame","query","galleryItems","capturePhotoComponent","$442be162a818aed4$export$c37129e465f64ef0","isWebShareSupported","$e179325634270afd$export$30b344bef3e55b67","$e179325634270afd$var$styles","$e179325634270afd$var$template","buttonSlot","buttonEl","getButton","oldValue","newValue","upgradeProperty","handleSlotChange","handleClick","instance","elementName","WebShare","$c290816263f90981$export$cc30a98fe3890794","$02ad8beec419df62$export$7d15b64cf5a3a4c4","lower","upper","$c290816263f90981$var$COMPONENT_NAME","$c290816263f90981$var$styles","$c290816263f90981$var$template","supportedConstraints","stream","canvasElement","outputElement","videoElement","captureButtonSlot","captureButton","facingModeButtonSlot","facingModeButton","trackCapabilities","trackSettings","emptyOutputElement","isValidFacingMode","x","widthInAllowedRange","heightInAllowedRange","panInAllowedRange","applyPTZ","tiltInAllowedRange","zoomInAllowedRange","getCaptureButton","getFacingModeButton","onVideoLoadedMetaData","onCaptureButtonSlotChange","onCapturePhotoButtonClick","onFacingModeButtonSlotChange","onFacingModeButtonClick","node","constraintName","constraintValue","track","constraints","eventDetail","CapturePhoto","$180b6dcf923bafc7$export$32589115725b904b","$180b6dcf923bafc7$var$template","dialogEl","footerSlotEl","pulseAnimationTimeout","headerEl","closeBtnEl","handleDialogClick","handleDialogClose","handleDialogCancel","handleCloseButtonClick","handleFooterSlotChange","applyPulseEffectOnDialog","requestCloseEvent","createRequestCloseEvent","footerEl","footerSlotNodes","hasFooterSlotNodes","ModalElement","$862aa3736b0514bc$export$6ccd1735166caad9","$f31161edf38949e9$var$COMMON_MIME_TYPES","$f31161edf38949e9$var$FILES_TO_IGNORE","$f31161edf38949e9$var$toFileWithMimeType","hasExtension","extension","$f31161edf38949e9$var$toFileWithPath","fileWithMimeType","$f31161edf38949e9$var$readEntriesPromise","directoryReader","resolve","reject","$f31161edf38949e9$var$readAllDirectoryEntries","entries","$f31161edf38949e9$var$getFileFromFileEntry","fileEntry","$f31161edf38949e9$var$getFilesFromDataTransferItemList","dataTransferItemList","queue","entry","$f31161edf38949e9$var$getFilesFromFileList","fileList","$f31161edf38949e9$export$6d52664cd15c442","$862aa3736b0514bc$var$COMPONENT_NAME","$862aa3736b0514bc$var$TOO_MANY_FILES","$862aa3736b0514bc$var$template","$862aa3736b0514bc$var$styles","fileInput","dropzoneEl","handleFileInputChange","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleKeyUp","num","Infinity","handleFilesSelect","filesLength","fileHasValidType","acceptedTypeSpecifiers","acceptedMimeTypesList","fileMimeType","baseMimeType","validType","fileExceedsMaxSize","fileIsSmallerThanMinSize","FilesDropzone"],"version":3,"file":"index.5ae9312f.js.map"} \ No newline at end of file diff --git a/docs/index.5ae9312f.js b/docs/index.9d0cb1f2.js similarity index 99% rename from docs/index.5ae9312f.js rename to docs/index.9d0cb1f2.js index 8706f90..3998975 100644 --- a/docs/index.5ae9312f.js +++ b/docs/index.9d0cb1f2.js @@ -1,4 +1,4 @@ -!function(){function t(t,e,o,i){Object.defineProperty(t,e,{get:o,set:i,enumerable:!0,configurable:!0})}function e(t){return t&&t.__esModule?t.default:t}var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i={},a={},n=o.parcelRequire5078;null==n&&((n=function(t){if(t in i)return i[t].exports;if(t in a){var e=a[t];delete a[t];var o={id:t,exports:{}};return i[t]=o,e.call(o.exports,o,o.exports),o.exports}var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(t,e){a[t]=e},o.parcelRequire5078=n);var s=n.register;function r(t){return null!==t&&"object"==typeof t?"share"in navigator&&"canShare"in navigator&&navigator.canShare(t):"share"in navigator}s("iE7OH",function(e,o){t(e.exports,"register",function(){return i},function(t){return i=t});var i,a=new Map;i=function(t,e){for(var o=0;o
-
- - +
+ +
`,i=document.createDocumentFragment(),a=document.createElement("div");return a.className="bg-light border shadow-sm mb-3 rounded",a.setAttribute("data-section","textBox"),a.setAttribute("data-index",t),a.innerHTML=o,a.querySelector('[data-input="font"]').value=e.font,a.querySelector('[data-input="textAlign"]').value=e.textAlign,a.querySelector('[data-input="allCaps"]').checked=e.allCaps,i.appendChild(a)},tt=(t,e,o,i=[])=>{null!=t&&(o.clearRect(0,0,e.width,e.height),"string"==typeof t?(o.fillStyle=t,o.fillRect(0,0,e.width,e.height)):o.drawImage(t,0,0,e.width,e.height),i.forEach(function(t,i){o.font=`${t.fontWeight} ${t.fontSize}px ${t.font}`;let a=i+1,n=o.measureText("M").width+t.fontSize/2,s=e.width/2,r=t.shadowBlur,l=(!0===t.allCaps?t.text.toUpperCase():t.text).split("\n");o.fillStyle=t.fillColor,o.textAlign=t.textAlign,o.save(),0!==r&&(o.shadowOffsetX=0,o.shadowOffsetY=0,o.shadowBlur=r,o.shadowColor=t.shadowColor),t.rotate?(o.translate(s+t.offsetX,n*a+t.offsetY),o.rotate(t.rotate*Math.PI/180),l.forEach((t,e)=>o.fillText(t,0,e*n)),o.rotate(-(t.rotate*Math.PI/180)),o.translate(-(s+t.offsetX),-(n*a+t.offsetY))):l.forEach((e,i)=>{o.fillText(e,s+t.offsetX,i*n+n*a+t.offsetY)}),o.restore()}))},te=document.getElementById("videoModal"),to=document.getElementById("downloadModal"),ti=document.getElementById("canvas"),ta=document.querySelector("files-dropzone"),tn=document.getElementById("instructions"),ts=ti.getContext("2d"),tr=document.getElementById("imageUploadMethodSelect"),tl=document.getElementById("fileSelectBtn"),td=document.getElementById("imageUrlForm"),tc=document.getElementById("addTextboxBtn"),th=document.getElementById("inputsContainer"),tu=document.getElementById("generateMemeBtn"),tp=document.getElementById("openVideoModalBtn"),tm=document.getElementById("downloadMemeBtn"),tb=document.getElementById("downloadMemePreview"),tg=document.querySelector("web-share"),tf=document.getElementById("gallery"),tv=document.getElementById("gallerySearch"),ty=tf.querySelector(".gallery__no-results"),tw=document.getElementById("solidColorForm"),tE=document.querySelectorAll(".upload-method"),tx=null,tA=null,tS={_isSettingsOpen:!1,text:"",fillColor:"#ffffff",shadowColor:"#000000",font:"Anton",fontSize:40,fontWeight:"normal",textAlign:"center",shadowBlur:3,offsetY:0,offsetX:0,rotate:0,allCaps:!0},tk=[{...tS}],tC=async()=>{let t=ti.toDataURL("image/png"),e=t.replace("image/png","image/octet-stream");if(tm.download=`${N("meme")}.png`,tm.href=e,tb.src=e,r())try{let e=await W({url:t,filename:`${N("meme")}.png`,mimeType:"image/png"}).catch(t=>Q(t.message,"danger"));e&&r({files:[e]})&&(tg.shareFiles=[e],tg.hidden=!1)}catch(t){console.error(t)}to.open=!0},tz=t=>{let e=t.target.width,o=t.target.height;e>o?e>800&&(o*=800/e,e=800):o>600&&(e*=600/o,o=600),ti.width=e,ti.height=o,tt(tx=t.target,ti,ts,tk),tu.disabled=!1,ti.hidden=!1,tn.hidden=!0},tL=t=>{if(!t)return;let e=new Image,o=new FileReader;o.addEventListener("load",function(t){let o=t.target.result;e.addEventListener("load",tz),e.src=o}),o.readAsDataURL(t)},t_=(t,e,o)=>{"checkbox"===t.type?tk[e][o]=t.checked:"number"===t.type?tk[e][o]=Number(t.value):tk[e][o]=t.value,tt(tx,ti,ts,tk)},tR=async t=>{t.preventDefault();let e=t.target,o=e.querySelector('button[type="submit"]'),i=e.imageUrl.value;if(i.trim()){o.disabled=!0,o.querySelector(".spinner").hidden=!1,o.querySelector(".label").hidden=!0;try{let t=await W({url:i}).catch(t=>Q(t.message,"danger"));t&&tL(t)}catch(t){Q(`Failed to load image from "${i}".`,"danger")}finally{o.disabled=!1,o.querySelector(".spinner").hidden=!0,o.querySelector(".label").hidden=!1}}},tB=(t,e,o)=>()=>{let i=document.querySelectorAll('[data-section="textBox"]')[o],a=i.querySelector('[data-input="offsetY"]'),n=i.querySelector('[data-input="offsetX"]');"offsetY"===t&&("-"===e&&(tk[o].offsetY-=1),"+"===e&&(tk[o].offsetY+=1),a.value=tk[o].offsetY),"offsetX"===t&&("-"===e&&(tk[o].offsetX-=1),"+"===e&&(tk[o].offsetX+=1),n.value=tk[o].offsetX),tt(tx,ti,ts,tk),tA=requestAnimationFrame(tB(t,e,o))},tT=async t=>{let e=t.target.closest("button");if(!e)return;let o=e.querySelector("img");try{let t=await W({url:o.src}).catch(t=>Q(t.message,"danger"));t&&tL(t)}catch(t){Q(`Failed to load image: "${o.alt}".`,"danger")}};tl.addEventListener("click",()=>{"function"==typeof ta.openFileDialog&&ta.openFileDialog()}),tp.addEventListener("click",()=>{te.open=!0}),tc.addEventListener("click",()=>{let t=Z(tk.length,tS);tk.push({...tS}),th.appendChild(t),t.querySelector('[data-input="text"]').focus()}),tu.addEventListener("click",tC),tm.addEventListener("click",()=>to.open=!1),td.addEventListener("submit",tR),ta.addEventListener("files-dropzone-drop-accepted",t=>{let[e]=t.detail.acceptedFiles;e&&tL(e)}),th.addEventListener("input",t=>{let e;let o=t.target,i=Number(o.closest('[data-section="textBox"]').getAttribute("data-index"));o.matches('[data-input="text"]')?e="text":o.matches('[data-input="fillColor"]')?e="fillColor":o.matches('[data-input="shadowColor"]')?e="shadowColor":o.matches('[data-input="font"]')?e="font":o.matches('[data-input="fontSize"]')?e="fontSize":o.matches('[data-input="fontWeight"]')?e="fontWeight":o.matches('[data-input="textAlign"]')?e="textAlign":o.matches('[data-input="shadowBlur"]')?e="shadowBlur":o.matches('[data-input="offsetY"]')?e="offsetY":o.matches('[data-input="offsetX"]')?e="offsetX":o.matches('[data-input="rotate"]')&&(e="rotate"),e&&t_(o,i,e)}),th.addEventListener("change",t=>{let e;let o=t.target,i=Number(o.closest('[data-section="textBox"]').getAttribute("data-index"));o.matches('[data-input="allCaps"]')&&(e="allCaps"),e&&t_(o,i,e)}),th.addEventListener("click",t=>{let e=t.target;if(e.matches('[data-button="settings"]')){let t=e.closest('[data-section="textBox"]').getAttribute("data-index");document.querySelectorAll('[data-section="textBox"]').forEach((e,o)=>{let i=e.querySelector('[data-section="settings"]');e.getAttribute("data-index")===t?(i.hidden=!i.hidden,tk[o]._isSettingsOpen=!tk[o]._isSettingsOpen):(i.hidden=!0,tk[o]._isSettingsOpen=!1)})}if(e.matches('[data-button="delete-text-box"]')){let t=Number(e.closest('[data-section="textBox"]').getAttribute("data-index")),o=!0;tk[t].text.trim()&&(o=window.confirm("Are you sure you want to remove this text box?")),o&&(tk=F(tk,t),th.querySelectorAll('[data-section="textBox"]').forEach(t=>t.remove()),tk.forEach((t,e)=>th.appendChild(Z(e,t))),tt(tx,ti,ts,tk))}}),th.addEventListener("pointerdown",t=>{let e=t.target;if(!e.closest('[data-section="textBox"]'))return;let o=Number(e.closest('[data-section="textBox"]').getAttribute("data-index")),i=e.matches('[data-move="offsetY"]'),a=e.matches('[data-move="offsetX"]');if(!i&&!a)return;let n=e.getAttribute("data-move"),s=e.getAttribute("data-sign");tA=requestAnimationFrame(tB(n,s,o))}),th.addEventListener("pointerup",t=>{let e=t.target,o=e.matches('[data-move="offsetY"]'),i=e.matches('[data-move="offsetX"]');(o||i)&&(cancelAnimationFrame(tA),tA=null)}),th.addEventListener("pointerout",t=>{let e=t.target,o=e.matches('[data-move="offsetY"]'),i=e.matches('[data-move="offsetX"]');(o||i)&&tA&&(cancelAnimationFrame(tA),tA=null)}),tr.addEventListener("change",t=>{tE.forEach(e=>e.hidden=e.id!==t.target.value)}),tf.addEventListener("click",tT),tv.addEventListener("input",t=>{let e=t.target.value.toLowerCase().trim();tf.querySelectorAll("button").forEach(t=>{let o=(t.querySelector("img").getAttribute("alt")||"").toLowerCase();t.hidden=!o.includes(e)}),ty.hidden=!!tf.querySelector("button:not([hidden])")}),tw.addEventListener("input",t=>{t.target===tw.canvasColor&&(tx=t.target.value),"string"==typeof tx&&(ti.width=Number(tw.canvasWidth.value)||600,ti.height=Number(tw.canvasHeight.value)||400,tt(tx,ti,ts,tk),tu.disabled=!1,ti.hidden=!1,tn.hidden=!0)}),document.addEventListener("web-share:error",()=>{to.open=!1,Q("There was an error while trying to share your meme.","danger")}),document.addEventListener("capture-photo:error",t=>{console.error(t.detail.error),Q(t.detail.error.message,"danger")}),document.addEventListener("capture-photo:success",t=>{te.open=!1;let e=new Image;e.addEventListener("load",tz),e.src=t.detail.dataURI}),document.addEventListener("me-open",t=>{if("videoModal"===t.target.id){let t=te.querySelector("capture-photo");t&&"function"==typeof t.startVideoStream&&t.startVideoStream()}}),document.addEventListener("me-close",t=>{if("videoModal"===t.target.id){let t=te.querySelector("capture-photo");t&&"function"==typeof t.stopVideoStream&&t.stopVideoStream()}}),tf.querySelectorAll("button > img")?.forEach(t=>{t.setAttribute("title",t.getAttribute("alt"))}),tk.forEach((t,e)=>{th.appendChild(Z(e,t))}),ta.accept=$,X.forEach(({name:t,path:e,style:o,weight:i})=>{J(t,e,{style:o,weight:i})})}(); -//# sourceMappingURL=index.5ae9312f.js.map +//# sourceMappingURL=index.9d0cb1f2.js.map diff --git a/docs/index.9d0cb1f2.js.map b/docs/index.9d0cb1f2.js.map new file mode 100644 index 0000000..42c2efe --- /dev/null +++ b/docs/index.9d0cb1f2.js.map @@ -0,0 +1 @@ +{"mappings":"C,A,W,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,COQA,SAAS,EAAoB,CAAO,EAAA,OAClB,OAAZ,GAAoB,UAAA,OAAO,EACtB,UAAW,WAAa,aAAc,WAAa,UAAU,QAAA,CAAS,GAGxE,UAAW,SACpB,C,E,Q,S,C,C,C,E,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,GNZA,IAgBA,EAhBI,EAAU,IAAI,IAgBlB,EAfA,SAAkB,CAAO,CAAE,CAAQ,EACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,MAAM,CAAG,EAAG,GAAK,EAC5C,EAAQ,GAAG,CAAC,CAAQ,CAAC,EAAE,CAAE,CACvB,QAAS,EACT,KAAM,CAAQ,CAAC,EAAI,EAAE,AACvB,EAEJ,C,G,E,Q,S,C,C,C,E,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,GCRA,IAkCA,EAlCI,EAAY,CAAC,EAkCjB,EAjCA,SAA4B,CAAE,EAC5B,IAAI,EAAQ,CAAS,CAAC,EAAG,CAKzB,OAJK,IACH,EAAQ,AAKZ,WACE,GAAI,CACF,MAAM,AAAI,OACZ,CAAE,MAAO,EAAK,CACZ,IAAI,EAAW,AAAA,CAAA,GAAK,EAAI,KAAI,AAAJ,EAAO,KAAK,CAAC,oEACrC,GAAI,EAGF,MAMI,AAAA,CAAA,GANc,CAAO,CAAC,EAAE,AAMnB,EAAK,OAAO,CAAC,0EAA2E,MAAQ,GAJ7G,CACA,MAAO,GACT,IAhBI,CAAS,CAAC,EAAG,CAAG,GAEX,CACT,C,GCVA,AAAA,EAAA,SAAA,QAAA,CAA8C,AAAA,EAAA,SAAA,YAAA,CAA6C,SAAS,KAAK,KAAK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","sources":["","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/helpers/bundle-url.js","node_modules/@parcel/runtime-js/lib/runtime-0f4aac860c093f90.js","src/js/index.js","node_modules/@georapbox/web-share-element/dist/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/","node_modules/@georapbox/web-share-element/dist/src/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share.js","node_modules/@georapbox/capture-photo-element/dist/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo.js","node_modules/@georapbox/capture-photo-element/dist/src/utils/clamp.js","node_modules/@georapbox/modal-element/dist/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/","node_modules/@georapbox/modal-element/dist/src/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/src/modal-element.js","node_modules/@georapbox/files-dropzone-element/dist/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/is-valid-file.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/files-selector.js","src/js/utils/array-remove.js","src/js/utils/uid.js","src/js/constants.js","src/js/custom-fonts.js","node_modules/@parcel/runtime-js/lib/runtime-a1c2e9b10dbbde58.js","node_modules/@parcel/runtime-js/lib/runtime-d90b112f208fab9c.js","node_modules/@parcel/runtime-js/lib/runtime-8863d03da459b1d2.js","node_modules/@parcel/runtime-js/lib/runtime-7530982a5c34e2a8.js","node_modules/@parcel/runtime-js/lib/runtime-f6db6103a1a0ae20.js","node_modules/@parcel/runtime-js/lib/runtime-d668b18f4657778e.js","node_modules/@parcel/runtime-js/lib/runtime-9d4df09940169c58.js","node_modules/@parcel/runtime-js/lib/runtime-df220659d471ec24.js","node_modules/@parcel/runtime-js/lib/runtime-935f2ad29b2ba54a.js","node_modules/@parcel/runtime-js/lib/runtime-23720a89f55d1035.js","node_modules/@parcel/runtime-js/lib/runtime-180dcf6211e1516d.js","src/js/file-from-url.js","src/js/toast-alert.js","src/js/create-text-box.js","src/js/draw-canvas.js"],"sourcesContent":["(function () {\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire5078\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire5078\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"iE7OH\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $0380ce8f1f064ccc$export$6503ec6e8aabbaf; }, function (v) { return $0380ce8f1f064ccc$export$6503ec6e8aabbaf = v; });\nvar $0380ce8f1f064ccc$export$6503ec6e8aabbaf;\nvar $0380ce8f1f064ccc$export$f7ad0328861e2f03;\n\"use strict\";\nvar $0380ce8f1f064ccc$var$mapping = new Map();\nfunction $0380ce8f1f064ccc$var$register(baseUrl, manifest) {\n for(var i = 0; i < manifest.length - 1; i += 2)$0380ce8f1f064ccc$var$mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n}\nfunction $0380ce8f1f064ccc$var$resolve(id) {\n var resolved = $0380ce8f1f064ccc$var$mapping.get(id);\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\n$0380ce8f1f064ccc$export$6503ec6e8aabbaf = $0380ce8f1f064ccc$var$register;\n$0380ce8f1f064ccc$export$f7ad0328861e2f03 = $0380ce8f1f064ccc$var$resolve;\n\n});\n\nparcelRegister(\"aNJCr\", function(module, exports) {\n\n$parcel$export(module.exports, \"getBundleURL\", function () { return $7dd1ddf6834435ca$export$bdfd709ae4826697; }, function (v) { return $7dd1ddf6834435ca$export$bdfd709ae4826697 = v; });\nvar $7dd1ddf6834435ca$export$bdfd709ae4826697;\nvar $7dd1ddf6834435ca$export$c9e73fbda7da57b6;\nvar $7dd1ddf6834435ca$export$5a759dc7a1cfb72a;\n\"use strict\";\nvar $7dd1ddf6834435ca$var$bundleURL = {};\nfunction $7dd1ddf6834435ca$var$getBundleURLCached(id) {\n var value = $7dd1ddf6834435ca$var$bundleURL[id];\n if (!value) {\n value = $7dd1ddf6834435ca$var$getBundleURL();\n $7dd1ddf6834435ca$var$bundleURL[id] = value;\n }\n return value;\n}\nfunction $7dd1ddf6834435ca$var$getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = (\"\" + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return $7dd1ddf6834435ca$var$getBaseURL(matches[2]);\n }\n return \"/\";\n}\nfunction $7dd1ddf6834435ca$var$getBaseURL(url) {\n return (\"\" + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, \"$1\") + \"/\";\n}\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction $7dd1ddf6834435ca$var$getOrigin(url) {\n var matches = (\"\" + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) throw new Error(\"Origin not found\");\n return matches[0];\n}\n$7dd1ddf6834435ca$export$bdfd709ae4826697 = $7dd1ddf6834435ca$var$getBundleURLCached;\n$7dd1ddf6834435ca$export$c9e73fbda7da57b6 = $7dd1ddf6834435ca$var$getBaseURL;\n$7dd1ddf6834435ca$export$5a759dc7a1cfb72a = $7dd1ddf6834435ca$var$getOrigin;\n\n});\n\nvar $137b868283288b39$exports = {};\n\n\n(parcelRequire(\"iE7OH\")).register((parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\"), JSON.parse('[\"8tAhj\",\"index.9d0cb1f2.js\",\"cmj6F\",\"Anton-Regular.e58ab3fe.ttf\",\"a9OJN\",\"Oswald-Regular.89ec7d89.ttf\",\"jOuj0\",\"Oswald-Bold.0f6a7ca6.ttf\",\"ePq3V\",\"Roboto-Regular.ca197847.ttf\",\"9WQUU\",\"Roboto-Bold.fdb9b54a.ttf\",\"hIywO\",\"RobotoCondensed-Regular.d585f5c7.ttf\",\"ab1rw\",\"RobotoCondensed-Bold.e1f96d4b.ttf\",\"j4ruO\",\"CourierPrime-Regular.3a25a501.ttf\",\"3nnD2\",\"CourierPrime-Bold.3d6bf689.ttf\",\"8fsWK\",\"OpenSans-Regular.edf9e01b.ttf\",\"5JXG6\",\"OpenSans-Bold.8fceb72b.ttf\",\"9FH7D\",\"index.bcbdd9b6.css\"]'));\n\nfunction $94933cc6427541bd$export$c37129e465f64ef0(a) {\n return null !== a && \"object\" == typeof a ? \"share\" in navigator && \"canShare\" in navigator && navigator.canShare(a) : \"share\" in navigator;\n}\n\n\nObject.defineProperty({}, \"WebShare\", {\n get: function() {\n return $4f74a8126e204146$export$30b344bef3e55b67;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $4f74a8126e204146$var$t = `\n :host {\n display: inline-block;\n }\n`, $4f74a8126e204146$var$e = document.createElement(\"template\");\n$4f74a8126e204146$var$e.innerHTML = `\n \n \n`;\nclass $4f74a8126e204146$export$30b344bef3e55b67 extends HTMLElement {\n #t;\n #e;\n #s = [];\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\",\n delegatesFocus: !0\n }).appendChild($4f74a8126e204146$var$e.content.cloneNode(!0)), this.#t = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null, this.#e = this.#i();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n attributeChangedCallback(t, e, s) {\n \"disabled\" === t && e !== s && this.#e && (this.#e.toggleAttribute(\"disabled\", this.disabled), this.#e.setAttribute(\"aria-disabled\", this.disabled.toString()), this.#e.part && this.#e.part.contains(\"button\") && this.#e.part.toggle(\"button--disabled\", this.disabled));\n }\n connectedCallback() {\n this.#r(\"shareUrl\"), this.#r(\"shareTitle\"), this.#r(\"shareText\"), this.#r(\"shareFiles\"), this.#r(\"disabled\"), this.#t?.addEventListener(\"slotchange\", this.#a), this.#e?.addEventListener(\"click\", this.#n);\n }\n disconnectedCallback() {\n this.#t?.removeEventListener(\"slotchange\", this.#a), this.#e?.removeEventListener(\"click\", this.#n);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(t) {\n this.toggleAttribute(\"disabled\", !!t);\n }\n get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(t) {\n this.setAttribute(\"share-url\", t);\n }\n get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(t) {\n this.setAttribute(\"share-title\", t);\n }\n get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(t) {\n this.setAttribute(\"share-text\", t);\n }\n get shareFiles() {\n return this.#s;\n }\n set shareFiles(t) {\n Array.isArray(t) && t.length > 0 && (this.#s = t);\n }\n async share() {\n if (!this.disabled) try {\n let t = {};\n this.shareUrl && (t.url = this.shareUrl), this.shareTitle && (t.title = this.shareTitle), this.shareText && (t.text = this.shareText), Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n }) && (t.files = this.shareFiles), await navigator.share(t), this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: !0,\n composed: !0,\n detail: {\n shareData: t\n }\n }));\n } catch (t) {\n if (t instanceof Error && \"AbortError\" === t.name) {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n #n = (t)=>{\n t.preventDefault(), this.disabled || this.share();\n };\n #a = (t)=>{\n t.target && \"button\" === t.target.name && (this.#e?.removeEventListener(\"click\", this.#n), this.#e = this.#i(), this.#e && (this.#e.addEventListener(\"click\", this.#n), \"BUTTON\" === this.#e.nodeName || this.#e.hasAttribute(\"role\") || this.#e.setAttribute(\"role\", \"button\")));\n };\n #i() {\n return this.#t && this.#t.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"button\" === t.getAttribute(\"slot\")) || null;\n }\n #r(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n static defineCustomElement(t = \"web-share\") {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $4f74a8126e204146$export$30b344bef3e55b67);\n }\n}\n$4f74a8126e204146$export$30b344bef3e55b67.defineCustomElement();\n\n\nObject.defineProperty({}, \"CapturePhoto\", {\n get: function() {\n return $636b0cf1ed0b9f88$export$cc30a98fe3890794;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $636b0cf1ed0b9f88$var$t = (t, e, i)=>(Number.isNaN(e) && (e = 0), Number.isNaN(i) && (i = 0), Math.min(Math.max(t, Math.min(e, i)), Math.max(e, i))), $636b0cf1ed0b9f88$var$e = \"capture-photo\", $636b0cf1ed0b9f88$var$i = `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`, $636b0cf1ed0b9f88$var$o = document.createElement(\"template\");\n$636b0cf1ed0b9f88$var$o.innerHTML = `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\nclass $636b0cf1ed0b9f88$export$cc30a98fe3890794 extends HTMLElement {\n #t = {};\n #e = null;\n #i = null;\n #o = null;\n #n = null;\n #a = null;\n #s = null;\n #r = null;\n #l = null;\n constructor(){\n super(), this.#t = this.getSupportedConstraints(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($636b0cf1ed0b9f88$var$o.content.cloneNode(!0));\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n attributeChangedCallback(t, e, i) {\n if (!this.isConnected) return;\n let o = this.getTrackCapabilities(), n = this.getTrackSettings();\n if (\"no-image\" === t && e !== i && this.#u(), \"facing-mode\" === t && e !== i && \"facingMode\" in this.#t) {\n let t = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n \"facingMode\" in n && t && (this.stopVideoStream(), this.startVideoStream());\n }\n if (\"camera-resolution\" === t && e !== i && \"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [t = 0, e = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n if (t > 0 && e > 0 && \"width\" in o && \"height\" in o) {\n let i = !!(o.width?.min && o.width?.max) && t >= o?.width?.min && t <= o?.width?.max, a = !!(o.height?.min && o.height?.max) && e >= o?.height?.min && e <= o?.height?.max;\n \"width\" in n && \"height\" in n && i && a && (this.stopVideoStream(), this.startVideoStream());\n }\n }\n if (\"pan\" === t && e !== i && \"pan\" in this.#t) {\n let t = !!(\"pan\" in o && o.pan?.min && o.pan?.max) && this.pan >= o.pan.min && this.pan <= o.pan.max;\n \"pan\" in n && \"number\" == typeof this.pan && t && this.#h(\"pan\", this.pan);\n }\n if (\"tilt\" === t && e !== i && \"tilt\" in this.#t) {\n let t = !!(\"tilt\" in o && o.tilt?.min && o.tilt?.max) && this.tilt >= o.tilt.min && this.tilt <= o.tilt.max;\n \"tilt\" in n && \"number\" == typeof this.tilt && t && this.#h(\"tilt\", this.tilt);\n }\n if (\"zoom\" === t && e !== i && \"zoom\" in this.#t) {\n let t = !!(\"zoom\" in o && o.zoom?.min && o.zoom?.max) && this.zoom >= o.zoom.min && this.zoom <= o.zoom.max;\n \"zoom\" in n && \"number\" == typeof this.zoom && t && this.#h(\"zoom\", this.zoom);\n }\n }\n connectedCallback() {\n if (this.#d(\"autpoPlay\"), this.#d(\"noImage\"), this.#d(\"facingMode\"), this.#d(\"cameraResolution\"), this.#d(\"pan\"), this.#d(\"tilt\"), this.#d(\"zoom\"), this.#d(\"calculateFileSize\"), this.#i = this.shadowRoot?.querySelector(\"canvas\") || null, this.#o = this.shadowRoot?.getElementById(\"output\") || null, this.#n = this.shadowRoot?.querySelector(\"video\") || null, this.#a = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null, this.#s = this.#c(), this.#r = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null, this.#l = this.#m(), this.#n?.addEventListener(\"loadedmetadata\", this.#p), this.#a?.addEventListener(\"slotchange\", this.#g), this.#s?.addEventListener(\"click\", this.#b), this.#r?.addEventListener(\"slotchange\", this.#f), this.#l?.addEventListener(\"click\", this.#v), !$636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n this.autoPlay && this.startVideoStream();\n }\n disconnectedCallback() {\n this.stopVideoStream(), this.#l?.removeEventListener(\"click\", this.#v), this.#s?.removeEventListener(\"click\", this.#b), this.#n?.removeEventListener(\"canplay\", this.#p), this.#a?.removeEventListener(\"slotchange\", this.#g), this.#r?.removeEventListener(\"slotchange\", this.#f);\n }\n get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(t) {\n this.toggleAttribute(\"auto-play\", !!t);\n }\n get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(t) {\n this.toggleAttribute(\"no-image\", !!t);\n }\n get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(t) {\n this.setAttribute(\"facing-mode\", t);\n }\n get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(t) {\n this.setAttribute(\"camera-resolution\", t);\n }\n get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(t) {\n this.setAttribute(\"pan\", null != t ? t.toString() : t);\n }\n get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(t) {\n this.setAttribute(\"tilt\", null != t ? t.toString() : t);\n }\n get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(t) {\n this.setAttribute(\"zoom\", null != t ? t.toString() : t);\n }\n get loading() {\n return this.hasAttribute(\"loading\");\n }\n get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(t) {\n this.toggleAttribute(\"calculate-file-size\", !!t);\n }\n #v = (t)=>{\n t.preventDefault(), this.loading || (this.facingMode = \"user\" !== this.facingMode && this.facingMode ? \"user\" : \"environment\");\n };\n #b = (t)=>{\n t.preventDefault(), this.capture();\n };\n #p = (t)=>{\n let i = t.target;\n i.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:video-play`, {\n bubbles: !0,\n composed: !0,\n detail: {\n video: i\n }\n }));\n }).catch((t)=>{\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n #u() {\n this.#o && Array.from(this.#o.childNodes).forEach((t)=>t.remove());\n }\n #h(e, i) {\n if (!this.#e || !e || !i) return;\n let [o] = this.#e.getVideoTracks(), n = this.getTrackCapabilities();\n e in this.getTrackSettings() && o.applyConstraints({\n advanced: [\n {\n [e]: $636b0cf1ed0b9f88$var$t(Number(i), n[e]?.min || 1, n[e]?.max || 1)\n }\n ]\n });\n }\n #g = (t)=>{\n t.target?.name === \"capture-button\" && (this.#s?.removeEventListener(\"click\", this.#b), this.#s = this.#c(), this.#s && (this.#s.addEventListener(\"click\", this.#b), \"BUTTON\" === this.#s.nodeName || this.#s.hasAttribute(\"role\") || this.#s.setAttribute(\"role\", \"button\")));\n };\n #f = (t)=>{\n t.target?.name === \"facing-mode-button\" && (this.#l?.removeEventListener(\"click\", this.#v), this.#l = this.#m(), this.#l && (this.#l.addEventListener(\"click\", this.#v), \"BUTTON\" === this.#l.nodeName || this.#l.hasAttribute(\"role\") || this.#l.setAttribute(\"role\", \"button\")));\n };\n #m() {\n return this.#r && this.#r.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"facing-mode-button\" === t.getAttribute(\"slot\")) || null;\n }\n #c() {\n return this.#a && this.#a.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"capture-button\" === t.getAttribute(\"slot\")) || null;\n }\n #d(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n async startVideoStream() {\n if (!$636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported() || this.#e) return;\n this.setAttribute(\"loading\", \"\");\n let t = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: !0,\n tilt: !0,\n zoom: !0\n },\n audio: !1\n };\n if (\"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [e = 0, i = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n e > 0 && i > 0 && (t.video.width = e, t.video.height = i);\n }\n try {\n this.#e = await navigator.mediaDevices.getUserMedia(t), this.#n && (this.#n.srcObject = this.#e), this.#h(\"pan\", this.pan), this.#h(\"tilt\", this.tilt), this.#h(\"zoom\", this.zoom);\n let e = this.getTrackSettings();\n \"facingMode\" in e && this.#r && (this.#r.hidden = !1);\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n stopVideoStream() {\n if (!this.#n || !this.#e) return;\n let [t] = this.#e.getVideoTracks();\n t?.stop(), this.#n.srcObject = null, this.#e = null;\n }\n async capture() {\n if (!this.loading && this.#i && this.#n) try {\n let t = this.#i.getContext(\"2d\"), i = this.#n.videoWidth, o = this.#n.videoHeight;\n this.#i.width = i, this.#i.height = o, t?.drawImage(this.#n, 0, 0, i, o);\n let n = this.#i.toDataURL(\"image/png\");\n if (\"string\" == typeof n && n.includes(\"data:image\")) {\n if (!this.noImage) {\n let t = new Image;\n t.src = n, t.width = i, t.height = o, t.setAttribute(\"part\", \"output-image\"), this.#u(), this.#o?.appendChild(t);\n }\n let t = {\n dataURI: n,\n width: i,\n height: o\n };\n if (this.calculateFileSize) try {\n let e = await fetch(n), i = (await e.blob()).size;\n i && (t.size = i);\n } catch (t) {}\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:success`, {\n bubbles: !0,\n composed: !0,\n detail: t\n }));\n }\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$636b0cf1ed0b9f88$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n getSupportedConstraints() {\n return $636b0cf1ed0b9f88$export$cc30a98fe3890794.isSupported() && navigator.mediaDevices.getSupportedConstraints() || {};\n }\n getTrackCapabilities() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getCapabilities && t.getCapabilities() || {};\n }\n getTrackSettings() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getSettings && t.getSettings() || {};\n }\n static isSupported() {\n return !!navigator.mediaDevices?.getUserMedia;\n }\n static defineCustomElement(t = $636b0cf1ed0b9f88$var$e) {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $636b0cf1ed0b9f88$export$cc30a98fe3890794);\n }\n}\n$636b0cf1ed0b9f88$export$cc30a98fe3890794.defineCustomElement();\n\n\nObject.defineProperty({}, \"ModalElement\", {\n get: function() {\n return $4da30046ce6d9325$export$32589115725b904b;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $4da30046ce6d9325$var$e = document.createElement(\"template\");\n$4da30046ce6d9325$var$e.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`; /**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ \nclass $4da30046ce6d9325$export$32589115725b904b extends HTMLElement {\n #e = null;\n #t = null;\n #o = void 0;\n constructor(){\n if (super(), !this.shadowRoot) {\n let t = this.attachShadow({\n mode: \"open\"\n });\n t.appendChild($4da30046ce6d9325$var$e.content.cloneNode(!0));\n }\n this.shadowRoot && (this.#e = this.shadowRoot.querySelector(\"dialog\"), this.#t = this.shadowRoot.querySelector('slot[name=\"footer\"]'));\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n if (null !== this.#e) {\n if (\"open\" === e && t !== o && (this.open ? (this.#e.showModal(), document.body && (document.body.style.overflowY = \"hidden\"), this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }))) : this.#e.close()), \"no-header\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__header\");\n null !== e && (e.hidden = this.noHeader);\n }\n if (\"no-animations\" === e && t !== o && this.#e.classList.toggle(\"dialog--no-animations\", this.noAnimations), \"no-close-button\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__close\");\n null !== e && (e.hidden = this.noCloseButton);\n }\n }\n }\n connectedCallback() {\n this.#i(\"open\"), this.#i(\"staticBackdrop\"), this.#i(\"noHeader\"), this.#i(\"noAnimations\"), this.#i(\"noCloseButton\"), this.#i(\"fullscreen\"), this.#e?.addEventListener(\"click\", this.#a), this.#e?.addEventListener(\"close\", this.#l), this.#e?.addEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#n), this.#t?.addEventListener(\"slotchange\", this.#r);\n }\n disconnectedCallback() {\n this.#o && clearTimeout(this.#o), this.#e?.addEventListener(\"click\", this.#a), this.#e?.removeEventListener(\"close\", this.#l), this.#e?.removeEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#n), this.#t?.removeEventListener(\"slotchange\", this.#r);\n }\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(e) {\n e ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n }\n get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(e) {\n e ? this.setAttribute(\"static-backdrop\", \"\") : this.removeAttribute(\"static-backdrop\");\n }\n get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(e) {\n e ? this.setAttribute(\"no-header\", \"\") : this.removeAttribute(\"no-header\");\n }\n get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(e) {\n e ? this.setAttribute(\"no-animations\", \"\") : this.removeAttribute(\"no-animations\");\n }\n get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(e) {\n e ? this.setAttribute(\"no-close-button\", \"\") : this.removeAttribute(\"no-close-button\");\n }\n get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(e) {\n e ? this.setAttribute(\"fullscreen\", \"\") : this.removeAttribute(\"fullscreen\");\n }\n #d() {\n this.#o || (this.#e?.classList.add(\"dialog--pulse\"), this.#o = setTimeout(()=>{\n this.#e?.classList.remove(\"dialog--pulse\"), clearTimeout(this.#o), this.#o = void 0;\n }, 300));\n }\n #l = ()=>{\n // the open property when the dialog is closed by the user.\n this.open = !1, document.body && (document.body.style.overflowY = \"\"), this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }));\n };\n #s = (e)=>{\n let t = this.#c(\"escape-key\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #n = (e)=>{\n let t = this.#c(\"close-button\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #a = (e)=>{\n if (e.target !== e.currentTarget) return;\n let t = this.#c(\"backdrop-click\");\n if (this.dispatchEvent(t), t.defaultPrevented || this.staticBackdrop) {\n this.noAnimations || this.#d();\n return;\n }\n this.#e?.close();\n };\n #r = ()=>{\n if (null === this.#e) return; /** @type {Nullable} */ \n let e = this.#e.querySelector(\".dialog__footer\");\n if (null === e) return;\n let t = this.#t?.assignedNodes(), o = !!t && t.length > 0;\n e.hidden = !o;\n };\n #c(e) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: !0,\n composed: !0,\n cancelable: !0,\n detail: {\n reason: e,\n element: this\n }\n });\n }\n #i(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n show() {\n this.open || (this.open = !0);\n }\n hide() {\n this.open && (this.open = !1);\n }\n static defineCustomElement(e = \"modal-element\") {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $4da30046ce6d9325$export$32589115725b904b);\n }\n}\n$4da30046ce6d9325$export$32589115725b904b.defineCustomElement();\n //# sourceMappingURL=modal-element-defined.js.map\n\n\nObject.defineProperty({}, \"FilesDropzone\", {\n get: function() {\n return $7aad62ebc3d6fae8$export$6ccd1735166caad9;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $7aad62ebc3d6fae8$var$e = new Map([\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]), $7aad62ebc3d6fae8$var$t = [\n \".DS_Store\",\n \"Thumbs.db\"\n], $7aad62ebc3d6fae8$var$o = (t)=>{\n let { name: o } = t;\n if (o && -1 !== o.lastIndexOf(\".\") && !t.type) {\n let i = (o.split(\".\").pop() || \"\").toLowerCase(), r = $7aad62ebc3d6fae8$var$e.get(i);\n r && Object.defineProperty(t, \"type\", {\n value: r,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return t;\n}, $7aad62ebc3d6fae8$var$i = (e, t)=>{\n let i = $7aad62ebc3d6fae8$var$o(e);\n if (\"string\" != typeof i.path) {\n let { webkitRelativePath: o } = e;\n Object.defineProperty(i, \"path\", {\n value: \"string\" == typeof t ? t : o || e.name,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return i;\n}, $7aad62ebc3d6fae8$var$r = async (e)=>await new Promise((t, o)=>{\n e.readEntries(t, o);\n }), $7aad62ebc3d6fae8$var$a = async (e)=>{\n let t = [], o = await $7aad62ebc3d6fae8$var$r(e);\n for(; o.length > 0;)t.push(...o), o = await $7aad62ebc3d6fae8$var$r(e);\n return t;\n}, $7aad62ebc3d6fae8$var$n = (e)=>new Promise((t, o)=>{\n e.file((o)=>t($7aad62ebc3d6fae8$var$i(o, e.fullPath)), o);\n }), $7aad62ebc3d6fae8$var$s = async (e)=>{\n let o = [], i = [];\n for (let t of e){\n if (\"file\" !== t.kind) continue;\n let e = t.getAsEntry ? t.getAsEntry() : t.webkitGetAsEntry();\n i.push(e);\n }\n for(; i.length > 0;){\n let e = i.shift();\n if (e) {\n if (e.isFile) {\n let i = await $7aad62ebc3d6fae8$var$n(e);\n -1 === $7aad62ebc3d6fae8$var$t.indexOf(i.name) && o.push(i);\n } else e.isDirectory && i.push(...await $7aad62ebc3d6fae8$var$a(e.createReader()));\n }\n }\n return o;\n}, $7aad62ebc3d6fae8$var$d = async (e)=>{\n let o = [];\n for (let r of e)-1 === $7aad62ebc3d6fae8$var$t.indexOf(r.name) && o.push($7aad62ebc3d6fae8$var$i(r));\n return o;\n}, $7aad62ebc3d6fae8$var$l = async (e)=>e.dataTransfer ? e.dataTransfer.items ? await $7aad62ebc3d6fae8$var$s(e.dataTransfer.items) : await $7aad62ebc3d6fae8$var$d(e.dataTransfer.files) : await $7aad62ebc3d6fae8$var$d(e.target.files), $7aad62ebc3d6fae8$var$p = \"files-dropzone\", $7aad62ebc3d6fae8$var$c = \"TOO_MANY_FILES\", $7aad62ebc3d6fae8$var$h = document.createElement(\"template\"), $7aad62ebc3d6fae8$var$u = `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$7aad62ebc3d6fae8$var$h.innerHTML = `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\nclass $7aad62ebc3d6fae8$export$6ccd1735166caad9 extends HTMLElement {\n #e = null;\n #t = null;\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($7aad62ebc3d6fae8$var$h.content.cloneNode(!0)), this.shadowRoot && (this.#e = this.shadowRoot.getElementById(\"fileInput\"), this.#t = this.shadowRoot.getElementById(\"dropzoneEl\"));\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n \"accept\" === e && t !== o && this.#e && (this.#e.accept = this.accept), \"disabled\" === e && t !== o && this.#e && (this.#e.disabled = this.disabled, this.disabled ? this.#t?.removeAttribute(\"tabindex\") : this.#t?.setAttribute(\"tabindex\", \"0\")), \"multiple\" === e && t !== o && this.#e && (this.#e.multiple = this.multiple), \"no-keyboard\" === e && t !== o && this.#t && (this.noKeyboard ? this.#t.removeAttribute(\"tabindex\") : this.#t.setAttribute(\"tabindex\", \"0\"));\n }\n connectedCallback() {\n this.#o(\"accept\"), this.#o(\"disabled\"), this.#o(\"maxFiles\"), this.#o(\"maxSize\"), this.#o(\"minSize\"), this.#o(\"multiple\"), this.#o(\"noClick\"), this.#o(\"noDrag\"), this.#o(\"noKeyboard\"), this.#o(\"autoFocus\"), this.#o(\"noStyle\"), this.#e?.addEventListener(\"change\", this.#i), this.#t?.addEventListener(\"dragenter\", this.#r), this.#t?.addEventListener(\"dragover\", this.#a), this.#t?.addEventListener(\"dragleave\", this.#n), this.#t?.addEventListener(\"drop\", this.#s), this.#t?.addEventListener(\"click\", this.#d), this.#t?.addEventListener(\"keyup\", this.#l), this.autoFocus && this.#t?.focus();\n }\n disconnectedCallback() {\n this.#e?.removeEventListener(\"change\", this.#i), this.#t?.removeEventListener(\"dragenter\", this.#r), this.#t?.removeEventListener(\"dragover\", this.#a), this.#t?.removeEventListener(\"dragleave\", this.#n), this.#t?.removeEventListener(\"drop\", this.#s), this.#t?.removeEventListener(\"click\", this.#d), this.#t?.removeEventListener(\"keyup\", this.#l);\n }\n get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(e) {\n this.setAttribute(\"accept\", null != e ? e.toString() : e);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(e) {\n this.toggleAttribute(\"disabled\", !!e);\n }\n get maxFiles() {\n let e = Number(this.getAttribute(\"max-files\")) || 0;\n return e <= 0 ? 1 / 0 : Math.floor(Math.abs(e));\n }\n set maxFiles(e) {\n this.setAttribute(\"max-files\", null != e ? e.toString() : e);\n }\n get maxSize() {\n let e = this.getAttribute(\"max-size\");\n if (null === e) return 1 / 0;\n let t = Number(e);\n return Number.isNaN(t) ? 1 / 0 : t;\n }\n set maxSize(e) {\n this.setAttribute(\"max-size\", null != e ? e.toString() : e);\n }\n get minSize() {\n let e = this.getAttribute(\"min-size\");\n if (null === e) return 0;\n let t = Number(e);\n return Number.isNaN(t) ? 0 : t;\n }\n set minSize(e) {\n this.setAttribute(\"min-size\", null != e ? e.toString() : e);\n }\n get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(e) {\n this.toggleAttribute(\"multiple\", !!e);\n }\n get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(e) {\n this.toggleAttribute(\"no-click\", !!e);\n }\n get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(e) {\n this.toggleAttribute(\"no-drag\", !!e);\n }\n get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(e) {\n this.toggleAttribute(\"no-keyboard\", !!e);\n }\n get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(e) {\n this.toggleAttribute(\"auto-focus\", !!e);\n }\n get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(e) {\n this.toggleAttribute(\"no-style\", !!e);\n }\n #i = async (e)=>{\n try {\n this.#p(await $7aad62ebc3d6fae8$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n };\n #r = ()=>{\n this.disabled || this.noDrag || this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragenter`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #a = (e)=>{\n if (e.preventDefault(), this.disabled || this.noDrag) {\n e.dataTransfer.dropEffect = \"none\";\n return;\n }\n e.dataTransfer.dropEffect = \"copy\", this.#t && (this.#t.classList.add(\"dropzone--dragover\"), this.#t.part.add(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragover`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #n = ()=>{\n this.disabled || this.noDrag || (this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$7aad62ebc3d6fae8$var$p}-dragleave`, {\n bubbles: !0,\n composed: !0\n })));\n };\n #s = async (e)=>{\n if (!this.disabled && !this.noDrag) {\n e.preventDefault(), this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\"));\n try {\n this.#p(await $7aad62ebc3d6fae8$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n }\n };\n #d = ()=>{\n this.disabled || this.noClick || this.#e?.click();\n };\n #l = (e)=>{\n this.disabled || this.noKeyboard || \" \" !== e.key && \"Enter\" !== e.key || this.#e?.click();\n };\n #p(e) {\n if (!Array.isArray(e) || !e.length) return;\n let t = [], o = [], i = e.length;\n if (!this.multiple && i > 1) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $7aad62ebc3d6fae8$var$c,\n message: \"Too many files selected. Only 1 file is allowed.\"\n }\n ]\n });\n else if (this.multiple && i > this.maxFiles) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $7aad62ebc3d6fae8$var$c,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else for (let i of e){\n let e = function(e, t = \"\") {\n if (!t) return !0;\n let o = [\n ...new Set(t.split(\",\").map((e)=>e.trim()).filter(Boolean))\n ], i = e.type, r = i.replace(/\\/.*$/, \"\");\n for (let t of o)if (\".\" === t.charAt(0)) {\n if (-1 !== e.name.toLowerCase().indexOf(t.toLowerCase(), e.name.length - t.length)) return !0;\n } else if (/\\/\\*$/.test(t)) {\n if (r === t.replace(/\\/.*$/, \"\")) return !0;\n } else if (i === t) return !0;\n return !1;\n }(i, this.accept), r = i.size > this.maxSize, a = i.size < this.minSize;\n if (!e || r || a) {\n let t = [];\n e || t.push({\n code: \"INVALID_MIME_TYPE\",\n message: `File type \"${i.type}\" is not accepted.`\n }), r && t.push({\n code: \"FILE_TOO_LARGE\",\n message: `File size ${i.size} exceeds the maximum size of ${this.maxSize}.`\n }), a && t.push({\n code: \"FILE_TOO_SMALL\",\n message: `File size ${i.size} is smaller than the minimum size of ${this.minSize}.`\n }), o.push({\n file: i,\n errors: t\n });\n } else t.push(i);\n }\n this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t,\n rejectedFiles: o\n }\n })), t.length > 0 && this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop-accepted`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t\n }\n })), o.length > 0 && this.dispatchEvent(new CustomEvent(`${$7aad62ebc3d6fae8$var$p}-drop-rejected`, {\n bubbles: !0,\n composed: !0,\n detail: {\n rejectedFiles: o\n }\n })), this.#e && (this.#e.value = this.#e.defaultValue);\n }\n openFileDialog() {\n this.disabled || this.#e?.click();\n }\n #o(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n static defineCustomElement(e = $7aad62ebc3d6fae8$var$p) {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $7aad62ebc3d6fae8$export$6ccd1735166caad9);\n }\n}\n$7aad62ebc3d6fae8$export$6ccd1735166caad9.defineCustomElement();\n\n\n\n\n/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */ const $5742c9e143620cb1$export$30a014203d0d7e4f = (array, ...indexes)=>{\n if (!Array.isArray(array)) throw new TypeError(\"Expected an array for first argument\");\n return array.filter((_, i)=>indexes.indexOf(i) === -1);\n};\n\n\n/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */ const $21c3f3a8dccfa4fd$export$e2a22331486dcca0 = (prefix = \"\", suffix = \"\")=>{\n const prefixString = typeof prefix === \"string\" && prefix !== \"\" ? prefix + \"-\" : \"\";\n const suffixString = typeof suffix === \"string\" && suffix !== \"\" ? \"-\" + suffix : \"\";\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n return `${prefixString}${randomString}${suffixString}`;\n};\n\n\nconst $33dea9d9a6da4c9a$export$63e7bed68b07a85c = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\"\n];\n\n\nvar $b9a1dffffdf320f2$exports = {};\n\n$b9a1dffffdf320f2$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Anton-Regular.e58ab3fe.ttf\";\n\n\nvar $6f8f0ad93b4f4fec$exports = {};\n\n$6f8f0ad93b4f4fec$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Oswald-Regular.89ec7d89.ttf\";\n\n\nvar $60f12aeb358e1d01$exports = {};\n\n$60f12aeb358e1d01$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Oswald-Bold.0f6a7ca6.ttf\";\n\n\nvar $b312cc3e2ac443c7$exports = {};\n\n$b312cc3e2ac443c7$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Roboto-Regular.ca197847.ttf\";\n\n\nvar $481315e8ee95f8f9$exports = {};\n\n$481315e8ee95f8f9$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"Roboto-Bold.fdb9b54a.ttf\";\n\n\nvar $7cee0a691e2711a6$exports = {};\n\n$7cee0a691e2711a6$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"RobotoCondensed-Regular.d585f5c7.ttf\";\n\n\nvar $12b7043e62e67366$exports = {};\n\n$12b7043e62e67366$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"RobotoCondensed-Bold.e1f96d4b.ttf\";\n\n\nvar $f224edc54658ebde$exports = {};\n\n$f224edc54658ebde$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"CourierPrime-Regular.3a25a501.ttf\";\n\n\nvar $33ce2f42587a9c55$exports = {};\n\n$33ce2f42587a9c55$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"CourierPrime-Bold.3d6bf689.ttf\";\n\n\nvar $1375393a097acb0e$exports = {};\n\n$1375393a097acb0e$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"OpenSans-Regular.edf9e01b.ttf\";\n\n\nvar $728f6ce83c7b6e27$exports = {};\n\n$728f6ce83c7b6e27$exports = (parcelRequire(\"aNJCr\")).getBundleURL(\"8tAhj\") + \"OpenSans-Bold.8fceb72b.ttf\";\n\n\nconst $055531bbd0af154c$export$6874249d87f2602a = [\n {\n name: \"Anton\",\n label: \"Anton\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($b9a1dffffdf320f2$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Regular\",\n label: \"Oswald\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($6f8f0ad93b4f4fec$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Bold\",\n label: \"Oswald Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($60f12aeb358e1d01$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"Roboto-Regular\",\n label: \"Roboto\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($b312cc3e2ac443c7$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Roboto-Bold\",\n label: \"Roboto Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($481315e8ee95f8f9$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"RobotoCondensed-Regular\",\n label: \"Roboto Condensed\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($7cee0a691e2711a6$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"RobotoCondensed-Bold\",\n label: \"Roboto Condensed Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($12b7043e62e67366$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"CourierPrime-Regular\",\n label: \"Courier Prime\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($f224edc54658ebde$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"CourierPrime-Bold\",\n label: \"Courier Prime Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($33ce2f42587a9c55$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"OpenSans-Regular\",\n label: \"Open Sans\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($1375393a097acb0e$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"OpenSans-Bold\",\n label: \"Open Sans Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($728f6ce83c7b6e27$exports))),\n style: \"normal\",\n weight: \"400\"\n }\n];\nconst $055531bbd0af154c$export$59eceaef0c7797b2 = async (name, path, options = {})=>{\n try {\n const font = new FontFace(name, `url(${path})`, {\n ...options\n });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n\n\n\nconst $008970865eefc93d$export$6539e087749cf9d3 = async (options = {})=>{\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || \"\";\n if (!(0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c).includes(mimeType)) throw new Error(`This is not an accepted image format. Accepted MIME types are: ${(0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c).join(\", \")}`);\n return new File([\n blob\n ], options.filename || \"\", blob);\n};\n\n\nconst $166cfb2484b08c80$var$errorsContainer = document.getElementById(\"errorsContainer\");\nconst $166cfb2484b08c80$var$hideError = (evt)=>{\n const target = evt.currentTarget;\n target.removeEventListener(\"click\", $166cfb2484b08c80$var$hideError);\n $166cfb2484b08c80$var$errorsContainer.removeChild(target.parentNode);\n};\nconst $166cfb2484b08c80$export$af04143326425dbd = (message = \"\", type = \"info\")=>{\n const types = [\n \"info\",\n \"warning\",\n \"danger\"\n ];\n if (!types.includes(type)) type = \"info\";\n const template = /* html */ `\n ${message}\n \n `;\n const div = document.createElement(\"div\");\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector(\"button\").addEventListener(\"click\", $166cfb2484b08c80$var$hideError);\n $166cfb2484b08c80$var$errorsContainer.appendChild(div);\n setTimeout(()=>div.classList.add(\"show\"), 100);\n};\n\n\n\nconst $50a37fdc18d479c2$export$293a4b86a6fe2398 = (index, data = {})=>{\n const inputTemplate = /* html */ `\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n const fragment = document.createDocumentFragment();\n const div = document.createElement(\"div\");\n div.className = \"bg-light border shadow-sm mb-3 rounded\";\n div.setAttribute(\"data-section\", \"textBox\");\n div.setAttribute(\"data-index\", index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n return fragment.appendChild(div);\n};\n\n\nconst $d346fdc99aed49b3$export$e653a2de0f3a8b89 = (image, canvas, ctx, textOptions = [])=>{\n if (image == null) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n if (typeof image === \"string\") {\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n textOptions.forEach(function(item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n const multiplier = index + 1;\n const lineHeight = ctx.measureText(\"M\").width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split(\"\\n\");\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index)=>ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else textLines.forEach((text, index)=>{\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n ctx.restore();\n });\n};\n\n\nconst $44ae6d9db4eaca0f$var$videoModal = document.getElementById(\"videoModal\");\nconst $44ae6d9db4eaca0f$var$downloadModal = document.getElementById(\"downloadModal\");\nconst $44ae6d9db4eaca0f$var$canvas = document.getElementById(\"canvas\");\nconst $44ae6d9db4eaca0f$var$dropzoneEl = document.querySelector(\"files-dropzone\");\nconst $44ae6d9db4eaca0f$var$instructionsEl = document.getElementById(\"instructions\");\nconst $44ae6d9db4eaca0f$var$ctx = $44ae6d9db4eaca0f$var$canvas.getContext(\"2d\");\nconst $44ae6d9db4eaca0f$var$imageUploadMethodSelect = document.getElementById(\"imageUploadMethodSelect\");\nconst $44ae6d9db4eaca0f$var$fileSelectBtn = document.getElementById(\"fileSelectBtn\");\nconst $44ae6d9db4eaca0f$var$imageUrlForm = document.getElementById(\"imageUrlForm\");\nconst $44ae6d9db4eaca0f$var$addTextboxBtn = document.getElementById(\"addTextboxBtn\");\nconst $44ae6d9db4eaca0f$var$inputsContainer = document.getElementById(\"inputsContainer\");\nconst $44ae6d9db4eaca0f$var$generateMemeBtn = document.getElementById(\"generateMemeBtn\");\nconst $44ae6d9db4eaca0f$var$openVideoModalBtn = document.getElementById(\"openVideoModalBtn\");\nconst $44ae6d9db4eaca0f$var$downloadMemeBtn = document.getElementById(\"downloadMemeBtn\");\nconst $44ae6d9db4eaca0f$var$downloadMemePreview = document.getElementById(\"downloadMemePreview\");\nconst $44ae6d9db4eaca0f$var$webShareComponent = document.querySelector(\"web-share\");\nconst $44ae6d9db4eaca0f$var$galleryEl = document.getElementById(\"gallery\");\nconst $44ae6d9db4eaca0f$var$gallerySearchEl = document.getElementById(\"gallerySearch\");\nconst $44ae6d9db4eaca0f$var$galleryNoResultsEl = $44ae6d9db4eaca0f$var$galleryEl.querySelector(\".gallery__no-results\");\nconst $44ae6d9db4eaca0f$var$solidColorForm = document.getElementById(\"solidColorForm\");\nconst $44ae6d9db4eaca0f$var$uploadMethodEls = document.querySelectorAll(\".upload-method\");\nlet $44ae6d9db4eaca0f$var$selectedImage = null;\nlet $44ae6d9db4eaca0f$var$reqAnimFrame = null;\nconst $44ae6d9db4eaca0f$var$defaultTextOptions = {\n _isSettingsOpen: false,\n text: \"\",\n fillColor: \"#ffffff\",\n shadowColor: \"#000000\",\n font: \"Anton\",\n fontSize: 40,\n fontWeight: \"normal\",\n textAlign: \"center\",\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\nlet $44ae6d9db4eaca0f$var$textOptions = [\n {\n ...$44ae6d9db4eaca0f$var$defaultTextOptions\n }\n];\nconst $44ae6d9db4eaca0f$var$generateMeme = async ()=>{\n const dataUrl = $44ae6d9db4eaca0f$var$canvas.toDataURL(\"image/png\");\n // Prepare download link\n const downloadLink = dataUrl.replace(\"image/png\", \"image/octet-stream\");\n $44ae6d9db4eaca0f$var$downloadMemeBtn.download = `${(0, $21c3f3a8dccfa4fd$export$e2a22331486dcca0)(\"meme\")}.png`;\n $44ae6d9db4eaca0f$var$downloadMemeBtn.href = downloadLink;\n $44ae6d9db4eaca0f$var$downloadMemePreview.src = downloadLink;\n // Prepare for sharing file\n if ((0, $94933cc6427541bd$export$c37129e465f64ef0)()) try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: dataUrl,\n filename: `${(0, $21c3f3a8dccfa4fd$export$e2a22331486dcca0)(\"meme\")}.png`,\n mimeType: \"image/png\"\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file && (0, $94933cc6427541bd$export$c37129e465f64ef0)({\n files: [\n file\n ]\n })) {\n $44ae6d9db4eaca0f$var$webShareComponent.shareFiles = [\n file\n ];\n $44ae6d9db4eaca0f$var$webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n $44ae6d9db4eaca0f$var$downloadModal.open = true;\n};\nconst $44ae6d9db4eaca0f$var$onImageLoaded = (evt)=>{\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n $44ae6d9db4eaca0f$var$canvas.width = width;\n $44ae6d9db4eaca0f$var$canvas.height = height;\n $44ae6d9db4eaca0f$var$selectedImage = evt.target;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$generateMemeBtn.disabled = false;\n $44ae6d9db4eaca0f$var$canvas.hidden = false;\n $44ae6d9db4eaca0f$var$instructionsEl.hidden = true;\n};\nconst $44ae6d9db4eaca0f$var$handleSolidColorFormInput = (evt)=>{\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n if (evt.target === $44ae6d9db4eaca0f$var$solidColorForm[\"canvasColor\"]) $44ae6d9db4eaca0f$var$selectedImage = evt.target.value;\n if (typeof $44ae6d9db4eaca0f$var$selectedImage === \"string\") {\n $44ae6d9db4eaca0f$var$canvas.width = Number($44ae6d9db4eaca0f$var$solidColorForm[\"canvasWidth\"].value) || DEFAULT_WIDTH;\n $44ae6d9db4eaca0f$var$canvas.height = Number($44ae6d9db4eaca0f$var$solidColorForm[\"canvasHeight\"].value) || DEFAULT_HEIGHT;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$generateMemeBtn.disabled = false;\n $44ae6d9db4eaca0f$var$canvas.hidden = false;\n $44ae6d9db4eaca0f$var$instructionsEl.hidden = true;\n }\n};\nconst $44ae6d9db4eaca0f$var$handleFileSelect = (file)=>{\n if (!file) return;\n const image = new Image();\n const reader = new FileReader();\n reader.addEventListener(\"load\", function(evt) {\n const data = evt.target.result;\n image.addEventListener(\"load\", $44ae6d9db4eaca0f$var$onImageLoaded);\n image.src = data;\n });\n reader.readAsDataURL(file);\n};\nconst $44ae6d9db4eaca0f$var$handleOpenVideoModalButtonClick = ()=>{\n $44ae6d9db4eaca0f$var$videoModal.open = true;\n};\nconst $44ae6d9db4eaca0f$var$handleTextPropChange = (element, index, prop)=>{\n if (element.type === \"checkbox\") $44ae6d9db4eaca0f$var$textOptions[index][prop] = element.checked;\n else if (element.type === \"number\") $44ae6d9db4eaca0f$var$textOptions[index][prop] = Number(element.value);\n else $44ae6d9db4eaca0f$var$textOptions[index][prop] = element.value;\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n};\nconst $44ae6d9db4eaca0f$var$handleAddTextboxBtnClick = ()=>{\n const textOptionsLength = $44ae6d9db4eaca0f$var$textOptions.length;\n const newTextBox = (0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(textOptionsLength, $44ae6d9db4eaca0f$var$defaultTextOptions);\n $44ae6d9db4eaca0f$var$textOptions.push({\n ...$44ae6d9db4eaca0f$var$defaultTextOptions\n });\n $44ae6d9db4eaca0f$var$inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\nconst $44ae6d9db4eaca0f$var$handleImageUploadFromURL = async (evt)=>{\n evt.preventDefault();\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form[\"imageUrl\"].value;\n if (!imageUrl.trim()) return;\n submitButton.disabled = true;\n submitButton.querySelector(\".spinner\").hidden = false;\n submitButton.querySelector(\".label\").hidden = true;\n try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: imageUrl\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n } catch (err) {\n (0, $166cfb2484b08c80$export$af04143326425dbd)(`Failed to load image from \"${imageUrl}\".`, \"danger\");\n } finally{\n submitButton.disabled = false;\n submitButton.querySelector(\".spinner\").hidden = true;\n submitButton.querySelector(\".label\").hidden = false;\n }\n};\nconst $44ae6d9db4eaca0f$var$moveText = (offsetDir, sign, index)=>()=>{\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n if (offsetDir === \"offsetY\") {\n if (sign === \"-\") $44ae6d9db4eaca0f$var$textOptions[index].offsetY -= 1;\n if (sign === \"+\") $44ae6d9db4eaca0f$var$textOptions[index].offsetY += 1;\n offsetYInput.value = $44ae6d9db4eaca0f$var$textOptions[index].offsetY;\n }\n if (offsetDir === \"offsetX\") {\n if (sign === \"-\") $44ae6d9db4eaca0f$var$textOptions[index].offsetX -= 1;\n if (sign === \"+\") $44ae6d9db4eaca0f$var$textOptions[index].offsetX += 1;\n offsetXInput.value = $44ae6d9db4eaca0f$var$textOptions[index].offsetX;\n }\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n $44ae6d9db4eaca0f$var$reqAnimFrame = requestAnimationFrame($44ae6d9db4eaca0f$var$moveText(offsetDir, sign, index));\n };\nconst $44ae6d9db4eaca0f$var$handleUploadMethodChange = (evt)=>{\n $44ae6d9db4eaca0f$var$uploadMethodEls.forEach((el)=>el.hidden = el.id !== evt.target.value);\n};\nconst $44ae6d9db4eaca0f$var$handleFileSelectClick = ()=>{\n if (typeof $44ae6d9db4eaca0f$var$dropzoneEl.openFileDialog === \"function\") $44ae6d9db4eaca0f$var$dropzoneEl.openFileDialog();\n};\nconst $44ae6d9db4eaca0f$var$handleDropFilesAccepted = (evt)=>{\n const [file] = evt.detail.acceptedFiles;\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerInput = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"text\"]')) prop = \"text\";\n else if (element.matches('[data-input=\"fillColor\"]')) prop = \"fillColor\";\n else if (element.matches('[data-input=\"shadowColor\"]')) prop = \"shadowColor\";\n else if (element.matches('[data-input=\"font\"]')) prop = \"font\";\n else if (element.matches('[data-input=\"fontSize\"]')) prop = \"fontSize\";\n else if (element.matches('[data-input=\"fontWeight\"]')) prop = \"fontWeight\";\n else if (element.matches('[data-input=\"textAlign\"]')) prop = \"textAlign\";\n else if (element.matches('[data-input=\"shadowBlur\"]')) prop = \"shadowBlur\";\n else if (element.matches('[data-input=\"offsetY\"]')) prop = \"offsetY\";\n else if (element.matches('[data-input=\"offsetX\"]')) prop = \"offsetX\";\n else if (element.matches('[data-input=\"rotate\"]')) prop = \"rotate\";\n if (prop) $44ae6d9db4eaca0f$var$handleTextPropChange(element, index, prop);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerChange = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"allCaps\"]')) prop = \"allCaps\";\n if (prop) $44ae6d9db4eaca0f$var$handleTextPropChange(element, index, prop);\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerClick = (evt)=>{\n const element = evt.target;\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\");\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n textBoxEls.forEach((el, index)=>{\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n if (el.getAttribute(\"data-index\") === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n $44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen = !$44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n $44ae6d9db4eaca0f$var$textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let confirm = true;\n if ($44ae6d9db4eaca0f$var$textOptions[index].text.trim()) confirm = window.confirm(\"Are you sure you want to remove this text box?\");\n if (confirm) {\n $44ae6d9db4eaca0f$var$textOptions = (0, $5742c9e143620cb1$export$30a014203d0d7e4f)($44ae6d9db4eaca0f$var$textOptions, index);\n $44ae6d9db4eaca0f$var$inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach((el)=>el.remove());\n $44ae6d9db4eaca0f$var$textOptions.forEach((item, index)=>$44ae6d9db4eaca0f$var$inputsContainer.appendChild((0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(index, item)));\n (0, $d346fdc99aed49b3$export$e653a2de0f3a8b89)($44ae6d9db4eaca0f$var$selectedImage, $44ae6d9db4eaca0f$var$canvas, $44ae6d9db4eaca0f$var$ctx, $44ae6d9db4eaca0f$var$textOptions);\n }\n }\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerdown = (evt)=>{\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n if (!textBoxEl) return;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n const offsetDir = element.getAttribute(\"data-move\");\n const sign = element.getAttribute(\"data-sign\");\n $44ae6d9db4eaca0f$var$reqAnimFrame = requestAnimationFrame($44ae6d9db4eaca0f$var$moveText(offsetDir, sign, index));\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerup = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n cancelAnimationFrame($44ae6d9db4eaca0f$var$reqAnimFrame);\n $44ae6d9db4eaca0f$var$reqAnimFrame = null;\n};\nconst $44ae6d9db4eaca0f$var$handleInputsContainerPointerout = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton || !$44ae6d9db4eaca0f$var$reqAnimFrame) return;\n cancelAnimationFrame($44ae6d9db4eaca0f$var$reqAnimFrame);\n $44ae6d9db4eaca0f$var$reqAnimFrame = null;\n};\nconst $44ae6d9db4eaca0f$var$handleGalleryClick = async (evt)=>{\n const button = evt.target.closest(\"button\");\n if (!button) return;\n const img = button.querySelector(\"img\");\n try {\n const file = await (0, $008970865eefc93d$export$6539e087749cf9d3)({\n url: img.src\n }).catch((err)=>(0, $166cfb2484b08c80$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $44ae6d9db4eaca0f$var$handleFileSelect(file);\n } catch (err) {\n (0, $166cfb2484b08c80$export$af04143326425dbd)(`Failed to load image: \"${img.alt}\".`, \"danger\");\n }\n};\nconst $44ae6d9db4eaca0f$var$handleGallerySearchInput = (evt)=>{\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = $44ae6d9db4eaca0f$var$galleryEl.querySelectorAll(\"button\");\n galleryItems.forEach((item)=>{\n const alt = (item.querySelector(\"img\").getAttribute(\"alt\") || \"\").toLowerCase();\n item.hidden = !alt.includes(query);\n });\n $44ae6d9db4eaca0f$var$galleryNoResultsEl.hidden = !!$44ae6d9db4eaca0f$var$galleryEl.querySelector(\"button:not([hidden])\");\n};\nconst $44ae6d9db4eaca0f$var$handleWebShareError = ()=>{\n $44ae6d9db4eaca0f$var$downloadModal.open = false;\n (0, $166cfb2484b08c80$export$af04143326425dbd)(\"There was an error while trying to share your meme.\", \"danger\");\n};\nconst $44ae6d9db4eaca0f$var$handleCapturePhotoError = (evt)=>{\n console.error(evt.detail.error);\n (0, $166cfb2484b08c80$export$af04143326425dbd)(evt.detail.error.message, \"danger\");\n};\nconst $44ae6d9db4eaca0f$var$handleCapturePhotoSuccess = (evt)=>{\n $44ae6d9db4eaca0f$var$videoModal.open = false;\n const image = new Image();\n image.addEventListener(\"load\", $44ae6d9db4eaca0f$var$onImageLoaded);\n image.src = evt.detail.dataURI;\n};\nconst $44ae6d9db4eaca0f$var$handleModalOpen = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $44ae6d9db4eaca0f$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === \"function\") capturePhotoComponent.startVideoStream();\n }\n};\nconst $44ae6d9db4eaca0f$var$handleModalClose = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $44ae6d9db4eaca0f$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === \"function\") capturePhotoComponent.stopVideoStream();\n }\n};\n$44ae6d9db4eaca0f$var$fileSelectBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleFileSelectClick);\n$44ae6d9db4eaca0f$var$openVideoModalBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleOpenVideoModalButtonClick);\n$44ae6d9db4eaca0f$var$addTextboxBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleAddTextboxBtnClick);\n$44ae6d9db4eaca0f$var$generateMemeBtn.addEventListener(\"click\", $44ae6d9db4eaca0f$var$generateMeme);\n$44ae6d9db4eaca0f$var$downloadMemeBtn.addEventListener(\"click\", ()=>$44ae6d9db4eaca0f$var$downloadModal.open = false);\n$44ae6d9db4eaca0f$var$imageUrlForm.addEventListener(\"submit\", $44ae6d9db4eaca0f$var$handleImageUploadFromURL);\n$44ae6d9db4eaca0f$var$dropzoneEl.addEventListener(\"files-dropzone-drop-accepted\", $44ae6d9db4eaca0f$var$handleDropFilesAccepted);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleInputsContainerInput);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"change\", $44ae6d9db4eaca0f$var$handleInputsContainerChange);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleInputsContainerClick);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerdown\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerdown);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerup\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerup);\n$44ae6d9db4eaca0f$var$inputsContainer.addEventListener(\"pointerout\", $44ae6d9db4eaca0f$var$handleInputsContainerPointerout);\n$44ae6d9db4eaca0f$var$imageUploadMethodSelect.addEventListener(\"change\", $44ae6d9db4eaca0f$var$handleUploadMethodChange);\n$44ae6d9db4eaca0f$var$galleryEl.addEventListener(\"click\", $44ae6d9db4eaca0f$var$handleGalleryClick);\n$44ae6d9db4eaca0f$var$gallerySearchEl.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleGallerySearchInput);\n$44ae6d9db4eaca0f$var$solidColorForm.addEventListener(\"input\", $44ae6d9db4eaca0f$var$handleSolidColorFormInput);\ndocument.addEventListener(\"web-share:error\", $44ae6d9db4eaca0f$var$handleWebShareError);\ndocument.addEventListener(\"capture-photo:error\", $44ae6d9db4eaca0f$var$handleCapturePhotoError);\ndocument.addEventListener(\"capture-photo:success\", $44ae6d9db4eaca0f$var$handleCapturePhotoSuccess);\ndocument.addEventListener(\"me-open\", $44ae6d9db4eaca0f$var$handleModalOpen);\ndocument.addEventListener(\"me-close\", $44ae6d9db4eaca0f$var$handleModalClose);\n$44ae6d9db4eaca0f$var$galleryEl.querySelectorAll(\"button > img\")?.forEach((image)=>{\n image.setAttribute(\"title\", image.getAttribute(\"alt\"));\n});\n$44ae6d9db4eaca0f$var$textOptions.forEach((item, index)=>{\n $44ae6d9db4eaca0f$var$inputsContainer.appendChild((0, $50a37fdc18d479c2$export$293a4b86a6fe2398)(index, item));\n});\n$44ae6d9db4eaca0f$var$dropzoneEl.accept = (0, $33dea9d9a6da4c9a$export$63e7bed68b07a85c);\n(0, $055531bbd0af154c$export$6874249d87f2602a).forEach(({ name: name, path: path, style: style, weight: weight })=>{\n (0, $055531bbd0af154c$export$59eceaef0c7797b2)(name, path, {\n style: style,\n weight: weight\n });\n});\n\n})();\n//# sourceMappingURL=index.9d0cb1f2.js.map\n","\"use strict\";\n\nvar mapping = new Map();\nfunction register(baseUrl, manifest) {\n for (var i = 0; i < manifest.length - 1; i += 2) {\n mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n }\n}\nfunction resolve(id) {\n var resolved = mapping.get(id);\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","\"use strict\";\n\nvar bundleURL = {};\nfunction getBundleURLCached(id) {\n var value = bundleURL[id];\n if (!value) {\n value = getBundleURL();\n bundleURL[id] = value;\n }\n return value;\n}\nfunction getBundleURL() {\n try {\n throw new Error();\n } catch (err) {\n var matches = ('' + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^)\\n]+/g);\n if (matches) {\n // The first two stack frames will be this function and getBundleURLCached.\n // Use the 3rd one, which will be a runtime in the original bundle.\n return getBaseURL(matches[2]);\n }\n }\n return '/';\n}\nfunction getBaseURL(url) {\n return ('' + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/.+)\\/[^/]+$/, '$1') + '/';\n}\n\n// TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.\nfunction getOrigin(url) {\n var matches = ('' + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\\/\\/[^/]+/);\n if (!matches) {\n throw new Error('Origin not found');\n }\n return matches[0];\n}\nexports.getBundleURL = getBundleURLCached;\nexports.getBaseURL = getBaseURL;\nexports.getOrigin = getOrigin;","require('./helpers/bundle-manifest').register(require('./helpers/bundle-url').getBundleURL('8tAhj'),JSON.parse(\"[\\\"8tAhj\\\",\\\"index.9d0cb1f2.js\\\",\\\"cmj6F\\\",\\\"Anton-Regular.e58ab3fe.ttf\\\",\\\"a9OJN\\\",\\\"Oswald-Regular.89ec7d89.ttf\\\",\\\"jOuj0\\\",\\\"Oswald-Bold.0f6a7ca6.ttf\\\",\\\"ePq3V\\\",\\\"Roboto-Regular.ca197847.ttf\\\",\\\"9WQUU\\\",\\\"Roboto-Bold.fdb9b54a.ttf\\\",\\\"hIywO\\\",\\\"RobotoCondensed-Regular.d585f5c7.ttf\\\",\\\"ab1rw\\\",\\\"RobotoCondensed-Bold.e1f96d4b.ttf\\\",\\\"j4ruO\\\",\\\"CourierPrime-Regular.3a25a501.ttf\\\",\\\"3nnD2\\\",\\\"CourierPrime-Bold.3d6bf689.ttf\\\",\\\"8fsWK\\\",\\\"OpenSans-Regular.edf9e01b.ttf\\\",\\\"5JXG6\\\",\\\"OpenSans-Bold.8fceb72b.ttf\\\",\\\"9FH7D\\\",\\\"index.bcbdd9b6.css\\\"]\"));","import { isWebShareSupported } from '@georapbox/web-share-element/dist/is-web-share-supported.js';\nimport '@georapbox/web-share-element/dist/web-share-defined.js';\nimport '@georapbox/capture-photo-element/dist/capture-photo-defined.js';\nimport '@georapbox/modal-element/dist/modal-element-defined.js';\nimport '@georapbox/files-dropzone-element/dist/files-dropzone-defined.js';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport '../css/main.css';\nimport { arrayRemove } from './utils/array-remove.js';\nimport { uid } from './utils/uid.js';\nimport { ACCEPTED_MIME_TYPES } from './constants.js';\nimport { customFonts, loadCustomFont } from './custom-fonts.js';\nimport { fileFromUrl } from './file-from-url.js';\nimport { toastAlert } from './toast-alert.js';\nimport { createTextBox } from './create-text-box.js';\nimport { drawCanvas } from './draw-canvas.js';\n\nconst videoModal = document.getElementById('videoModal');\nconst downloadModal = document.getElementById('downloadModal');\nconst canvas = document.getElementById('canvas');\nconst dropzoneEl = document.querySelector('files-dropzone');\nconst instructionsEl = document.getElementById('instructions');\nconst ctx = canvas.getContext('2d');\nconst imageUploadMethodSelect = document.getElementById('imageUploadMethodSelect');\nconst fileSelectBtn = document.getElementById('fileSelectBtn');\nconst imageUrlForm = document.getElementById('imageUrlForm');\nconst addTextboxBtn = document.getElementById('addTextboxBtn');\nconst inputsContainer = document.getElementById('inputsContainer');\nconst generateMemeBtn = document.getElementById('generateMemeBtn');\nconst openVideoModalBtn = document.getElementById('openVideoModalBtn');\nconst downloadMemeBtn = document.getElementById('downloadMemeBtn');\nconst downloadMemePreview = document.getElementById('downloadMemePreview');\nconst webShareComponent = document.querySelector('web-share');\nconst galleryEl = document.getElementById('gallery');\nconst gallerySearchEl = document.getElementById('gallerySearch');\nconst galleryNoResultsEl = galleryEl.querySelector('.gallery__no-results');\nconst solidColorForm = document.getElementById('solidColorForm');\nconst uploadMethodEls = document.querySelectorAll('.upload-method');\nlet selectedImage = null;\nlet reqAnimFrame = null;\n\nconst defaultTextOptions = {\n _isSettingsOpen: false,\n text: '',\n fillColor: '#ffffff',\n shadowColor: '#000000',\n font: 'Anton',\n fontSize: 40,\n fontWeight: 'normal',\n textAlign: 'center',\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\n\nlet textOptions = [\n { ...defaultTextOptions }\n];\n\nconst generateMeme = async () => {\n const dataUrl = canvas.toDataURL('image/png');\n\n // Prepare download link\n const downloadLink = dataUrl.replace('image/png', 'image/octet-stream');\n downloadMemeBtn.download = `${uid('meme')}.png`;\n downloadMemeBtn.href = downloadLink;\n downloadMemePreview.src = downloadLink;\n\n // Prepare for sharing file\n if (isWebShareSupported()) {\n try {\n const file = await fileFromUrl({\n url: dataUrl,\n filename: `${uid('meme')}.png`,\n mimeType: 'image/png'\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file && isWebShareSupported({ files: [file] })) {\n webShareComponent.shareFiles = [file];\n webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n downloadModal.open = true;\n};\n\nconst onImageLoaded = evt => {\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n\n selectedImage = evt.target;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n};\n\nconst handleSolidColorFormInput = evt => {\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n\n if (evt.target === solidColorForm['canvasColor']) {\n selectedImage = evt.target.value;\n }\n\n if (typeof selectedImage === 'string') {\n canvas.width = Number(solidColorForm['canvasWidth'].value) || DEFAULT_WIDTH;\n canvas.height = Number(solidColorForm['canvasHeight'].value) || DEFAULT_HEIGHT;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n }\n};\n\nconst handleFileSelect = file => {\n if (!file) {\n return;\n }\n\n const image = new Image();\n const reader = new FileReader();\n\n reader.addEventListener('load', function (evt) {\n const data = evt.target.result;\n image.addEventListener('load', onImageLoaded);\n image.src = data;\n });\n\n reader.readAsDataURL(file);\n};\n\nconst handleOpenVideoModalButtonClick = () => {\n videoModal.open = true;\n};\n\nconst handleTextPropChange = (element, index, prop) => {\n if (element.type === 'checkbox') {\n textOptions[index][prop] = element.checked;\n } else if (element.type === 'number') {\n textOptions[index][prop] = Number(element.value);\n } else {\n textOptions[index][prop] = element.value;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n};\n\nconst handleAddTextboxBtnClick = () => {\n const textOptionsLength = textOptions.length;\n const newTextBox = createTextBox(textOptionsLength, defaultTextOptions);\n\n textOptions.push({ ...defaultTextOptions });\n inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\n\nconst handleImageUploadFromURL = async evt => {\n evt.preventDefault();\n\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form['imageUrl'].value;\n\n if (!imageUrl.trim()) {\n return;\n }\n\n submitButton.disabled = true;\n submitButton.querySelector('.spinner').hidden = false;\n submitButton.querySelector('.label').hidden = true;\n\n try {\n const file = await fileFromUrl({\n url: imageUrl\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image from \"${imageUrl}\".`, 'danger');\n } finally {\n submitButton.disabled = false;\n submitButton.querySelector('.spinner').hidden = true;\n submitButton.querySelector('.label').hidden = false;\n }\n};\n\nconst moveText = (offsetDir, sign, index) => () => {\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n\n if (offsetDir === 'offsetY') {\n if (sign === '-') {\n textOptions[index].offsetY -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetY += 1;\n }\n\n offsetYInput.value = textOptions[index].offsetY;\n }\n\n if (offsetDir === 'offsetX') {\n if (sign === '-') {\n textOptions[index].offsetX -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetX += 1;\n }\n\n offsetXInput.value = textOptions[index].offsetX;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleUploadMethodChange = evt => {\n uploadMethodEls.forEach(el => el.hidden = el.id !== evt.target.value);\n};\n\nconst handleFileSelectClick = () => {\n if (typeof dropzoneEl.openFileDialog === 'function') {\n dropzoneEl.openFileDialog();\n }\n};\n\nconst handleDropFilesAccepted = evt => {\n const [file] = evt.detail.acceptedFiles;\n\n if (file) {\n handleFileSelect(file);\n }\n};\n\nconst handleInputsContainerInput = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"text\"]')) {\n prop = 'text';\n } else if (element.matches('[data-input=\"fillColor\"]')) {\n prop = 'fillColor';\n } else if (element.matches('[data-input=\"shadowColor\"]')) {\n prop = 'shadowColor';\n } else if (element.matches('[data-input=\"font\"]')) {\n prop = 'font';\n } else if (element.matches('[data-input=\"fontSize\"]')) {\n prop = 'fontSize';\n } else if (element.matches('[data-input=\"fontWeight\"]')) {\n prop = 'fontWeight';\n } else if (element.matches('[data-input=\"textAlign\"]')) {\n prop = 'textAlign';\n } else if (element.matches('[data-input=\"shadowBlur\"]')) {\n prop = 'shadowBlur';\n } else if (element.matches('[data-input=\"offsetY\"]')) {\n prop = 'offsetY';\n } else if (element.matches('[data-input=\"offsetX\"]')) {\n prop = 'offsetX';\n } else if (element.matches('[data-input=\"rotate\"]')) {\n prop = 'rotate';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerChange = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"allCaps\"]')) {\n prop = 'allCaps';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerClick = evt => {\n const element = evt.target;\n\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute('data-index');\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n\n textBoxEls.forEach((el, index) => {\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n\n if (el.getAttribute('data-index') === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n textOptions[index]._isSettingsOpen = !textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let confirm = true;\n\n if (textOptions[index].text.trim()) {\n confirm = window.confirm('Are you sure you want to remove this text box?');\n }\n\n if (confirm) {\n textOptions = arrayRemove(textOptions, index);\n inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach(el => el.remove());\n textOptions.forEach((item, index) => inputsContainer.appendChild(createTextBox(index, item)));\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n }\n }\n};\n\nconst handleInputsContainerPointerdown = evt => {\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n\n if (!textBoxEl) {\n return;\n }\n\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n const offsetDir = element.getAttribute('data-move');\n const sign = element.getAttribute('data-sign');\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleInputsContainerPointerup = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleInputsContainerPointerout = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton || !reqAnimFrame) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleGalleryClick = async evt => {\n const button = evt.target.closest('button');\n\n if (!button) {\n return;\n }\n\n const img = button.querySelector('img');\n\n try {\n const file = await fileFromUrl({\n url: img.src\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image: \"${img.alt}\".`, 'danger');\n }\n};\n\nconst handleGallerySearchInput = evt => {\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = galleryEl.querySelectorAll('button');\n\n galleryItems.forEach(item => {\n const alt = (item.querySelector('img').getAttribute('alt') || '').toLowerCase();\n item.hidden = !alt.includes(query);\n });\n\n galleryNoResultsEl.hidden = !!galleryEl.querySelector('button:not([hidden])');\n};\n\nconst handleWebShareError = () => {\n downloadModal.open = false;\n toastAlert('There was an error while trying to share your meme.', 'danger');\n};\n\nconst handleCapturePhotoError = evt => {\n console.error(evt.detail.error);\n toastAlert(evt.detail.error.message, 'danger');\n};\n\nconst handleCapturePhotoSuccess = evt => {\n videoModal.open = false;\n const image = new Image();\n image.addEventListener('load', onImageLoaded);\n image.src = evt.detail.dataURI;\n};\n\nconst handleModalOpen = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === 'function') {\n capturePhotoComponent.startVideoStream();\n }\n }\n};\n\nconst handleModalClose = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === 'function') {\n capturePhotoComponent.stopVideoStream();\n }\n }\n};\n\nfileSelectBtn.addEventListener('click', handleFileSelectClick);\nopenVideoModalBtn.addEventListener('click', handleOpenVideoModalButtonClick);\naddTextboxBtn.addEventListener('click', handleAddTextboxBtnClick);\ngenerateMemeBtn.addEventListener('click', generateMeme);\ndownloadMemeBtn.addEventListener('click', () => downloadModal.open = false);\nimageUrlForm.addEventListener('submit', handleImageUploadFromURL);\ndropzoneEl.addEventListener('files-dropzone-drop-accepted', handleDropFilesAccepted);\ninputsContainer.addEventListener('input', handleInputsContainerInput);\ninputsContainer.addEventListener('change', handleInputsContainerChange);\ninputsContainer.addEventListener('click', handleInputsContainerClick);\ninputsContainer.addEventListener('pointerdown', handleInputsContainerPointerdown);\ninputsContainer.addEventListener('pointerup', handleInputsContainerPointerup);\ninputsContainer.addEventListener('pointerout', handleInputsContainerPointerout);\nimageUploadMethodSelect.addEventListener('change', handleUploadMethodChange);\ngalleryEl.addEventListener('click', handleGalleryClick);\ngallerySearchEl.addEventListener('input', handleGallerySearchInput);\nsolidColorForm.addEventListener('input', handleSolidColorFormInput);\ndocument.addEventListener('web-share:error', handleWebShareError);\ndocument.addEventListener('capture-photo:error', handleCapturePhotoError);\ndocument.addEventListener('capture-photo:success', handleCapturePhotoSuccess);\ndocument.addEventListener('me-open', handleModalOpen);\ndocument.addEventListener('me-close', handleModalClose);\n\ngalleryEl.querySelectorAll('button > img')?.forEach(image => {\n image.setAttribute('title', image.getAttribute('alt'));\n});\n\ntextOptions.forEach((item, index) => {\n inputsContainer.appendChild(createTextBox(index, item));\n});\n\ndropzoneEl.accept = ACCEPTED_MIME_TYPES;\n\ncustomFonts.forEach(({ name, path, style, weight }) => {\n loadCustomFont(name, path, { style, weight });\n});\n","function a(a){return null!==a&&\"object\"==typeof a?\"share\"in navigator&&\"canShare\"in navigator&&navigator.canShare(a):\"share\"in navigator}export{a as isWebShareSupported};\n//# sourceMappingURL=is-web-share-supported.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $e179325634270afd$exports = {};\n\n$parcel$export($e179325634270afd$exports, \"WebShare\", function () { return $e179325634270afd$export$30b344bef3e55b67; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */ const $e179325634270afd$var$styles = /* css */ `\n :host {\n display: inline-block;\n }\n`;\nconst $e179325634270afd$var$template = document.createElement(\"template\");\n$e179325634270afd$var$template.innerHTML = /* html */ `\n \n \n`;\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */ class $e179325634270afd$export$30b344bef3e55b67 extends HTMLElement {\n /** @type {Nullable} */ #buttonSlot;\n /** @type {Nullable} */ #buttonEl;\n /** @type {File[]} */ #files = [];\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\",\n delegatesFocus: true\n });\n shadowRoot.appendChild($e179325634270afd$var$template.content.cloneNode(true));\n }\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"disabled\" && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute(\"disabled\", this.disabled);\n this.#buttonEl.setAttribute(\"aria-disabled\", this.disabled.toString());\n if (this.#buttonEl.part && this.#buttonEl.part.contains(\"button\")) this.#buttonEl.part.toggle(\"button--disabled\", this.disabled);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"shareUrl\");\n this.#upgradeProperty(\"shareTitle\");\n this.#upgradeProperty(\"shareText\");\n this.#upgradeProperty(\"shareFiles\");\n this.#upgradeProperty(\"disabled\");\n this.#buttonSlot?.addEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.addEventListener(\"click\", this.#handleClick);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#buttonSlot?.removeEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n }\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */ get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(value) {\n this.setAttribute(\"share-url\", value);\n }\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */ get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(value) {\n this.setAttribute(\"share-title\", value);\n }\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */ get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(value) {\n this.setAttribute(\"share-text\", value);\n }\n /**\n * @type {File[]} - The files to share.\n */ get shareFiles() {\n return this.#files;\n }\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) this.#files = value;\n }\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */ async share() {\n if (this.disabled) return;\n try {\n /** @type {ShareData} */ const shareData = {};\n if (this.shareUrl) shareData.url = this.shareUrl;\n if (this.shareTitle) shareData.title = this.shareTitle;\n if (this.shareText) shareData.text = this.shareText;\n if (Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n })) shareData.files = this.shareFiles;\n await navigator.share(shareData);\n this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: true,\n composed: true,\n detail: {\n shareData: shareData\n }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */ #handleClick = (evt)=>{\n evt.preventDefault();\n if (this.disabled) return;\n this.share();\n };\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */ #handleSlotChange = (evt)=>{\n if (evt.target && evt.target.name === \"button\") {\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n this.#buttonEl = this.#getButton();\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener(\"click\", this.#handleClick);\n if (this.#buttonEl.nodeName !== \"BUTTON\" && !this.#buttonEl.hasAttribute(\"role\")) this.#buttonEl.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */ #getButton() {\n if (!this.#buttonSlot) return null;\n return this.#buttonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n static defineCustomElement(elementName = \"web-share\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $e179325634270afd$export$30b344bef3e55b67);\n }\n}\n\n\n(0, $e179325634270afd$export$30b344bef3e55b67).defineCustomElement();\n\n\nexport {$e179325634270afd$export$30b344bef3e55b67 as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","// @ts-check\n\n/**\n * Check if Web Share API is supported by the platform.\n *\n * @param {import('./web-share').ShareData} [options]\n * @returns {boolean} Returns `true` if Web Share API is supported; otherwise `false`.\n */\nfunction isWebShareSupported(options) {\n if (options !== null && typeof options === 'object') {\n return 'share' in navigator && 'canShare' in navigator && navigator.canShare(options);\n }\n\n return 'share' in navigator;\n}\n\nexport { isWebShareSupported };\n","Object.defineProperty({},\"WebShare\",{get:function(){return s},set:void 0,enumerable:!0,configurable:!0});let t=`\n :host {\n display: inline-block;\n }\n`,e=document.createElement(\"template\");e.innerHTML=`\n \n \n`;class s extends HTMLElement{#t;#e;#s=[];constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\",delegatesFocus:!0}).appendChild(e.content.cloneNode(!0)),this.#t=this.shadowRoot?.querySelector('slot[name=\"button\"]')||null,this.#e=this.#i()}static get observedAttributes(){return[\"disabled\"]}attributeChangedCallback(t,e,s){\"disabled\"===t&&e!==s&&this.#e&&(this.#e.toggleAttribute(\"disabled\",this.disabled),this.#e.setAttribute(\"aria-disabled\",this.disabled.toString()),this.#e.part&&this.#e.part.contains(\"button\")&&this.#e.part.toggle(\"button--disabled\",this.disabled))}connectedCallback(){this.#r(\"shareUrl\"),this.#r(\"shareTitle\"),this.#r(\"shareText\"),this.#r(\"shareFiles\"),this.#r(\"disabled\"),this.#t?.addEventListener(\"slotchange\",this.#a),this.#e?.addEventListener(\"click\",this.#n)}disconnectedCallback(){this.#t?.removeEventListener(\"slotchange\",this.#a),this.#e?.removeEventListener(\"click\",this.#n)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(t){this.toggleAttribute(\"disabled\",!!t)}get shareUrl(){return this.getAttribute(\"share-url\")||\"\"}set shareUrl(t){this.setAttribute(\"share-url\",t)}get shareTitle(){return this.getAttribute(\"share-title\")||\"\"}set shareTitle(t){this.setAttribute(\"share-title\",t)}get shareText(){return this.getAttribute(\"share-text\")||\"\"}set shareText(t){this.setAttribute(\"share-text\",t)}get shareFiles(){return this.#s}set shareFiles(t){Array.isArray(t)&&t.length>0&&(this.#s=t)}async share(){if(!this.disabled)try{let t={};this.shareUrl&&(t.url=this.shareUrl),this.shareTitle&&(t.title=this.shareTitle),this.shareText&&(t.text=this.shareText),Array.isArray(this.shareFiles)&&this.shareFiles.length>0&&navigator.canShare&&navigator.canShare({files:this.shareFiles})&&(t.files=this.shareFiles),await navigator.share(t),this.dispatchEvent(new CustomEvent(\"web-share:success\",{bubbles:!0,composed:!0,detail:{shareData:t}}))}catch(t){if(t instanceof Error&&\"AbortError\"===t.name){this.dispatchEvent(new CustomEvent(\"web-share:abort\",{bubbles:!0,composed:!0,detail:{error:t}}));return}this.dispatchEvent(new CustomEvent(\"web-share:error\",{bubbles:!0,composed:!0,detail:{error:t}}))}}#n=t=>{t.preventDefault(),this.disabled||this.share()};#a=t=>{t.target&&\"button\"===t.target.name&&(this.#e?.removeEventListener(\"click\",this.#n),this.#e=this.#i(),this.#e&&(this.#e.addEventListener(\"click\",this.#n),\"BUTTON\"===this.#e.nodeName||this.#e.hasAttribute(\"role\")||this.#e.setAttribute(\"role\",\"button\")))};#i(){return this.#t&&this.#t.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"button\"===t.getAttribute(\"slot\"))||null}#r(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}static defineCustomElement(t=\"web-share\"){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,s)}}s.defineCustomElement();export{s as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","import { WebShare } from './web-share.js';\n\nWebShare.defineCustomElement();\n\nexport { WebShare };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */\n\nconst styles = /* css */`\n :host {\n display: inline-block;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */ `\n \n \n`;\n\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */\nclass WebShare extends HTMLElement {\n /** @type {Nullable} */\n #buttonSlot;\n\n /** @type {Nullable} */\n #buttonEl;\n\n /** @type {File[]} */\n #files = [];\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open', delegatesFocus: true });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n\n static get observedAttributes() {\n return ['disabled'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'disabled' && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute('disabled', this.disabled);\n this.#buttonEl.setAttribute('aria-disabled', this.disabled.toString());\n\n if (this.#buttonEl.part && this.#buttonEl.part.contains('button')) {\n this.#buttonEl.part.toggle('button--disabled', this.disabled);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('shareUrl');\n this.#upgradeProperty('shareTitle');\n this.#upgradeProperty('shareText');\n this.#upgradeProperty('shareFiles');\n this.#upgradeProperty('disabled');\n\n this.#buttonSlot?.addEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.addEventListener('click', this.#handleClick);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#buttonSlot?.removeEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n }\n\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */\n get shareUrl() {\n return this.getAttribute('share-url') || '';\n }\n\n set shareUrl(value) {\n this.setAttribute('share-url', value);\n }\n\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */\n get shareTitle() {\n return this.getAttribute('share-title') || '';\n }\n\n set shareTitle(value) {\n this.setAttribute('share-title', value);\n }\n\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */\n get shareText() {\n return this.getAttribute('share-text') || '';\n }\n\n set shareText(value) {\n this.setAttribute('share-text', value);\n }\n\n /**\n * @type {File[]} - The files to share.\n */\n get shareFiles() {\n return this.#files;\n }\n\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) {\n this.#files = value;\n }\n }\n\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */\n async share() {\n if (this.disabled) {\n return;\n }\n\n try {\n /** @type {ShareData} */\n const shareData = {};\n\n if (this.shareUrl) {\n shareData.url = this.shareUrl;\n }\n\n if (this.shareTitle) {\n shareData.title = this.shareTitle;\n }\n\n if (this.shareText) {\n shareData.text = this.shareText;\n }\n\n if (\n Array.isArray(this.shareFiles)\n && this.shareFiles.length > 0\n && navigator.canShare\n && navigator.canShare({ files: this.shareFiles })\n ) {\n shareData.files = this.shareFiles;\n }\n\n await navigator.share(shareData);\n\n this.dispatchEvent(new CustomEvent('web-share:success', {\n bubbles: true,\n composed: true,\n detail: { shareData }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.dispatchEvent(new CustomEvent('web-share:abort', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n\n return;\n }\n\n this.dispatchEvent(new CustomEvent('web-share:error', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */\n #handleClick = evt => {\n evt.preventDefault();\n\n if (this.disabled) {\n return;\n }\n\n this.share();\n };\n\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */\n #handleSlotChange = evt => {\n if (evt.target && evt.target.name === 'button') {\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n this.#buttonEl = this.#getButton();\n\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener('click', this.#handleClick);\n\n if (this.#buttonEl.nodeName !== 'BUTTON' && !this.#buttonEl.hasAttribute('role')) {\n this.#buttonEl.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */\n #getButton() {\n if (!this.#buttonSlot) {\n return null;\n }\n\n return this.#buttonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n static defineCustomElement(elementName = 'web-share') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, WebShare);\n }\n }\n}\n\nexport { WebShare };\n","Object.defineProperty({},\"CapturePhoto\",{get:function(){return n},set:void 0,enumerable:!0,configurable:!0});let t=(t,e,i)=>(Number.isNaN(e)&&(e=0),Number.isNaN(i)&&(i=0),Math.min(Math.max(t,Math.min(e,i)),Math.max(e,i))),e=\"capture-photo\",i=`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`,o=document.createElement(\"template\");o.innerHTML=`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;class n extends HTMLElement{#t={};#e=null;#i=null;#o=null;#n=null;#a=null;#s=null;#r=null;#l=null;constructor(){super(),this.#t=this.getSupportedConstraints(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(o.content.cloneNode(!0))}static get observedAttributes(){return[\"no-image\",\"facing-mode\",\"camera-resolution\",\"pan\",\"tilt\",\"zoom\"]}attributeChangedCallback(t,e,i){if(!this.isConnected)return;let o=this.getTrackCapabilities(),n=this.getTrackSettings();if(\"no-image\"===t&&e!==i&&this.#u(),\"facing-mode\"===t&&e!==i&&\"facingMode\"in this.#t){let t=[\"user\",\"environment\"].includes(this.facingMode||\"\");\"facingMode\"in n&&t&&(this.stopVideoStream(),this.startVideoStream())}if(\"camera-resolution\"===t&&e!==i&&\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[t=0,e=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));if(t>0&&e>0&&\"width\"in o&&\"height\"in o){let i=!!(o.width?.min&&o.width?.max)&&t>=o?.width?.min&&t<=o?.width?.max,a=!!(o.height?.min&&o.height?.max)&&e>=o?.height?.min&&e<=o?.height?.max;\"width\"in n&&\"height\"in n&&i&&a&&(this.stopVideoStream(),this.startVideoStream())}}if(\"pan\"===t&&e!==i&&\"pan\"in this.#t){let t=!!(\"pan\"in o&&o.pan?.min&&o.pan?.max)&&this.pan>=o.pan.min&&this.pan<=o.pan.max;\"pan\"in n&&\"number\"==typeof this.pan&&t&&this.#h(\"pan\",this.pan)}if(\"tilt\"===t&&e!==i&&\"tilt\"in this.#t){let t=!!(\"tilt\"in o&&o.tilt?.min&&o.tilt?.max)&&this.tilt>=o.tilt.min&&this.tilt<=o.tilt.max;\"tilt\"in n&&\"number\"==typeof this.tilt&&t&&this.#h(\"tilt\",this.tilt)}if(\"zoom\"===t&&e!==i&&\"zoom\"in this.#t){let t=!!(\"zoom\"in o&&o.zoom?.min&&o.zoom?.max)&&this.zoom>=o.zoom.min&&this.zoom<=o.zoom.max;\"zoom\"in n&&\"number\"==typeof this.zoom&&t&&this.#h(\"zoom\",this.zoom)}}connectedCallback(){if(this.#d(\"autpoPlay\"),this.#d(\"noImage\"),this.#d(\"facingMode\"),this.#d(\"cameraResolution\"),this.#d(\"pan\"),this.#d(\"tilt\"),this.#d(\"zoom\"),this.#d(\"calculateFileSize\"),this.#i=this.shadowRoot?.querySelector(\"canvas\")||null,this.#o=this.shadowRoot?.getElementById(\"output\")||null,this.#n=this.shadowRoot?.querySelector(\"video\")||null,this.#a=this.shadowRoot?.querySelector('slot[name=\"capture-button\"]')||null,this.#s=this.#c(),this.#r=this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]')||null,this.#l=this.#m(),this.#n?.addEventListener(\"loadedmetadata\",this.#p),this.#a?.addEventListener(\"slotchange\",this.#g),this.#s?.addEventListener(\"click\",this.#b),this.#r?.addEventListener(\"slotchange\",this.#f),this.#l?.addEventListener(\"click\",this.#v),!n.isSupported())return this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:{name:\"NotSupportedError\",message:\"Not supported\"}}}));this.autoPlay&&this.startVideoStream()}disconnectedCallback(){this.stopVideoStream(),this.#l?.removeEventListener(\"click\",this.#v),this.#s?.removeEventListener(\"click\",this.#b),this.#n?.removeEventListener(\"canplay\",this.#p),this.#a?.removeEventListener(\"slotchange\",this.#g),this.#r?.removeEventListener(\"slotchange\",this.#f)}get autoPlay(){return this.hasAttribute(\"auto-play\")}set autoPlay(t){this.toggleAttribute(\"auto-play\",!!t)}get noImage(){return this.hasAttribute(\"no-image\")}set noImage(t){this.toggleAttribute(\"no-image\",!!t)}get facingMode(){return this.getAttribute(\"facing-mode\")||\"user\"}set facingMode(t){this.setAttribute(\"facing-mode\",t)}get cameraResolution(){return this.getAttribute(\"camera-resolution\")||\"\"}set cameraResolution(t){this.setAttribute(\"camera-resolution\",t)}get pan(){return Number(this.getAttribute(\"pan\"))||0}set pan(t){this.setAttribute(\"pan\",null!=t?t.toString():t)}get tilt(){return Number(this.getAttribute(\"tilt\"))||0}set tilt(t){this.setAttribute(\"tilt\",null!=t?t.toString():t)}get zoom(){return Number(this.getAttribute(\"zoom\"))||1}set zoom(t){this.setAttribute(\"zoom\",null!=t?t.toString():t)}get loading(){return this.hasAttribute(\"loading\")}get calculateFileSize(){return this.hasAttribute(\"calculate-file-size\")}set calculateFileSize(t){this.toggleAttribute(\"calculate-file-size\",!!t)}#v=t=>{t.preventDefault(),this.loading||(this.facingMode=\"user\"!==this.facingMode&&this.facingMode?\"user\":\"environment\")};#b=t=>{t.preventDefault(),this.capture()};#p=t=>{let i=t.target;i.play().then(()=>{this.dispatchEvent(new CustomEvent(`${e}:video-play`,{bubbles:!0,composed:!0,detail:{video:i}}))}).catch(t=>{this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}).finally(()=>{this.removeAttribute(\"loading\")})};#u(){this.#o&&Array.from(this.#o.childNodes).forEach(t=>t.remove())}#h(e,i){if(!this.#e||!e||!i)return;let[o]=this.#e.getVideoTracks(),n=this.getTrackCapabilities();e in this.getTrackSettings()&&o.applyConstraints({advanced:[{[e]:t(Number(i),n[e]?.min||1,n[e]?.max||1)}]})}#g=t=>{t.target?.name===\"capture-button\"&&(this.#s?.removeEventListener(\"click\",this.#b),this.#s=this.#c(),this.#s&&(this.#s.addEventListener(\"click\",this.#b),\"BUTTON\"===this.#s.nodeName||this.#s.hasAttribute(\"role\")||this.#s.setAttribute(\"role\",\"button\")))};#f=t=>{t.target?.name===\"facing-mode-button\"&&(this.#l?.removeEventListener(\"click\",this.#v),this.#l=this.#m(),this.#l&&(this.#l.addEventListener(\"click\",this.#v),\"BUTTON\"===this.#l.nodeName||this.#l.hasAttribute(\"role\")||this.#l.setAttribute(\"role\",\"button\")))};#m(){return this.#r&&this.#r.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"facing-mode-button\"===t.getAttribute(\"slot\"))||null}#c(){return this.#a&&this.#a.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"capture-button\"===t.getAttribute(\"slot\"))||null}#d(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}async startVideoStream(){if(!n.isSupported()||this.#e)return;this.setAttribute(\"loading\",\"\");let t={video:{facingMode:{ideal:this.facingMode||\"user\"},pan:!0,tilt:!0,zoom:!0},audio:!1};if(\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[e=0,i=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));e>0&&i>0&&(t.video.width=e,t.video.height=i)}try{this.#e=await navigator.mediaDevices.getUserMedia(t),this.#n&&(this.#n.srcObject=this.#e),this.#h(\"pan\",this.pan),this.#h(\"tilt\",this.tilt),this.#h(\"zoom\",this.zoom);let e=this.getTrackSettings();\"facingMode\"in e&&this.#r&&(this.#r.hidden=!1)}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}finally{this.removeAttribute(\"loading\")}}stopVideoStream(){if(!this.#n||!this.#e)return;let[t]=this.#e.getVideoTracks();t?.stop(),this.#n.srcObject=null,this.#e=null}async capture(){if(!this.loading&&this.#i&&this.#n)try{let t=this.#i.getContext(\"2d\"),i=this.#n.videoWidth,o=this.#n.videoHeight;this.#i.width=i,this.#i.height=o,t?.drawImage(this.#n,0,0,i,o);let n=this.#i.toDataURL(\"image/png\");if(\"string\"==typeof n&&n.includes(\"data:image\")){if(!this.noImage){let t=new Image;t.src=n,t.width=i,t.height=o,t.setAttribute(\"part\",\"output-image\"),this.#u(),this.#o?.appendChild(t)}let t={dataURI:n,width:i,height:o};if(this.calculateFileSize)try{let e=await fetch(n),i=(await e.blob()).size;i&&(t.size=i)}catch(t){}this.dispatchEvent(new CustomEvent(`${e}:success`,{bubbles:!0,composed:!0,detail:t}))}}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}}getSupportedConstraints(){return n.isSupported()&&navigator.mediaDevices.getSupportedConstraints()||{}}getTrackCapabilities(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getCapabilities&&t.getCapabilities()||{}}getTrackSettings(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getSettings&&t.getSettings()||{}}static isSupported(){return!!navigator.mediaDevices?.getUserMedia}static defineCustomElement(t=e){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,n)}}n.defineCustomElement();export{n as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $c290816263f90981$exports = {};\n\n$parcel$export($c290816263f90981$exports, \"CapturePhoto\", function () { return $c290816263f90981$export$cc30a98fe3890794; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */ /**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */ // @ts-check\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */ const $02ad8beec419df62$export$7d15b64cf5a3a4c4 = (value, lower, upper)=>{\n if (Number.isNaN(lower)) lower = 0;\n if (Number.isNaN(upper)) upper = 0;\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n\n\nconst $c290816263f90981$var$COMPONENT_NAME = \"capture-photo\";\nconst $c290816263f90981$var$styles = /* css */ `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\nconst $c290816263f90981$var$template = document.createElement(\"template\");\n$c290816263f90981$var$template.innerHTML = /* html */ `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */ class $c290816263f90981$export$cc30a98fe3890794 extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/ #supportedConstraints = {};\n /** @type {Nullable} */ #stream = null;\n /** @type {Nullable} */ #canvasElement = null;\n /** @type {Nullable} */ #outputElement = null;\n /** @type {Nullable} */ #videoElement = null;\n /** @type {Nullable} */ #captureButtonSlot = null;\n /** @type {Nullable} */ #captureButton = null;\n /** @type {Nullable} */ #facingModeButtonSlot = null;\n /** @type {Nullable} */ #facingModeButton = null;\n constructor(){\n super();\n this.#supportedConstraints = this.getSupportedConstraints();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($c290816263f90981$var$template.content.cloneNode(true));\n }\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) return;\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (name === \"no-image\" && oldValue !== newValue) this.#emptyOutputElement();\n if (name === \"facing-mode\" && oldValue !== newValue && \"facingMode\" in this.#supportedConstraints) {\n const isValidFacingMode = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n if (\"facingMode\" in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n if (name === \"camera-resolution\" && oldValue !== newValue) {\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0 && \"width\" in trackCapabilities && \"height\" in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max : false;\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max : false;\n if (\"width\" in trackSettings && \"height\" in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n if (name === \"pan\" && oldValue !== newValue && \"pan\" in this.#supportedConstraints) {\n const panInAllowedRange = \"pan\" in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max : false;\n if (\"pan\" in trackSettings && typeof this.pan === \"number\" && panInAllowedRange) this.#applyPTZ(\"pan\", this.pan);\n }\n if (name === \"tilt\" && oldValue !== newValue && \"tilt\" in this.#supportedConstraints) {\n const tiltInAllowedRange = \"tilt\" in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max : false;\n if (\"tilt\" in trackSettings && typeof this.tilt === \"number\" && tiltInAllowedRange) this.#applyPTZ(\"tilt\", this.tilt);\n }\n if (name === \"zoom\" && oldValue !== newValue && \"zoom\" in this.#supportedConstraints) {\n const zoomInAllowedRange = \"zoom\" in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max : false;\n if (\"zoom\" in trackSettings && typeof this.zoom === \"number\" && zoomInAllowedRange) this.#applyPTZ(\"zoom\", this.zoom);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"autpoPlay\");\n this.#upgradeProperty(\"noImage\");\n this.#upgradeProperty(\"facingMode\");\n this.#upgradeProperty(\"cameraResolution\");\n this.#upgradeProperty(\"pan\");\n this.#upgradeProperty(\"tilt\");\n this.#upgradeProperty(\"zoom\");\n this.#upgradeProperty(\"calculateFileSize\");\n this.#canvasElement = this.shadowRoot?.querySelector(\"canvas\") || null;\n this.#outputElement = this.shadowRoot?.getElementById(\"output\") || null;\n this.#videoElement = this.shadowRoot?.querySelector(\"video\") || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n this.#videoElement?.addEventListener(\"loadedmetadata\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n if (this.autoPlay) this.startVideoStream();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener(\"canplay\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n }\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */ get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(value) {\n this.toggleAttribute(\"auto-play\", !!value);\n }\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */ get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(value) {\n this.toggleAttribute(\"no-image\", !!value);\n }\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */ get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(value) {\n this.setAttribute(\"facing-mode\", value);\n }\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */ get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(value) {\n this.setAttribute(\"camera-resolution\", value);\n }\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */ get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(value) {\n this.setAttribute(\"pan\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */ get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(value) {\n this.setAttribute(\"tilt\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */ get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(value) {\n this.setAttribute(\"zoom\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */ get loading() {\n return this.hasAttribute(\"loading\");\n }\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */ get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(value) {\n this.toggleAttribute(\"calculate-file-size\", !!value);\n }\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */ #onFacingModeButtonClick = (evt)=>{\n evt.preventDefault();\n if (this.loading) return;\n this.facingMode = this.facingMode === \"user\" || !this.facingMode ? \"environment\" : \"user\";\n };\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */ #onCapturePhotoButtonClick = (evt)=>{\n evt.preventDefault();\n this.capture();\n };\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */ #onVideoLoadedMetaData = (evt)=>{\n const video = evt.target;\n video.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: {\n video: video\n }\n }));\n }).catch(/** @param {Error} error */ (error)=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n /**\n * Removes all child nodes from the output element.\n */ #emptyOutputElement() {\n if (!this.#outputElement) return;\n Array.from(this.#outputElement.childNodes).forEach((node)=>node.remove());\n }\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */ #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) return;\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (constraintName in trackSettings) track.applyConstraints({\n advanced: [\n {\n [constraintName]: (0, $02ad8beec419df62$export$7d15b64cf5a3a4c4)(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }\n ]\n });\n }\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onCaptureButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"capture-button\") {\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n if (this.#captureButton) {\n this.#captureButton.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n if (this.#captureButton.nodeName !== \"BUTTON\" && !this.#captureButton.hasAttribute(\"role\")) this.#captureButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onFacingModeButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"facing-mode-button\") {\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (this.#facingModeButton.nodeName !== \"BUTTON\" && !this.#facingModeButton.hasAttribute(\"role\")) this.#facingModeButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */ #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) return null;\n return this.#facingModeButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"facing-mode-button\";\n }) || null;\n }\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */ #getCaptureButton() {\n if (!this.#captureButtonSlot) return null;\n return this.#captureButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"capture-button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */ async startVideoStream() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported() || this.#stream) return;\n this.setAttribute(\"loading\", \"\");\n /** @type {ExtendedMediaTrackConstraints} */ const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n if (this.#videoElement) this.#videoElement.srcObject = this.#stream;\n this.#applyPTZ(\"pan\", this.pan);\n this.#applyPTZ(\"tilt\", this.tilt);\n this.#applyPTZ(\"zoom\", this.zoom);\n const trackSettings = this.getTrackSettings();\n if (\"facingMode\" in trackSettings && this.#facingModeButtonSlot) this.#facingModeButtonSlot.hidden = false;\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n /**\n * Stops the video stream.\n */ stopVideoStream() {\n if (!this.#videoElement || !this.#stream) return;\n const [track] = this.#stream.getVideoTracks();\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */ async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) return;\n try {\n const ctx = this.#canvasElement.getContext(\"2d\");\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL(\"image/png\");\n if (typeof dataURI === \"string\" && dataURI.includes(\"data:image\")) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute(\"part\", \"output-image\");\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */ const eventDetail = {\n dataURI: dataURI,\n width: width,\n height: height\n };\n if (this.calculateFileSize) try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n if (size) eventDetail.size = size;\n } catch (err) {\n // Fail silently...\n }\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */ getSupportedConstraints() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return {};\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */ getTrackCapabilities() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getCapabilities === \"function\") return track.getCapabilities() || {};\n return {};\n }\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */ getTrackSettings() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getSettings === \"function\") return track.getSettings() || {};\n return {};\n }\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */ static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */ static defineCustomElement(elementName = $c290816263f90981$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $c290816263f90981$export$cc30a98fe3890794);\n }\n}\n\n\n(0, $c290816263f90981$export$cc30a98fe3890794).defineCustomElement();\n\n\nexport {$c290816263f90981$export$cc30a98fe3890794 as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","import { CapturePhoto } from './capture-photo.js';\n\nCapturePhoto.defineCustomElement();\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */\n\nimport { clamp } from './utils/clamp.js';\n\nconst COMPONENT_NAME = 'capture-photo';\n\nconst styles = /* css */`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */\nclass CapturePhoto extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/\n #supportedConstraints = {};\n\n /** @type {Nullable} */\n #stream = null;\n\n /** @type {Nullable} */\n #canvasElement = null;\n\n /** @type {Nullable} */\n #outputElement = null;\n\n /** @type {Nullable} */\n #videoElement = null;\n\n /** @type {Nullable} */\n #captureButtonSlot = null;\n\n /** @type {Nullable} */\n #captureButton = null;\n\n /** @type {Nullable} */\n #facingModeButtonSlot = null;\n\n /** @type {Nullable} */\n #facingModeButton = null;\n\n constructor() {\n super();\n\n this.#supportedConstraints = this.getSupportedConstraints();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n\n static get observedAttributes() {\n return ['no-image', 'facing-mode', 'camera-resolution', 'pan', 'tilt', 'zoom'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) {\n return;\n }\n\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (name === 'no-image' && oldValue !== newValue) {\n this.#emptyOutputElement();\n }\n\n if (name === 'facing-mode' && oldValue !== newValue && 'facingMode' in this.#supportedConstraints) {\n const isValidFacingMode = ['user', 'environment'].includes(this.facingMode || '');\n\n if ('facingMode' in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n\n if (name === 'camera-resolution' && oldValue !== newValue) {\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0 && 'width' in trackCapabilities && 'height' in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max\n ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max\n : false;\n\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max\n ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max\n : false;\n\n if ('width' in trackSettings && 'height' in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n\n if (name === 'pan' && oldValue !== newValue && 'pan' in this.#supportedConstraints) {\n const panInAllowedRange = 'pan' in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max\n ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max\n : false;\n\n if ('pan' in trackSettings && typeof this.pan === 'number' && panInAllowedRange) {\n this.#applyPTZ('pan', this.pan);\n }\n }\n\n if (name === 'tilt' && oldValue !== newValue && 'tilt' in this.#supportedConstraints) {\n const tiltInAllowedRange = 'tilt' in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max\n ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max\n : false;\n\n if ('tilt' in trackSettings && typeof this.tilt === 'number' && tiltInAllowedRange) {\n this.#applyPTZ('tilt', this.tilt);\n }\n }\n\n if (name === 'zoom' && oldValue !== newValue && 'zoom' in this.#supportedConstraints) {\n const zoomInAllowedRange = 'zoom' in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max\n ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max\n : false;\n\n if ('zoom' in trackSettings && typeof this.zoom === 'number' && zoomInAllowedRange) {\n this.#applyPTZ('zoom', this.zoom);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('autpoPlay');\n this.#upgradeProperty('noImage');\n this.#upgradeProperty('facingMode');\n this.#upgradeProperty('cameraResolution');\n this.#upgradeProperty('pan');\n this.#upgradeProperty('tilt');\n this.#upgradeProperty('zoom');\n this.#upgradeProperty('calculateFileSize');\n\n this.#canvasElement = this.shadowRoot?.querySelector('canvas') || null;\n this.#outputElement = this.shadowRoot?.getElementById('output') || null;\n this.#videoElement = this.shadowRoot?.querySelector('video') || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n\n this.#videoElement?.addEventListener('loadedmetadata', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener('click', this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (!CapturePhoto.isSupported()) {\n return this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: 'NotSupportedError',\n message: 'Not supported'\n }\n }\n }));\n }\n\n if (this.autoPlay) {\n this.startVideoStream();\n }\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener('canplay', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n }\n\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */\n get autoPlay() {\n return this.hasAttribute('auto-play');\n }\n\n set autoPlay(value) {\n this.toggleAttribute('auto-play', !!value);\n }\n\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */\n get noImage() {\n return this.hasAttribute('no-image');\n }\n\n set noImage(value) {\n this.toggleAttribute('no-image', !!value);\n }\n\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */\n get facingMode() {\n return this.getAttribute('facing-mode') || 'user';\n }\n\n set facingMode(value) {\n this.setAttribute('facing-mode', value);\n }\n\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */\n get cameraResolution() {\n return this.getAttribute('camera-resolution') || '';\n }\n\n set cameraResolution(value) {\n this.setAttribute('camera-resolution', value);\n }\n\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */\n get pan() {\n return Number(this.getAttribute('pan')) || 0;\n }\n\n set pan(value) {\n this.setAttribute('pan', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */\n get tilt() {\n return Number(this.getAttribute('tilt')) || 0;\n }\n\n set tilt(value) {\n this.setAttribute('tilt', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */\n get zoom() {\n return Number(this.getAttribute('zoom')) || 1;\n }\n\n set zoom(value) {\n this.setAttribute('zoom', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */\n get loading() {\n return this.hasAttribute('loading');\n }\n\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */\n get calculateFileSize() {\n return this.hasAttribute('calculate-file-size');\n }\n\n set calculateFileSize(value) {\n this.toggleAttribute('calculate-file-size', !!value);\n }\n\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */\n #onFacingModeButtonClick = evt => {\n evt.preventDefault();\n\n if (this.loading) {\n return;\n }\n\n this.facingMode = this.facingMode === 'user' || !this.facingMode ? 'environment' : 'user';\n };\n\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */\n #onCapturePhotoButtonClick = evt => {\n evt.preventDefault();\n this.capture();\n };\n\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */\n #onVideoLoadedMetaData = evt => {\n const video = evt.target;\n\n video.play().then(() => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: { video }\n }));\n }).catch(/** @param {Error} error */error => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }).finally(() => {\n this.removeAttribute('loading');\n });\n };\n\n /**\n * Removes all child nodes from the output element.\n */\n #emptyOutputElement() {\n if (!this.#outputElement) {\n return;\n }\n\n Array.from(this.#outputElement.childNodes).forEach(node => node.remove());\n }\n\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */\n #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (constraintName in trackSettings) {\n track.applyConstraints({\n advanced: [{\n [constraintName]: clamp(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }]\n });\n }\n }\n\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onCaptureButtonSlotChange = evt => {\n if (evt.target?.name === 'capture-button') {\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n\n if (this.#captureButton) {\n this.#captureButton.addEventListener('click', this.#onCapturePhotoButtonClick);\n\n if (this.#captureButton.nodeName !== 'BUTTON' && !this.#captureButton.hasAttribute('role')) {\n this.#captureButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onFacingModeButtonSlotChange = evt => {\n if (evt.target?.name === 'facing-mode-button') {\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (this.#facingModeButton.nodeName !== 'BUTTON' && !this.#facingModeButton.hasAttribute('role')) {\n this.#facingModeButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */\n #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) {\n return null;\n }\n\n return this.#facingModeButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'facing-mode-button';\n }) || null;\n }\n\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */\n #getCaptureButton() {\n if (!this.#captureButtonSlot) {\n return null;\n }\n\n return this.#captureButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'capture-button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */\n async startVideoStream() {\n if (!CapturePhoto.isSupported() || this.#stream) {\n return;\n }\n\n this.setAttribute('loading', '');\n\n /** @type {ExtendedMediaTrackConstraints} */\n const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || 'user'\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n\n if (this.#videoElement) {\n this.#videoElement.srcObject = this.#stream;\n }\n\n this.#applyPTZ('pan', this.pan);\n this.#applyPTZ('tilt', this.tilt);\n this.#applyPTZ('zoom', this.zoom);\n\n const trackSettings = this.getTrackSettings();\n\n if ('facingMode' in trackSettings && this.#facingModeButtonSlot) {\n this.#facingModeButtonSlot.hidden = false;\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n } finally {\n this.removeAttribute('loading');\n }\n }\n\n /**\n * Stops the video stream.\n */\n stopVideoStream() {\n if (!this.#videoElement || !this.#stream) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */\n async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) {\n return;\n }\n\n try {\n const ctx = this.#canvasElement.getContext('2d');\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL('image/png');\n\n if (typeof dataURI === 'string' && dataURI.includes('data:image')) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute('part', 'output-image');\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */\n const eventDetail = { dataURI, width, height };\n\n if (this.calculateFileSize) {\n try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n\n if (size) {\n eventDetail.size = size;\n }\n } catch (err) {\n // Fail silently...\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */\n getSupportedConstraints() {\n if (!CapturePhoto.isSupported()) {\n return {};\n }\n\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */\n getTrackCapabilities() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getCapabilities === 'function') {\n return track.getCapabilities() || {};\n }\n\n return {};\n }\n\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */\n getTrackSettings() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getSettings === 'function') {\n return track.getSettings() || {};\n }\n\n return {};\n }\n\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */\n static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, CapturePhoto);\n }\n }\n}\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */\nexport const clamp = (value, lower, upper) => {\n if (Number.isNaN(lower)) {\n lower = 0;\n }\n\n if (Number.isNaN(upper)) {\n upper = 0;\n }\n\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n","Object.defineProperty({},\"ModalElement\",{get:function(){return t},set:void 0,enumerable:!0,configurable:!0});let e=document.createElement(\"template\");e.innerHTML=/* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */class t extends HTMLElement{/** @type {Nullable} */#e=null;/** @type {Nullable} */#t=null;/** @type {ReturnType | undefined} */#o=void 0;constructor(){if(super(),!this.shadowRoot){let t=this.attachShadow({mode:\"open\"});t.appendChild(e.content.cloneNode(!0))}this.shadowRoot&&(this.#e=this.shadowRoot.querySelector(\"dialog\"),this.#t=this.shadowRoot.querySelector('slot[name=\"footer\"]'))}static get observedAttributes(){return[\"open\",\"no-header\",\"no-animations\",\"no-close-button\"]}/**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */attributeChangedCallback(e,t,o){if(null!==this.#e){if(\"open\"===e&&t!==o&&(this.open?(this.#e.showModal(),document.body&&(document.body.style.overflowY=\"hidden\"),this.dispatchEvent(new CustomEvent(\"me-open\",{bubbles:!0,composed:!0,detail:{element:this}}))):this.#e.close()),\"no-header\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__header\");null!==e&&(e.hidden=this.noHeader)}if(\"no-animations\"===e&&t!==o&&this.#e.classList.toggle(\"dialog--no-animations\",this.noAnimations),\"no-close-button\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__close\");null!==e&&(e.hidden=this.noCloseButton)}}}/**\n * Lifecycle method that is called when the element is added to the DOM.\n */connectedCallback(){this.#i(\"open\"),this.#i(\"staticBackdrop\"),this.#i(\"noHeader\"),this.#i(\"noAnimations\"),this.#i(\"noCloseButton\"),this.#i(\"fullscreen\"),this.#e?.addEventListener(\"click\",this.#a),this.#e?.addEventListener(\"close\",this.#l),this.#e?.addEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\",this.#n),this.#t?.addEventListener(\"slotchange\",this.#r)}/**\n * Lifecycle method that is called when the element is removed from the DOM.\n */disconnectedCallback(){this.#o&&clearTimeout(this.#o),this.#e?.addEventListener(\"click\",this.#a),this.#e?.removeEventListener(\"close\",this.#l),this.#e?.removeEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\",this.#n),this.#t?.removeEventListener(\"slotchange\",this.#r)}/**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */get open(){return this.hasAttribute(\"open\")}set open(e){e?this.setAttribute(\"open\",\"\"):this.removeAttribute(\"open\")}/**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */get staticBackdrop(){return this.hasAttribute(\"static-backdrop\")}set staticBackdrop(e){e?this.setAttribute(\"static-backdrop\",\"\"):this.removeAttribute(\"static-backdrop\")}/**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */get noHeader(){return this.hasAttribute(\"no-header\")}set noHeader(e){e?this.setAttribute(\"no-header\",\"\"):this.removeAttribute(\"no-header\")}/**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */get noAnimations(){return this.hasAttribute(\"no-animations\")}set noAnimations(e){e?this.setAttribute(\"no-animations\",\"\"):this.removeAttribute(\"no-animations\")}/**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */get noCloseButton(){return this.hasAttribute(\"no-close-button\")}set noCloseButton(e){e?this.setAttribute(\"no-close-button\",\"\"):this.removeAttribute(\"no-close-button\")}/**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */get fullscreen(){return this.hasAttribute(\"fullscreen\")}set fullscreen(e){e?this.setAttribute(\"fullscreen\",\"\"):this.removeAttribute(\"fullscreen\")}/**\n * Applies a pulse effect on the dialog.\n */#d(){this.#o||(this.#e?.classList.add(\"dialog--pulse\"),this.#o=setTimeout(()=>{this.#e?.classList.remove(\"dialog--pulse\"),clearTimeout(this.#o),this.#o=void 0},300))}/**\n * Handles the close event of the dialog.\n */#l=()=>{// This is needed because the dialog element does not reset\n// the open property when the dialog is closed by the user.\nthis.open=!1,document.body&&(document.body.style.overflowY=\"\"),this.dispatchEvent(new CustomEvent(\"me-close\",{bubbles:!0,composed:!0,detail:{element:this}}))};/**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */#s=e=>{let t=this.#c(\"escape-key\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */#n=e=>{let t=this.#c(\"close-button\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */#a=e=>{if(e.target!==e.currentTarget)return;let t=this.#c(\"backdrop-click\");if(this.dispatchEvent(t),t.defaultPrevented||this.staticBackdrop){this.noAnimations||this.#d();return}this.#e?.close()};/**\n * Handles the slotchange event of the footer slot.\n */#r=()=>{if(null===this.#e)return;/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__footer\");if(null===e)return;let t=this.#t?.assignedNodes(),o=!!t&&t.length>0;e.hidden=!o};/**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */#c(e){return new CustomEvent(\"me-request-close\",{bubbles:!0,composed:!0,cancelable:!0,detail:{reason:e,element:this}})}/**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */#i(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}/**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */show(){this.open||(this.open=!0)}/**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */hide(){this.open&&(this.open=!1)}/**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */static defineCustomElement(e=\"modal-element\"){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,t)}}t.defineCustomElement();export{t as ModalElement};//# sourceMappingURL=modal-element-defined.js.map\n\n//# sourceMappingURL=modal-element-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $180b6dcf923bafc7$exports = {};\n\n$parcel$export($180b6dcf923bafc7$exports, \"ModalElement\", function () { return $180b6dcf923bafc7$export$32589115725b904b; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ const $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION = 300;\nconst $180b6dcf923bafc7$var$template = document.createElement(\"template\");\n$180b6dcf923bafc7$var$template.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ class $180b6dcf923bafc7$export$32589115725b904b extends HTMLElement {\n /** @type {Nullable} */ #dialogEl = null;\n /** @type {Nullable} */ #footerSlotEl = null;\n /** @type {ReturnType | undefined} */ #pulseAnimationTimeout = void 0;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($180b6dcf923bafc7$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector(\"dialog\");\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) return;\n if (name === \"open\" && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n if (document.body) document.body.style.overflowY = \"hidden\";\n this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n } else this.#dialogEl.close();\n }\n if (name === \"no-header\" && oldValue !== newValue) {\n /** @type {Nullable} */ const headerEl = this.#dialogEl.querySelector(\".dialog__header\");\n if (headerEl !== null) headerEl.hidden = this.noHeader;\n }\n if (name === \"no-animations\" && oldValue !== newValue) this.#dialogEl.classList.toggle(\"dialog--no-animations\", this.noAnimations);\n if (name === \"no-close-button\" && oldValue !== newValue) {\n /** @type {Nullable} */ const closeBtnEl = this.#dialogEl.querySelector(\".dialog__close\");\n if (closeBtnEl !== null) closeBtnEl.hidden = this.noCloseButton;\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"open\");\n this.#upgradeProperty(\"staticBackdrop\");\n this.#upgradeProperty(\"noHeader\");\n this.#upgradeProperty(\"noAnimations\");\n this.#upgradeProperty(\"noCloseButton\");\n this.#upgradeProperty(\"fullscreen\");\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.addEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.addEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.removeEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.removeEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */ get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n if (value) this.setAttribute(\"open\", \"\");\n else this.removeAttribute(\"open\");\n }\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */ get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(value) {\n if (value) this.setAttribute(\"static-backdrop\", \"\");\n else this.removeAttribute(\"static-backdrop\");\n }\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */ get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(value) {\n if (value) this.setAttribute(\"no-header\", \"\");\n else this.removeAttribute(\"no-header\");\n }\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */ get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(value) {\n if (value) this.setAttribute(\"no-animations\", \"\");\n else this.removeAttribute(\"no-animations\");\n }\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */ get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(value) {\n if (value) this.setAttribute(\"no-close-button\", \"\");\n else this.removeAttribute(\"no-close-button\");\n }\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */ get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(value) {\n if (value) this.setAttribute(\"fullscreen\", \"\");\n else this.removeAttribute(\"fullscreen\");\n }\n /**\n * Applies a pulse effect on the dialog.\n */ #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) return;\n this.#dialogEl?.classList.add(\"dialog--pulse\");\n this.#pulseAnimationTimeout = setTimeout(()=>{\n this.#dialogEl?.classList.remove(\"dialog--pulse\");\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION);\n }\n /**\n * Handles the close event of the dialog.\n */ #handleDialogClose = ()=>{\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n if (document.body) document.body.style.overflowY = \"\";\n this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n };\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */ #handleDialogCancel = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"escape-key\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */ #handleCloseButtonClick = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"close-button\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */ #handleDialogClick = (evt)=>{\n if (evt.target !== evt.currentTarget) return;\n const requestCloseEvent = this.#createRequestCloseEvent(\"backdrop-click\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n this.#dialogEl?.close();\n };\n /**\n * Handles the slotchange event of the footer slot.\n */ #handleFooterSlotChange = ()=>{\n if (this.#dialogEl === null) return;\n /** @type {Nullable} */ const footerEl = this.#dialogEl.querySelector(\".dialog__footer\");\n if (footerEl === null) return;\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n footerEl.hidden = !hasFooterSlotNodes;\n };\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */ #createRequestCloseEvent(reason) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason: reason,\n element: this\n }\n });\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */ show() {\n if (this.open) return;\n this.open = true;\n }\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */ hide() {\n if (!this.open) return;\n this.open = false;\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */ static defineCustomElement(elementName = \"modal-element\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $180b6dcf923bafc7$export$32589115725b904b);\n }\n}\n\n\n(0, $180b6dcf923bafc7$export$32589115725b904b).defineCustomElement();\n\n\nexport {$180b6dcf923bafc7$export$32589115725b904b as ModalElement};\n//# sourceMappingURL=modal-element-defined.js.map\n","import { ModalElement } from './modal-element.js';\n\nModalElement.defineCustomElement();\n\nexport { ModalElement };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nconst PULSE_ANIMATION_DURATION = 300;\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */\nclass ModalElement extends HTMLElement {\n /** @type {Nullable} */\n #dialogEl = null;\n\n /** @type {Nullable} */\n #footerSlotEl = null;\n\n /** @type {ReturnType | undefined} */\n #pulseAnimationTimeout = void 0;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector('dialog');\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n\n static get observedAttributes() {\n return ['open', 'no-header', 'no-animations', 'no-close-button'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) {\n return;\n }\n\n if (name === 'open' && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n\n if (document.body) {\n document.body.style.overflowY = 'hidden';\n }\n\n this.dispatchEvent(new CustomEvent('me-open', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n } else {\n this.#dialogEl.close();\n }\n }\n\n if (name === 'no-header' && oldValue !== newValue) {\n /** @type {Nullable} */\n const headerEl = this.#dialogEl.querySelector('.dialog__header');\n\n if (headerEl !== null) {\n headerEl.hidden = this.noHeader;\n }\n }\n\n if (name === 'no-animations' && oldValue !== newValue) {\n this.#dialogEl.classList.toggle('dialog--no-animations', this.noAnimations);\n }\n\n if (name === 'no-close-button' && oldValue !== newValue) {\n /** @type {Nullable} */\n const closeBtnEl = this.#dialogEl.querySelector('.dialog__close');\n\n if (closeBtnEl !== null) {\n closeBtnEl.hidden = this.noCloseButton;\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('open');\n this.#upgradeProperty('staticBackdrop');\n this.#upgradeProperty('noHeader');\n this.#upgradeProperty('noAnimations');\n this.#upgradeProperty('noCloseButton');\n this.#upgradeProperty('fullscreen');\n\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.addEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.addEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.removeEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.removeEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */\n get open() {\n return this.hasAttribute('open');\n }\n\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n } else {\n this.removeAttribute('open');\n }\n }\n\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */\n get staticBackdrop() {\n return this.hasAttribute('static-backdrop');\n }\n\n set staticBackdrop(value) {\n if (value) {\n this.setAttribute('static-backdrop', '');\n } else {\n this.removeAttribute('static-backdrop');\n }\n }\n\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */\n get noHeader() {\n return this.hasAttribute('no-header');\n }\n\n set noHeader(value) {\n if (value) {\n this.setAttribute('no-header', '');\n } else {\n this.removeAttribute('no-header');\n }\n }\n\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */\n get noAnimations() {\n return this.hasAttribute('no-animations');\n }\n\n set noAnimations(value) {\n if (value) {\n this.setAttribute('no-animations', '');\n } else {\n this.removeAttribute('no-animations');\n }\n }\n\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */\n get noCloseButton() {\n return this.hasAttribute('no-close-button');\n }\n\n set noCloseButton(value) {\n if (value) {\n this.setAttribute('no-close-button', '');\n } else {\n this.removeAttribute('no-close-button');\n }\n }\n\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */\n get fullscreen() {\n return this.hasAttribute('fullscreen');\n }\n\n set fullscreen(value) {\n if (value) {\n this.setAttribute('fullscreen', '');\n } else {\n this.removeAttribute('fullscreen');\n }\n }\n\n /**\n * Applies a pulse effect on the dialog.\n */\n #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) {\n return;\n }\n\n this.#dialogEl?.classList.add('dialog--pulse');\n\n this.#pulseAnimationTimeout = setTimeout(() => {\n this.#dialogEl?.classList.remove('dialog--pulse');\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, PULSE_ANIMATION_DURATION);\n }\n\n /**\n * Handles the close event of the dialog.\n */\n #handleDialogClose = () => {\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n\n if (document.body) {\n document.body.style.overflowY = '';\n }\n\n this.dispatchEvent(new CustomEvent('me-close', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n };\n\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */\n #handleDialogCancel = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('escape-key');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */\n #handleCloseButtonClick = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('close-button');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */\n #handleDialogClick = evt => {\n if (evt.target !== evt.currentTarget) {\n return;\n }\n\n const requestCloseEvent = this.#createRequestCloseEvent('backdrop-click');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n\n this.#dialogEl?.close();\n };\n\n /**\n * Handles the slotchange event of the footer slot.\n */\n #handleFooterSlotChange = () => {\n if (this.#dialogEl === null) {\n return;\n }\n\n /** @type {Nullable} */\n const footerEl = this.#dialogEl.querySelector('.dialog__footer');\n\n if (footerEl === null) {\n return;\n }\n\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n\n footerEl.hidden = !hasFooterSlotNodes;\n };\n\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */\n #createRequestCloseEvent(reason) {\n return new CustomEvent('me-request-close', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason,\n element: this\n }\n });\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */\n show() {\n if (this.open) {\n return;\n }\n\n this.open = true;\n }\n\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */\n hide() {\n if (!this.open) {\n return;\n }\n\n this.open = false;\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */\n static defineCustomElement(elementName = 'modal-element') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, ModalElement);\n }\n }\n}\n\nexport { ModalElement };\n","Object.defineProperty({},\"FilesDropzone\",{get:function(){return m},set:void 0,enumerable:!0,configurable:!0});let e=new Map([[\"aac\",\"audio/aac\"],[\"abw\",\"application/x-abiword\"],[\"arc\",\"application/x-freearc\"],[\"avif\",\"image/avif\"],[\"avi\",\"video/x-msvideo\"],[\"azw\",\"application/vnd.amazon.ebook\"],[\"bin\",\"application/octet-stream\"],[\"bmp\",\"image/bmp\"],[\"bz\",\"application/x-bzip\"],[\"bz2\",\"application/x-bzip2\"],[\"cda\",\"application/x-cdf\"],[\"csh\",\"application/x-csh\"],[\"css\",\"text/css\"],[\"csv\",\"text/csv\"],[\"doc\",\"application/msword\"],[\"docx\",\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"],[\"eot\",\"application/vnd.ms-fontobject\"],[\"epub\",\"application/epub+zip\"],[\"gz\",\"application/gzip\"],[\"gif\",\"image/gif\"],[\"heic\",\"image/heic\"],[\"heif\",\"image/heif\"],[\"htm\",\"text/html\"],[\"html\",\"text/html\"],[\"ico\",\"image/vnd.microsoft.icon\"],[\"ics\",\"text/calendar\"],[\"jar\",\"application/java-archive\"],[\"jpeg\",\"image/jpeg\"],[\"jpg\",\"image/jpeg\"],[\"jxl\",\"image/jxl\"],[\"js\",\"text/javascript\"],[\"json\",\"application/json\"],[\"jsonld\",\"application/ld+json\"],[\"markdown\",\"text/markdown\"],[\"md\",\"text/markdown\"],[\"mid\",\"audio/midi\"],[\"midi\",\"audio/midi\"],[\"mjs\",\"text/javascript\"],[\"mp3\",\"audio/mpeg\"],[\"mp4\",\"video/mp4\"],[\"mpeg\",\"video/mpeg\"],[\"mpkg\",\"application/vnd.apple.installer+xml\"],[\"odp\",\"application/vnd.oasis.opendocument.presentation\"],[\"ods\",\"application/vnd.oasis.opendocument.spreadsheet\"],[\"odt\",\"application/vnd.oasis.opendocument.text\"],[\"oga\",\"audio/ogg\"],[\"ogv\",\"video/ogg\"],[\"ogx\",\"application/ogg\"],[\"opus\",\"audio/opus\"],[\"otf\",\"font/otf\"],[\"png\",\"image/png\"],[\"pdf\",\"application/pdf\"],[\"php\",\"application/x-httpd-php\"],[\"ppt\",\"application/vnd.ms-powerpoint\"],[\"pptx\",\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"],[\"rar\",\"application/vnd.rar\"],[\"rtf\",\"application/rtf\"],[\"sh\",\"application/x-sh\"],[\"svg\",\"image/svg+xml\"],[\"swf\",\"application/x-shockwave-flash\"],[\"tar\",\"application/x-tar\"],[\"tif\",\"image/tiff\"],[\"tiff\",\"image/tiff\"],[\"ts\",\"video/mp2t\"],[\"ttf\",\"font/ttf\"],[\"txt\",\"text/plain\"],[\"vsd\",\"application/vnd.visio\"],[\"wav\",\"audio/wav\"],[\"weba\",\"audio/webm\"],[\"webm\",\"video/webm\"],[\"webp\",\"image/webp\"],[\"woff\",\"font/woff\"],[\"woff2\",\"font/woff2\"],[\"xhtml\",\"application/xhtml+xml\"],[\"xls\",\"application/vnd.ms-excel\"],[\"xlsx\",\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],[\"xml\",\"application/xml\"],[\"xul\",\"application/vnd.mozilla.xul+xml\"],[\"zip\",\"application/zip\"],[\"7z\",\"application/x-7z-compressed\"],[\"mkv\",\"video/x-matroska\"],[\"mov\",\"video/quicktime\"],[\"msg\",\"application/vnd.ms-outlook\"]]),t=[\".DS_Store\",\"Thumbs.db\"],o=t=>{let{name:o}=t;if(o&&-1!==o.lastIndexOf(\".\")&&!t.type){let i=(o.split(\".\").pop()||\"\").toLowerCase(),r=e.get(i);r&&Object.defineProperty(t,\"type\",{value:r,writable:!1,configurable:!1,enumerable:!0})}return t},i=(e,t)=>{let i=o(e);if(\"string\"!=typeof i.path){let{webkitRelativePath:o}=e;Object.defineProperty(i,\"path\",{value:\"string\"==typeof t?t:o||e.name,writable:!1,configurable:!1,enumerable:!0})}return i},r=async e=>await new Promise((t,o)=>{e.readEntries(t,o)}),a=async e=>{let t=[],o=await r(e);for(;o.length>0;)t.push(...o),o=await r(e);return t},n=e=>new Promise((t,o)=>{e.file(o=>t(i(o,e.fullPath)),o)}),s=async e=>{let o=[],i=[];for(let t of e){if(\"file\"!==t.kind)continue;let e=t.getAsEntry?t.getAsEntry():t.webkitGetAsEntry();i.push(e)}for(;i.length>0;){let e=i.shift();if(e){if(e.isFile){let i=await n(e);-1===t.indexOf(i.name)&&o.push(i)}else e.isDirectory&&i.push(...await a(e.createReader()))}}return o},d=async e=>{let o=[];for(let r of e)-1===t.indexOf(r.name)&&o.push(i(r));return o},l=async e=>e.dataTransfer?e.dataTransfer.items?await s(e.dataTransfer.items):await d(e.dataTransfer.files):await d(e.target.files),p=\"files-dropzone\",c=\"TOO_MANY_FILES\",h=document.createElement(\"template\"),u=`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;h.innerHTML=`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;class m extends HTMLElement{#e=null;#t=null;constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(h.content.cloneNode(!0)),this.shadowRoot&&(this.#e=this.shadowRoot.getElementById(\"fileInput\"),this.#t=this.shadowRoot.getElementById(\"dropzoneEl\"))}static get observedAttributes(){return[\"accept\",\"disabled\",\"multiple\",\"no-keyboard\"]}attributeChangedCallback(e,t,o){\"accept\"===e&&t!==o&&this.#e&&(this.#e.accept=this.accept),\"disabled\"===e&&t!==o&&this.#e&&(this.#e.disabled=this.disabled,this.disabled?this.#t?.removeAttribute(\"tabindex\"):this.#t?.setAttribute(\"tabindex\",\"0\")),\"multiple\"===e&&t!==o&&this.#e&&(this.#e.multiple=this.multiple),\"no-keyboard\"===e&&t!==o&&this.#t&&(this.noKeyboard?this.#t.removeAttribute(\"tabindex\"):this.#t.setAttribute(\"tabindex\",\"0\"))}connectedCallback(){this.#o(\"accept\"),this.#o(\"disabled\"),this.#o(\"maxFiles\"),this.#o(\"maxSize\"),this.#o(\"minSize\"),this.#o(\"multiple\"),this.#o(\"noClick\"),this.#o(\"noDrag\"),this.#o(\"noKeyboard\"),this.#o(\"autoFocus\"),this.#o(\"noStyle\"),this.#e?.addEventListener(\"change\",this.#i),this.#t?.addEventListener(\"dragenter\",this.#r),this.#t?.addEventListener(\"dragover\",this.#a),this.#t?.addEventListener(\"dragleave\",this.#n),this.#t?.addEventListener(\"drop\",this.#s),this.#t?.addEventListener(\"click\",this.#d),this.#t?.addEventListener(\"keyup\",this.#l),this.autoFocus&&this.#t?.focus()}disconnectedCallback(){this.#e?.removeEventListener(\"change\",this.#i),this.#t?.removeEventListener(\"dragenter\",this.#r),this.#t?.removeEventListener(\"dragover\",this.#a),this.#t?.removeEventListener(\"dragleave\",this.#n),this.#t?.removeEventListener(\"drop\",this.#s),this.#t?.removeEventListener(\"click\",this.#d),this.#t?.removeEventListener(\"keyup\",this.#l)}get accept(){return this.getAttribute(\"accept\")||\"\"}set accept(e){this.setAttribute(\"accept\",null!=e?e.toString():e)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(e){this.toggleAttribute(\"disabled\",!!e)}get maxFiles(){let e=Number(this.getAttribute(\"max-files\"))||0;return e<=0?1/0:Math.floor(Math.abs(e))}set maxFiles(e){this.setAttribute(\"max-files\",null!=e?e.toString():e)}get maxSize(){let e=this.getAttribute(\"max-size\");if(null===e)return 1/0;let t=Number(e);return Number.isNaN(t)?1/0:t}set maxSize(e){this.setAttribute(\"max-size\",null!=e?e.toString():e)}get minSize(){let e=this.getAttribute(\"min-size\");if(null===e)return 0;let t=Number(e);return Number.isNaN(t)?0:t}set minSize(e){this.setAttribute(\"min-size\",null!=e?e.toString():e)}get multiple(){return this.hasAttribute(\"multiple\")}set multiple(e){this.toggleAttribute(\"multiple\",!!e)}get noClick(){return this.hasAttribute(\"no-click\")}set noClick(e){this.toggleAttribute(\"no-click\",!!e)}get noDrag(){return this.hasAttribute(\"no-drag\")}set noDrag(e){this.toggleAttribute(\"no-drag\",!!e)}get noKeyboard(){return this.hasAttribute(\"no-keyboard\")}set noKeyboard(e){this.toggleAttribute(\"no-keyboard\",!!e)}get autoFocus(){return this.hasAttribute(\"auto-focus\")}set autoFocus(e){this.toggleAttribute(\"auto-focus\",!!e)}get noStyle(){return this.hasAttribute(\"no-style\")}set noStyle(e){this.toggleAttribute(\"no-style\",!!e)}#i=async e=>{try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}};#r=()=>{this.disabled||this.noDrag||this.dispatchEvent(new Event(`${p}-dragenter`,{bubbles:!0,composed:!0}))};#a=e=>{if(e.preventDefault(),this.disabled||this.noDrag){e.dataTransfer.dropEffect=\"none\";return}e.dataTransfer.dropEffect=\"copy\",this.#t&&(this.#t.classList.add(\"dropzone--dragover\"),this.#t.part.add(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragover`,{bubbles:!0,composed:!0}))};#n=()=>{this.disabled||this.noDrag||(this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragleave`,{bubbles:!0,composed:!0})))};#s=async e=>{if(!this.disabled&&!this.noDrag){e.preventDefault(),this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\"));try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}}};#d=()=>{this.disabled||this.noClick||this.#e?.click()};#l=e=>{this.disabled||this.noKeyboard||\" \"!==e.key&&\"Enter\"!==e.key||this.#e?.click()};#p(e){if(!Array.isArray(e)||!e.length)return;let t=[],o=[],i=e.length;if(!this.multiple&&i>1)for(let t of e)o.push({file:t,errors:[{code:c,message:\"Too many files selected. Only 1 file is allowed.\"}]});else if(this.multiple&&i>this.maxFiles)for(let t of e)o.push({file:t,errors:[{code:c,message:`Too many files selected. Only ${this.maxFiles} ${this.maxFiles>1?\"files are\":\"file is\"} allowed.`}]});else for(let i of e){let e=function(e,t=\"\"){if(!t)return!0;let o=[...new Set(t.split(\",\").map(e=>e.trim()).filter(Boolean))],i=e.type,r=i.replace(/\\/.*$/,\"\");for(let t of o)if(\".\"===t.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(t.toLowerCase(),e.name.length-t.length))return!0}else if(/\\/\\*$/.test(t)){if(r===t.replace(/\\/.*$/,\"\"))return!0}else if(i===t)return!0;return!1}(i,this.accept),r=i.size>this.maxSize,a=i.size0&&this.dispatchEvent(new CustomEvent(`${p}-drop-accepted`,{bubbles:!0,composed:!0,detail:{acceptedFiles:t}})),o.length>0&&this.dispatchEvent(new CustomEvent(`${p}-drop-rejected`,{bubbles:!0,composed:!0,detail:{rejectedFiles:o}})),this.#e&&(this.#e.value=this.#e.defaultValue)}openFileDialog(){this.disabled||this.#e?.click()}#o(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}static defineCustomElement(e=p){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,m)}}m.defineCustomElement();export{m as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $862aa3736b0514bc$exports = {};\n\n$parcel$export($862aa3736b0514bc$exports, \"FilesDropzone\", function () { return $862aa3736b0514bc$export$6ccd1735166caad9; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ // @ts-check\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */ function $38f222170fd4d21a$export$7c47054fed488f80(file, acceptedTypeSpecifiers = \"\") {\n if (!acceptedTypeSpecifiers) return true;\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(\",\").map((v)=>v.trim()).filter(Boolean))\n ];\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, \"\");\n for (const validType of acceptedMimeTypesList){\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (fileMimeType === validType) return true;\n }\n }\n return false;\n}\n\n\n// @ts-check\n/**\n * A map of common file extensions and their associated MIME types.\n */ const $f31161edf38949e9$var$COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n // Others\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]);\nconst $f31161edf38949e9$var$FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n \".DS_Store\",\n \"Thumbs.db\" // Windows\n];\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */ const $f31161edf38949e9$var$toFileWithMimeType = (file)=>{\n const { name: name } = file;\n const hasExtension = name && name.lastIndexOf(\".\") !== -1;\n if (hasExtension && !file.type) {\n const extension = (name.split(\".\").pop() || \"\").toLowerCase();\n const type = $f31161edf38949e9$var$COMMON_MIME_TYPES.get(extension);\n if (type) Object.defineProperty(file, \"type\", {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return file;\n};\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */ const $f31161edf38949e9$var$toFileWithPath = (file, path)=>{\n const fileWithMimeType = $f31161edf38949e9$var$toFileWithMimeType(file);\n // @ts-ignore\n if (typeof fileWithMimeType.path !== \"string\") {\n const { webkitRelativePath: webkitRelativePath } = file;\n Object.defineProperty(fileWithMimeType, \"path\", {\n value: typeof path === \"string\" ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return fileWithMimeType;\n};\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readEntriesPromise = async (directoryReader)=>{\n return await new Promise((resolve, reject)=>{\n directoryReader.readEntries(resolve, reject);\n });\n};\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readAllDirectoryEntries = async (directoryReader)=>{\n const entries = [];\n let readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n while(readEntries.length > 0){\n entries.push(...readEntries);\n readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n }\n return entries;\n};\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */ const $f31161edf38949e9$var$getFileFromFileEntry = (fileEntry)=>{\n return new Promise((resolve, reject)=>{\n fileEntry.file((file)=>resolve($f31161edf38949e9$var$toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromDataTransferItemList = async (dataTransferItemList)=>{\n const files = [];\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n for (const item of dataTransferItemList){\n if (item.kind !== \"file\") continue;\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n queue.push(entry);\n }\n while(queue.length > 0){\n const entry = queue.shift();\n if (!entry) continue;\n else if (entry.isFile) {\n const file = await $f31161edf38949e9$var$getFileFromFileEntry(entry);\n if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push(file);\n } else if (entry.isDirectory) queue.push(...await $f31161edf38949e9$var$readAllDirectoryEntries(entry.createReader()));\n }\n return files;\n};\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromFileList = async (fileList)=>{\n const files = [];\n for (const file of fileList)if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push($f31161edf38949e9$var$toFileWithPath(file));\n return files;\n};\nconst $f31161edf38949e9$export$6d52664cd15c442 = async (evt)=>{\n if (evt.dataTransfer) return evt.dataTransfer.items ? await $f31161edf38949e9$var$getFilesFromDataTransferItemList(evt.dataTransfer.items) : await $f31161edf38949e9$var$getFilesFromFileList(evt.dataTransfer.files);\n return await $f31161edf38949e9$var$getFilesFromFileList(evt.target.files);\n};\n\n\nconst $862aa3736b0514bc$var$COMPONENT_NAME = \"files-dropzone\";\nconst $862aa3736b0514bc$var$TOO_MANY_FILES = \"TOO_MANY_FILES\";\nconst $862aa3736b0514bc$var$FILE_TOO_LARGE = \"FILE_TOO_LARGE\";\nconst $862aa3736b0514bc$var$FILE_TOO_SMALL = \"FILE_TOO_SMALL\";\nconst $862aa3736b0514bc$var$INVALID_MIME_TYPE = \"INVALID_MIME_TYPE\";\nconst $862aa3736b0514bc$var$template = document.createElement(\"template\");\nconst $862aa3736b0514bc$var$styles = /* css */ `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$862aa3736b0514bc$var$template.innerHTML = /* html */ `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */ class $862aa3736b0514bc$export$6ccd1735166caad9 extends HTMLElement {\n /** @type {Nullable} */ #fileInput = null;\n /** @type {Nullable} */ #dropzoneEl = null;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($862aa3736b0514bc$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */ this.shadowRoot.getElementById(\"fileInput\");\n this.#dropzoneEl = this.shadowRoot.getElementById(\"dropzoneEl\");\n }\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"accept\" && oldValue !== newValue && this.#fileInput) this.#fileInput.accept = this.accept;\n if (name === \"disabled\" && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n if (this.disabled) this.#dropzoneEl?.removeAttribute(\"tabindex\");\n else this.#dropzoneEl?.setAttribute(\"tabindex\", \"0\");\n }\n if (name === \"multiple\" && oldValue !== newValue && this.#fileInput) this.#fileInput.multiple = this.multiple;\n if (name === \"no-keyboard\" && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) this.#dropzoneEl.removeAttribute(\"tabindex\");\n else this.#dropzoneEl.setAttribute(\"tabindex\", \"0\");\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"accept\");\n this.#upgradeProperty(\"disabled\");\n this.#upgradeProperty(\"maxFiles\");\n this.#upgradeProperty(\"maxSize\");\n this.#upgradeProperty(\"minSize\");\n this.#upgradeProperty(\"multiple\");\n this.#upgradeProperty(\"noClick\");\n this.#upgradeProperty(\"noDrag\");\n this.#upgradeProperty(\"noKeyboard\");\n this.#upgradeProperty(\"autoFocus\");\n this.#upgradeProperty(\"noStyle\");\n this.#fileInput?.addEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.addEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.addEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.addEventListener(\"keyup\", this.#handleKeyUp);\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#fileInput?.removeEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.removeEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.removeEventListener(\"keyup\", this.#handleKeyUp);\n }\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */ get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(value) {\n this.setAttribute(\"accept\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */ get maxFiles() {\n const num = Number(this.getAttribute(\"max-files\")) || 0;\n if (num <= 0) return Infinity;\n return Math.floor(Math.abs(num));\n }\n set maxFiles(value) {\n this.setAttribute(\"max-files\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */ get maxSize() {\n const value = this.getAttribute(\"max-size\");\n if (value === null) return Infinity;\n const num = Number(value);\n return Number.isNaN(num) ? Infinity : num;\n }\n set maxSize(value) {\n this.setAttribute(\"max-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */ get minSize() {\n const value = this.getAttribute(\"min-size\");\n if (value === null) return 0;\n const num = Number(value);\n return Number.isNaN(num) ? 0 : num;\n }\n set minSize(value) {\n this.setAttribute(\"min-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */ get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(value) {\n this.toggleAttribute(\"multiple\", !!value);\n }\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */ get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(value) {\n this.toggleAttribute(\"no-click\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */ get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(value) {\n this.toggleAttribute(\"no-drag\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */ get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(value) {\n this.toggleAttribute(\"no-keyboard\", !!value);\n }\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */ get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(value) {\n this.toggleAttribute(\"auto-focus\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */ get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(value) {\n this.toggleAttribute(\"no-style\", !!value);\n }\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */ #handleFileInputChange = async (evt)=>{\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the dragenter event of the dropzone.\n */ #handleDragEnter = ()=>{\n if (this.disabled || this.noDrag) return;\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDragOver = (evt)=>{\n evt.preventDefault();\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = \"none\";\n return;\n }\n evt.dataTransfer.dropEffect = \"copy\";\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add(\"dropzone--dragover\");\n this.#dropzoneEl.part.add(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragleave event of the dropzone.\n */ #handleDragLeave = ()=>{\n if (this.disabled || this.noDrag) return;\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDrop = async (evt)=>{\n if (this.disabled || this.noDrag) return;\n evt.preventDefault();\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the click event of the dropzone.\n */ #handleClick = ()=>{\n if (this.disabled || this.noClick) return;\n this.#fileInput?.click();\n };\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleKeyUp = (evt)=>{\n if (this.disabled || this.noKeyboard) return;\n if (evt.key === \" \" || evt.key === \"Enter\") this.#fileInput?.click();\n };\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */ #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) return;\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }\n ]\n });\n else if (this.multiple && filesLength > this.maxFiles) // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files){\n const fileHasValidType = (0, $38f222170fd4d21a$export$7c47054fed488f80)(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) acceptedFiles.push(file);\n else {\n const errors = [];\n if (!fileHasValidType) errors.push({\n code: $862aa3736b0514bc$var$INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n if (fileExceedsMaxSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n if (fileIsSmallerThanMinSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n rejectedFiles.push({\n file: file,\n errors: errors\n });\n }\n }\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles,\n rejectedFiles: rejectedFiles\n }\n }));\n if (acceptedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles\n }\n }));\n if (rejectedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles: rejectedFiles\n }\n }));\n if (this.#fileInput) this.#fileInput.value = this.#fileInput.defaultValue;\n }\n /**\n * Opens the file dialog programmatically.\n */ openFileDialog() {\n if (this.disabled) return;\n this.#fileInput?.click();\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */ static defineCustomElement(elementName = $862aa3736b0514bc$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $862aa3736b0514bc$export$6ccd1735166caad9);\n }\n}\n\n\n(0, $862aa3736b0514bc$export$6ccd1735166caad9).defineCustomElement();\n\n\nexport {$862aa3736b0514bc$export$6ccd1735166caad9 as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","import { FilesDropzone } from './files-dropzone.js';\n\nFilesDropzone.defineCustomElement();\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nimport { isValidFile } from './utils/is-valid-file.js';\nimport { getFilesFromEvent } from './utils/files-selector.js';\n\nconst COMPONENT_NAME = 'files-dropzone';\nconst TOO_MANY_FILES = 'TOO_MANY_FILES';\nconst FILE_TOO_LARGE = 'FILE_TOO_LARGE';\nconst FILE_TOO_SMALL = 'FILE_TOO_SMALL';\nconst INVALID_MIME_TYPE = 'INVALID_MIME_TYPE';\nconst template = document.createElement('template');\n\nconst styles = /* css */`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */\nclass FilesDropzone extends HTMLElement {\n /** @type {Nullable} */\n #fileInput = null;\n\n /** @type {Nullable} */\n #dropzoneEl = null;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */(this.shadowRoot.getElementById('fileInput'));\n this.#dropzoneEl = this.shadowRoot.getElementById('dropzoneEl');\n }\n }\n\n static get observedAttributes() {\n return ['accept', 'disabled', 'multiple', 'no-keyboard'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'accept' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.accept = this.accept;\n }\n\n if (name === 'disabled' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n\n if (this.disabled) {\n this.#dropzoneEl?.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl?.setAttribute('tabindex', '0');\n }\n }\n\n if (name === 'multiple' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.multiple = this.multiple;\n }\n\n if (name === 'no-keyboard' && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) {\n this.#dropzoneEl.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('accept');\n this.#upgradeProperty('disabled');\n this.#upgradeProperty('maxFiles');\n this.#upgradeProperty('maxSize');\n this.#upgradeProperty('minSize');\n this.#upgradeProperty('multiple');\n this.#upgradeProperty('noClick');\n this.#upgradeProperty('noDrag');\n this.#upgradeProperty('noKeyboard');\n this.#upgradeProperty('autoFocus');\n this.#upgradeProperty('noStyle');\n\n this.#fileInput?.addEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.addEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.addEventListener('click', this.#handleClick);\n this.#dropzoneEl?.addEventListener('keyup', this.#handleKeyUp);\n\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#fileInput?.removeEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.removeEventListener('click', this.#handleClick);\n this.#dropzoneEl?.removeEventListener('keyup', this.#handleKeyUp);\n }\n\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */\n get accept() {\n return this.getAttribute('accept') || '';\n }\n\n set accept(value) {\n this.setAttribute('accept', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */\n get maxFiles() {\n const num = Number(this.getAttribute('max-files')) || 0;\n\n if (num <= 0) {\n return Infinity;\n }\n\n return Math.floor(Math.abs(num));\n }\n\n set maxFiles(value) {\n this.setAttribute('max-files', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */\n get maxSize() {\n const value = this.getAttribute('max-size');\n\n if (value === null) {\n return Infinity;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? Infinity : num;\n }\n\n set maxSize(value) {\n this.setAttribute('max-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */\n get minSize() {\n const value = this.getAttribute('min-size');\n\n if (value === null) {\n return 0;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? 0 : num;\n }\n\n set minSize(value) {\n this.setAttribute('min-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */\n get multiple() {\n return this.hasAttribute('multiple');\n }\n\n set multiple(value) {\n this.toggleAttribute('multiple', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */\n get noClick() {\n return this.hasAttribute('no-click');\n }\n\n set noClick(value) {\n this.toggleAttribute('no-click', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */\n get noDrag() {\n return this.hasAttribute('no-drag');\n }\n\n set noDrag(value) {\n this.toggleAttribute('no-drag', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */\n get noKeyboard() {\n return this.hasAttribute('no-keyboard');\n }\n\n set noKeyboard(value) {\n this.toggleAttribute('no-keyboard', !!value);\n }\n\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */\n get autoFocus() {\n return this.hasAttribute('auto-focus');\n }\n\n set autoFocus(value) {\n this.toggleAttribute('auto-focus', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */\n get noStyle() {\n return this.hasAttribute('no-style');\n }\n\n set noStyle(value) {\n this.toggleAttribute('no-style', !!value);\n }\n\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */\n #handleFileInputChange = async evt => {\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the dragenter event of the dropzone.\n */\n #handleDragEnter = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDragOver = evt => {\n evt.preventDefault();\n\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = 'none';\n return;\n }\n\n evt.dataTransfer.dropEffect = 'copy';\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add('dropzone--dragover');\n this.#dropzoneEl.part.add('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragleave event of the dropzone.\n */\n #handleDragLeave = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDrop = async evt => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n evt.preventDefault();\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the click event of the dropzone.\n */\n #handleClick = () => {\n if (this.disabled || this.noClick) {\n return;\n }\n\n this.#fileInput?.click();\n };\n\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleKeyUp = evt => {\n if (this.disabled || this.noKeyboard) {\n return;\n }\n\n if (evt.key === ' ' || evt.key === 'Enter') {\n this.#fileInput?.click();\n }\n };\n\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */\n #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) {\n return;\n }\n\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) {\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }]\n });\n }\n } else if (this.multiple && filesLength > this.maxFiles) {\n // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? 'files are' : 'file is'} allowed.`\n }]\n });\n }\n } else {\n // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files) {\n const fileHasValidType = isValidFile(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) {\n acceptedFiles.push(file);\n } else {\n const errors = [];\n\n if (!fileHasValidType) {\n errors.push({\n code: INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n }\n\n if (fileExceedsMaxSize) {\n errors.push({\n code: FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n }\n\n if (fileIsSmallerThanMinSize) {\n errors.push({\n code: FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n }\n\n rejectedFiles.push({ file, errors });\n }\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles,\n rejectedFiles\n }\n }));\n\n if (acceptedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles\n }\n }));\n }\n\n if (rejectedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles\n }\n }));\n }\n\n if (this.#fileInput) {\n this.#fileInput.value = this.#fileInput.defaultValue;\n }\n }\n\n /**\n * Opens the file dialog programmatically.\n */\n openFileDialog() {\n if (this.disabled) {\n return;\n }\n\n this.#fileInput?.click();\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, FilesDropzone);\n }\n }\n}\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */\nexport function isValidFile(file, acceptedTypeSpecifiers = '') {\n if (!acceptedTypeSpecifiers) {\n return true;\n }\n\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(',').map(v => v.trim()).filter(Boolean))\n ];\n\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, '');\n\n for (const validType of acceptedMimeTypesList) {\n if (validType.charAt(0) === '.') {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, '')) {\n return true;\n }\n } else {\n if (fileMimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n}\n","// @ts-check\n\n/**\n * A map of common file extensions and their associated MIME types.\n */\nconst COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['jxl', 'image/jxl'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['markdown', 'text/markdown'],\n ['md', 'text/markdown'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */\nconst toFileWithMimeType = file => {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const extension = (name.split('.').pop() || '').toLowerCase();\n const type = COMMON_MIME_TYPES.get(extension);\n\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n};\n\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */\nconst toFileWithPath = (file, path) => {\n const fileWithMimeType = toFileWithMimeType(file);\n\n // @ts-ignore\n if (typeof fileWithMimeType.path !== 'string') {\n const { webkitRelativePath } = file;\n\n Object.defineProperty(fileWithMimeType, 'path', {\n value: typeof path === 'string' ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return fileWithMimeType;\n};\n\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readEntriesPromise = async directoryReader => {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n};\n\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readAllDirectoryEntries = async directoryReader => {\n const entries = [];\n let readEntries = await readEntriesPromise(directoryReader);\n\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n\n return entries;\n};\n\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */\nconst getFileFromFileEntry = fileEntry => {\n return new Promise((resolve, reject) => {\n fileEntry.file(file => resolve(toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromDataTransferItemList = async dataTransferItemList => {\n const files = [];\n\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n\n for (const item of dataTransferItemList) {\n if (item.kind !== 'file') {\n // Ignore non-file items, such as links.\n continue;\n }\n\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n\n queue.push(entry);\n }\n\n while (queue.length > 0) {\n const entry = queue.shift();\n\n if (!entry) {\n continue;\n } else if (entry.isFile) {\n const file = await getFileFromFileEntry(entry);\n\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(file);\n }\n } else if (entry.isDirectory) {\n queue.push(...await readAllDirectoryEntries(entry.createReader()));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromFileList = async fileList => {\n const files = [];\n\n for (const file of fileList) {\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(toFileWithPath(file));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from an event.\n * This function supports both `drop` and `change` events.\n *\n * @param {*} evt - The event to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nexport const getFilesFromEvent = async evt => {\n if (evt.dataTransfer) {\n return evt.dataTransfer.items\n ? await getFilesFromDataTransferItemList(evt.dataTransfer.items)\n : await getFilesFromFileList(evt.dataTransfer.files);\n }\n\n return await getFilesFromFileList(evt.target.files);\n};\n","/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */\nexport const arrayRemove = (array, ...indexes) => {\n if (!Array.isArray(array)) {\n throw new TypeError('Expected an array for first argument');\n }\n\n return array.filter((_, i) => indexes.indexOf(i) === -1);\n};\n","/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */\nconst uid = (prefix = '', suffix = '') => {\n const prefixString = typeof prefix === 'string' && prefix !== '' ? prefix + '-' : '';\n const suffixString = typeof suffix === 'string' && suffix !== '' ? '-' + suffix : '';\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n\n return `${prefixString}${randomString}${suffixString}`;\n};\n\nexport { uid };\n","export const ACCEPTED_MIME_TYPES = ['image/jpg', 'image/jpeg', 'image/png', 'image/apng', 'image/gif', 'image/webp', 'image/avif'];\n","import AntonRegular from 'url:../assets/fonts/Anton/Anton-Regular.ttf';\nimport OswaldRegular from 'url:../assets/fonts/Oswald/Oswald-Regular.ttf';\nimport OswaldBold from 'url:../assets/fonts/Oswald/Oswald-Bold.ttf';\nimport RobotoRegular from 'url:../assets/fonts/Roboto/Roboto-Regular.ttf';\nimport RobotoBold from 'url:../assets/fonts/Roboto/Roboto-Bold.ttf';\nimport RobotoCondensedRegular from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Regular.ttf';\nimport RobotoCondensedBold from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Bold.ttf';\nimport CourierPrimeRegular from 'url:../assets/fonts/CourierPrime/CourierPrime-Regular.ttf';\nimport CourierPrimeBold from 'url:../assets/fonts/CourierPrime/CourierPrime-Bold.ttf';\nimport OpenSansRegular from 'url:../assets/fonts/OpenSans/OpenSans-Regular.ttf';\nimport OpenSansBold from 'url:../assets/fonts/OpenSans/OpenSans-Bold.ttf';\n\nexport const customFonts = [\n { name: 'Anton', label: 'Anton', path: AntonRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Regular', label: 'Oswald', path: OswaldRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Bold', label: 'Oswald Bold', path: OswaldBold, style: 'normal', weight: '700' },\n { name: 'Roboto-Regular', label: 'Roboto', path: RobotoRegular, style: 'normal', weight: '400' },\n { name: 'Roboto-Bold', label: 'Roboto Bold', path: RobotoBold, style: 'normal', weight: '700' },\n { name: 'RobotoCondensed-Regular', label: 'Roboto Condensed', path: RobotoCondensedRegular, style: 'normal', weight: '400' },\n { name: 'RobotoCondensed-Bold', label: 'Roboto Condensed Bold', path: RobotoCondensedBold, style: 'normal', weight: '700' },\n { name: 'CourierPrime-Regular', label: 'Courier Prime', path: CourierPrimeRegular, style: 'normal', weight: '400' },\n { name: 'CourierPrime-Bold', label: 'Courier Prime Bold', path: CourierPrimeBold, style: 'normal', weight: '700' },\n { name: 'OpenSans-Regular', label: 'Open Sans', path: OpenSansRegular, style: 'normal', weight: '400' },\n { name: 'OpenSans-Bold', label: 'Open Sans Bold', path: OpenSansBold, style: 'normal', weight: '400' }\n];\n\nexport const loadCustomFont = async (name, path, options = {}) => {\n try {\n const font = new FontFace(name, `url(${path})`, { ...options });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Anton-Regular.e58ab3fe.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Oswald-Regular.89ec7d89.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Oswald-Bold.0f6a7ca6.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Roboto-Regular.ca197847.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"Roboto-Bold.fdb9b54a.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"RobotoCondensed-Regular.d585f5c7.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"RobotoCondensed-Bold.e1f96d4b.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"CourierPrime-Regular.3a25a501.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"CourierPrime-Bold.3d6bf689.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"OpenSans-Regular.edf9e01b.ttf\";","module.exports = require('./helpers/bundle-url').getBundleURL('8tAhj') + \"OpenSans-Bold.8fceb72b.ttf\";","import { ACCEPTED_MIME_TYPES } from './constants.js';\n\nexport const fileFromUrl = async (options = {}) => {\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || '';\n\n if (!ACCEPTED_MIME_TYPES.includes(mimeType)) {\n throw new Error(`This is not an accepted image format. Accepted MIME types are: ${ACCEPTED_MIME_TYPES.join(', ')}`);\n }\n\n return new File([blob], options.filename || '', blob);\n};\n","const errorsContainer = document.getElementById('errorsContainer');\n\nconst hideError = evt => {\n const target = evt.currentTarget;\n target.removeEventListener('click', hideError);\n errorsContainer.removeChild(target.parentNode);\n};\n\nexport const toastAlert = (message = '', type = 'info') => {\n const types = ['info', 'warning', 'danger'];\n\n if (!types.includes(type)) {\n type = 'info';\n }\n\n const template = /* html */`\n ${message}\n \n `;\n\n const div = document.createElement('div');\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector('button').addEventListener('click', hideError);\n errorsContainer.appendChild(div);\n setTimeout(() => div.classList.add('show'), 100);\n};\n","import { customFonts } from './custom-fonts.js';\n\nexport const createTextBox = (index, data = {}) => {\n const inputTemplate = /* html */`\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n\n const fragment = document.createDocumentFragment();\n const div = document.createElement('div');\n\n div.className = 'bg-light border shadow-sm mb-3 rounded';\n div.setAttribute('data-section', 'textBox');\n div.setAttribute('data-index', index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n\n return fragment.appendChild(div);\n};\n","export const drawCanvas = (image, canvas, ctx, textOptions = []) => {\n if (image == null) {\n return;\n }\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (typeof image === 'string') { // Assume it's a color\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n }\n\n textOptions.forEach(function (item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n\n const multiplier = index + 1;\n const lineHeight = ctx.measureText('M').width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split('\\n');\n\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index) => ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else {\n textLines.forEach((text, index) => {\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n }\n\n ctx.restore();\n });\n};"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","$94933cc6427541bd$export$c37129e465f64ef0","navigator","canShare","$0380ce8f1f064ccc$export$6503ec6e8aabbaf","$0380ce8f1f064ccc$var$mapping","Map","baseUrl","manifest","i","length","path","$7dd1ddf6834435ca$export$bdfd709ae4826697","$7dd1ddf6834435ca$var$bundleURL","value","$7dd1ddf6834435ca$var$getBundleURL","matches","stack","match","replace","getBundleURL","JSON","parse","$4f74a8126e204146$export$30b344bef3e55b67","$4f74a8126e204146$var$t","$4f74a8126e204146$var$e","document","createElement","innerHTML","HTMLElement","t","constructor","shadowRoot","attachShadow","mode","delegatesFocus","appendChild","content","cloneNode","querySelector","observedAttributes","attributeChangedCallback","toggleAttribute","disabled","setAttribute","toString","part","contains","toggle","connectedCallback","r","addEventListener","disconnectedCallback","removeEventListener","hasAttribute","shareUrl","getAttribute","shareTitle","shareText","shareFiles","Array","isArray","share","url","title","text","files","dispatchEvent","CustomEvent","bubbles","composed","detail","shareData","name","error","preventDefault","target","nodeName","assignedElements","flatten","find","prototype","hasOwnProperty","defineCustomElement","customElements","define","$636b0cf1ed0b9f88$export$cc30a98fe3890794","$636b0cf1ed0b9f88$var$t","Number","isNaN","Math","min","max","$636b0cf1ed0b9f88$var$e","$636b0cf1ed0b9f88$var$i","$636b0cf1ed0b9f88$var$o","o","l","getSupportedConstraints","isConnected","getTrackCapabilities","getTrackSettings","u","includes","facingMode","stopVideoStream","startVideoStream","cameraResolution","trim","split","map","width","height","pan","h","tilt","zoom","d","getElementById","c","m","p","g","b","f","isSupported","message","autoPlay","noImage","loading","calculateFileSize","capture","play","then","video","catch","finally","removeAttribute","from","childNodes","forEach","remove","getVideoTracks","applyConstraints","advanced","ideal","audio","mediaDevices","getUserMedia","srcObject","hidden","stop","getContext","videoWidth","videoHeight","drawImage","toDataURL","Image","src","dataURI","fetch","blob","size","getCapabilities","getSettings","$4da30046ce6d9325$export$32589115725b904b","$4da30046ce6d9325$var$e","open","showModal","body","style","overflowY","element","close","noHeader","classList","noAnimations","noCloseButton","clearTimeout","staticBackdrop","fullscreen","add","setTimeout","defaultPrevented","currentTarget","assignedNodes","cancelable","reason","show","hide","$7aad62ebc3d6fae8$export$6ccd1735166caad9","$7aad62ebc3d6fae8$var$e","$7aad62ebc3d6fae8$var$t","$7aad62ebc3d6fae8$var$o","lastIndexOf","type","pop","toLowerCase","writable","$7aad62ebc3d6fae8$var$i","webkitRelativePath","$7aad62ebc3d6fae8$var$r","Promise","readEntries","$7aad62ebc3d6fae8$var$a","push","$7aad62ebc3d6fae8$var$n","file","fullPath","$7aad62ebc3d6fae8$var$s","kind","getAsEntry","webkitGetAsEntry","shift","isFile","indexOf","isDirectory","createReader","$7aad62ebc3d6fae8$var$d","$7aad62ebc3d6fae8$var$l","dataTransfer","items","$7aad62ebc3d6fae8$var$p","$7aad62ebc3d6fae8$var$c","$7aad62ebc3d6fae8$var$h","$7aad62ebc3d6fae8$var$u","accept","multiple","noKeyboard","autoFocus","focus","maxFiles","floor","abs","maxSize","minSize","noClick","noDrag","noStyle","Event","dropEffect","click","key","errors","Set","filter","Boolean","charAt","test","acceptedFiles","rejectedFiles","defaultValue","openFileDialog","$5742c9e143620cb1$export$30a014203d0d7e4f","array","indexes","TypeError","_","$21c3f3a8dccfa4fd$export$e2a22331486dcca0","prefix","suffix","randomString","random","substring","$33dea9d9a6da4c9a$export$63e7bed68b07a85c","$b9a1dffffdf320f2$exports","$6f8f0ad93b4f4fec$exports","$60f12aeb358e1d01$exports","$b312cc3e2ac443c7$exports","$481315e8ee95f8f9$exports","$7cee0a691e2711a6$exports","$12b7043e62e67366$exports","$f224edc54658ebde$exports","$33ce2f42587a9c55$exports","$1375393a097acb0e$exports","$728f6ce83c7b6e27$exports","$055531bbd0af154c$export$6874249d87f2602a","label","weight","$055531bbd0af154c$export$59eceaef0c7797b2","options","font","FontFace","load","fonts","console","$008970865eefc93d$export$6539e087749cf9d3","res","mimeType","join","File","filename","$166cfb2484b08c80$var$errorsContainer","$166cfb2484b08c80$var$hideError","evt","removeChild","parentNode","$166cfb2484b08c80$export$af04143326425dbd","types","template","div","className","$50a37fdc18d479c2$export$293a4b86a6fe2398","index","data","inputTemplate","fillColor","shadowColor","_isSettingsOpen","fontSize","shadowBlur","rotate","offsetY","offsetX","fragment","createDocumentFragment","textAlign","checked","allCaps","$d346fdc99aed49b3$export$e653a2de0f3a8b89","image","canvas","ctx","textOptions","clearRect","fillStyle","fillRect","item","fontWeight","multiplier","lineHeight","measureText","xPos","textLines","toUpperCase","save","shadowOffsetX","shadowOffsetY","translate","PI","fillText","restore","$44ae6d9db4eaca0f$var$videoModal","$44ae6d9db4eaca0f$var$downloadModal","$44ae6d9db4eaca0f$var$canvas","$44ae6d9db4eaca0f$var$dropzoneEl","$44ae6d9db4eaca0f$var$instructionsEl","$44ae6d9db4eaca0f$var$ctx","$44ae6d9db4eaca0f$var$imageUploadMethodSelect","$44ae6d9db4eaca0f$var$fileSelectBtn","$44ae6d9db4eaca0f$var$imageUrlForm","$44ae6d9db4eaca0f$var$addTextboxBtn","$44ae6d9db4eaca0f$var$inputsContainer","$44ae6d9db4eaca0f$var$generateMemeBtn","$44ae6d9db4eaca0f$var$openVideoModalBtn","$44ae6d9db4eaca0f$var$downloadMemeBtn","$44ae6d9db4eaca0f$var$downloadMemePreview","$44ae6d9db4eaca0f$var$webShareComponent","$44ae6d9db4eaca0f$var$galleryEl","$44ae6d9db4eaca0f$var$gallerySearchEl","$44ae6d9db4eaca0f$var$galleryNoResultsEl","$44ae6d9db4eaca0f$var$solidColorForm","$44ae6d9db4eaca0f$var$uploadMethodEls","querySelectorAll","$44ae6d9db4eaca0f$var$selectedImage","$44ae6d9db4eaca0f$var$reqAnimFrame","$44ae6d9db4eaca0f$var$defaultTextOptions","$44ae6d9db4eaca0f$var$textOptions","$44ae6d9db4eaca0f$var$generateMeme","dataUrl","downloadLink","download","href","$44ae6d9db4eaca0f$var$onImageLoaded","MAX_WIDTH","MAX_HEIGHT","$44ae6d9db4eaca0f$var$handleFileSelect","reader","FileReader","result","readAsDataURL","$44ae6d9db4eaca0f$var$handleTextPropChange","prop","$44ae6d9db4eaca0f$var$handleImageUploadFromURL","form","submitButton","imageUrl","$44ae6d9db4eaca0f$var$moveText","offsetDir","sign","textBoxSection","offsetYInput","offsetXInput","requestAnimationFrame","$44ae6d9db4eaca0f$var$handleGalleryClick","button","closest","img","alt","newTextBox","textBoxIndex","textBoxEls","el","settingsEl","confirm","isOffsetYButton","isOffsetXButton","cancelAnimationFrame","query","galleryItems","capturePhotoComponent","$442be162a818aed4$export$c37129e465f64ef0","isWebShareSupported","$e179325634270afd$export$30b344bef3e55b67","$e179325634270afd$var$styles","$e179325634270afd$var$template","buttonSlot","buttonEl","getButton","oldValue","newValue","upgradeProperty","handleSlotChange","handleClick","instance","elementName","WebShare","$c290816263f90981$export$cc30a98fe3890794","$02ad8beec419df62$export$7d15b64cf5a3a4c4","lower","upper","$c290816263f90981$var$COMPONENT_NAME","$c290816263f90981$var$styles","$c290816263f90981$var$template","supportedConstraints","stream","canvasElement","outputElement","videoElement","captureButtonSlot","captureButton","facingModeButtonSlot","facingModeButton","trackCapabilities","trackSettings","emptyOutputElement","isValidFacingMode","x","widthInAllowedRange","heightInAllowedRange","panInAllowedRange","applyPTZ","tiltInAllowedRange","zoomInAllowedRange","getCaptureButton","getFacingModeButton","onVideoLoadedMetaData","onCaptureButtonSlotChange","onCapturePhotoButtonClick","onFacingModeButtonSlotChange","onFacingModeButtonClick","node","constraintName","constraintValue","track","constraints","eventDetail","CapturePhoto","$180b6dcf923bafc7$export$32589115725b904b","$180b6dcf923bafc7$var$template","dialogEl","footerSlotEl","pulseAnimationTimeout","headerEl","closeBtnEl","handleDialogClick","handleDialogClose","handleDialogCancel","handleCloseButtonClick","handleFooterSlotChange","applyPulseEffectOnDialog","requestCloseEvent","createRequestCloseEvent","footerEl","footerSlotNodes","hasFooterSlotNodes","ModalElement","$862aa3736b0514bc$export$6ccd1735166caad9","$f31161edf38949e9$var$COMMON_MIME_TYPES","$f31161edf38949e9$var$FILES_TO_IGNORE","$f31161edf38949e9$var$toFileWithMimeType","hasExtension","extension","$f31161edf38949e9$var$toFileWithPath","fileWithMimeType","$f31161edf38949e9$var$readEntriesPromise","directoryReader","resolve","reject","$f31161edf38949e9$var$readAllDirectoryEntries","entries","$f31161edf38949e9$var$getFileFromFileEntry","fileEntry","$f31161edf38949e9$var$getFilesFromDataTransferItemList","dataTransferItemList","queue","entry","$f31161edf38949e9$var$getFilesFromFileList","fileList","$f31161edf38949e9$export$6d52664cd15c442","$862aa3736b0514bc$var$COMPONENT_NAME","$862aa3736b0514bc$var$TOO_MANY_FILES","$862aa3736b0514bc$var$template","$862aa3736b0514bc$var$styles","fileInput","dropzoneEl","handleFileInputChange","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleKeyUp","num","Infinity","handleFilesSelect","filesLength","fileHasValidType","acceptedTypeSpecifiers","acceptedMimeTypesList","fileMimeType","baseMimeType","validType","fileExceedsMaxSize","fileIsSmallerThanMinSize","FilesDropzone"],"version":3,"file":"index.9d0cb1f2.js.map"} \ No newline at end of file diff --git a/docs/index.b9185ed0.js b/docs/index.a3077d6d.js similarity index 99% rename from docs/index.b9185ed0.js rename to docs/index.a3077d6d.js index 5fa4e4f..a9c9ece 100644 --- a/docs/index.b9185ed0.js +++ b/docs/index.a3077d6d.js @@ -1,4 +1,4 @@ -function t(t){return t&&t.__esModule?t.default:t}var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},o={},i={},a=e.parcelRequire5078;function n(t){return null!==t&&"object"==typeof t?"share"in navigator&&"canShare"in navigator&&navigator.canShare(t):"share"in navigator}null==a&&((a=function(t){if(t in o)return o[t].exports;if(t in i){var e=i[t];delete i[t];var a={id:t,exports:{}};return o[t]=a,e.call(a.exports,a,a.exports),a.exports}var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(t,e){i[t]=e},e.parcelRequire5078=a),(0,a.register)("kyEFX",function(t,e){Object.defineProperty(t.exports,"register",{get:function(){return o},set:function(t){return o=t},enumerable:!0,configurable:!0});var o,i=new Map;o=function(t,e){for(var o=0;o
-
- - +
+ +
`,i=document.createDocumentFragment(),a=document.createElement("div");return a.className="bg-light border shadow-sm mb-3 rounded",a.setAttribute("data-section","textBox"),a.setAttribute("data-index",t),a.innerHTML=o,a.querySelector('[data-input="font"]').value=e.font,a.querySelector('[data-input="textAlign"]').value=e.textAlign,a.querySelector('[data-input="allCaps"]').checked=e.allCaps,i.appendChild(a)},J=(t,e,o,i=[])=>{null!=t&&(o.clearRect(0,0,e.width,e.height),"string"==typeof t?(o.fillStyle=t,o.fillRect(0,0,e.width,e.height)):o.drawImage(t,0,0,e.width,e.height),i.forEach(function(t,i){o.font=`${t.fontWeight} ${t.fontSize}px ${t.font}`;let a=i+1,n=o.measureText("M").width+t.fontSize/2,s=e.width/2,r=t.shadowBlur,l=(!0===t.allCaps?t.text.toUpperCase():t.text).split("\n");o.fillStyle=t.fillColor,o.textAlign=t.textAlign,o.save(),0!==r&&(o.shadowOffsetX=0,o.shadowOffsetY=0,o.shadowBlur=r,o.shadowColor=t.shadowColor),t.rotate?(o.translate(s+t.offsetX,n*a+t.offsetY),o.rotate(t.rotate*Math.PI/180),l.forEach((t,e)=>o.fillText(t,0,e*n)),o.rotate(-(t.rotate*Math.PI/180)),o.translate(-(s+t.offsetX),-(n*a+t.offsetY))):l.forEach((e,i)=>{o.fillText(e,s+t.offsetX,i*n+n*a+t.offsetY)}),o.restore()}))},Q=document.getElementById("videoModal"),tt=document.getElementById("downloadModal"),te=document.getElementById("canvas"),to=document.querySelector("files-dropzone"),ti=document.getElementById("instructions"),ta=te.getContext("2d"),tn=document.getElementById("imageUploadMethodSelect"),ts=document.getElementById("fileSelectBtn"),tr=document.getElementById("imageUrlForm"),tl=document.getElementById("addTextboxBtn"),td=document.getElementById("inputsContainer"),tc=document.getElementById("generateMemeBtn"),th=document.getElementById("openVideoModalBtn"),tu=document.getElementById("downloadMemeBtn"),tp=document.getElementById("downloadMemePreview"),tm=document.querySelector("web-share"),tb=document.getElementById("gallery"),tg=document.getElementById("gallerySearch"),tf=tb.querySelector(".gallery__no-results"),tv=document.getElementById("solidColorForm"),ty=document.querySelectorAll(".upload-method");let tw=null,tE=null;const tx={_isSettingsOpen:!1,text:"",fillColor:"#ffffff",shadowColor:"#000000",font:"Anton",fontSize:40,fontWeight:"normal",textAlign:"center",shadowBlur:3,offsetY:0,offsetX:0,rotate:0,allCaps:!0};let tA=[{...tx}];const tS=async()=>{let t=te.toDataURL("image/png"),e=t.replace("image/png","image/octet-stream");if(tu.download=`${B("meme")}.png`,tu.href=e,tp.src=e,n())try{let e=await V({url:t,filename:`${B("meme")}.png`,mimeType:"image/png"}).catch(t=>K(t.message,"danger"));e&&n({files:[e]})&&(tm.shareFiles=[e],tm.hidden=!1)}catch(t){console.error(t)}tt.open=!0},tk=t=>{let e=t.target.width,o=t.target.height;e>o?e>800&&(o*=800/e,e=800):o>600&&(e*=600/o,o=600),te.width=e,te.height=o,J(tw=t.target,te,ta,tA),tc.disabled=!1,te.hidden=!1,ti.hidden=!0},tz=t=>{if(!t)return;let e=new Image,o=new FileReader;o.addEventListener("load",function(t){let o=t.target.result;e.addEventListener("load",tk),e.src=o}),o.readAsDataURL(t)},tC=(t,e,o)=>{"checkbox"===t.type?tA[e][o]=t.checked:"number"===t.type?tA[e][o]=Number(t.value):tA[e][o]=t.value,J(tw,te,ta,tA)},tL=async t=>{t.preventDefault();let e=t.target,o=e.querySelector('button[type="submit"]'),i=e.imageUrl.value;if(i.trim()){o.disabled=!0,o.querySelector(".spinner").hidden=!1,o.querySelector(".label").hidden=!0;try{let t=await V({url:i}).catch(t=>K(t.message,"danger"));t&&tz(t)}catch(t){K(`Failed to load image from "${i}".`,"danger")}finally{o.disabled=!1,o.querySelector(".spinner").hidden=!0,o.querySelector(".label").hidden=!1}}},t_=(t,e,o)=>()=>{let i=document.querySelectorAll('[data-section="textBox"]')[o],a=i.querySelector('[data-input="offsetY"]'),n=i.querySelector('[data-input="offsetX"]');"offsetY"===t&&("-"===e&&(tA[o].offsetY-=1),"+"===e&&(tA[o].offsetY+=1),a.value=tA[o].offsetY),"offsetX"===t&&("-"===e&&(tA[o].offsetX-=1),"+"===e&&(tA[o].offsetX+=1),n.value=tA[o].offsetX),J(tw,te,ta,tA),tE=requestAnimationFrame(t_(t,e,o))},tR=async t=>{let e=t.target.closest("button");if(!e)return;let o=e.querySelector("img");try{let t=await V({url:o.src}).catch(t=>K(t.message,"danger"));t&&tz(t)}catch(t){K(`Failed to load image: "${o.alt}".`,"danger")}};ts.addEventListener("click",()=>{"function"==typeof to.openFileDialog&&to.openFileDialog()}),th.addEventListener("click",()=>{Q.open=!0}),tl.addEventListener("click",()=>{let t=Z(tA.length,tx);tA.push({...tx}),td.appendChild(t),t.querySelector('[data-input="text"]').focus()}),tc.addEventListener("click",tS),tu.addEventListener("click",()=>tt.open=!1),tr.addEventListener("submit",tL),to.addEventListener("files-dropzone-drop-accepted",t=>{let[e]=t.detail.acceptedFiles;e&&tz(e)}),td.addEventListener("input",t=>{let e;let o=t.target,i=Number(o.closest('[data-section="textBox"]').getAttribute("data-index"));o.matches('[data-input="text"]')?e="text":o.matches('[data-input="fillColor"]')?e="fillColor":o.matches('[data-input="shadowColor"]')?e="shadowColor":o.matches('[data-input="font"]')?e="font":o.matches('[data-input="fontSize"]')?e="fontSize":o.matches('[data-input="fontWeight"]')?e="fontWeight":o.matches('[data-input="textAlign"]')?e="textAlign":o.matches('[data-input="shadowBlur"]')?e="shadowBlur":o.matches('[data-input="offsetY"]')?e="offsetY":o.matches('[data-input="offsetX"]')?e="offsetX":o.matches('[data-input="rotate"]')&&(e="rotate"),e&&tC(o,i,e)}),td.addEventListener("change",t=>{let e;let o=t.target,i=Number(o.closest('[data-section="textBox"]').getAttribute("data-index"));o.matches('[data-input="allCaps"]')&&(e="allCaps"),e&&tC(o,i,e)}),td.addEventListener("click",t=>{let e=t.target;if(e.matches('[data-button="settings"]')){let t=e.closest('[data-section="textBox"]').getAttribute("data-index");document.querySelectorAll('[data-section="textBox"]').forEach((e,o)=>{let i=e.querySelector('[data-section="settings"]');e.getAttribute("data-index")===t?(i.hidden=!i.hidden,tA[o]._isSettingsOpen=!tA[o]._isSettingsOpen):(i.hidden=!0,tA[o]._isSettingsOpen=!1)})}if(e.matches('[data-button="delete-text-box"]')){let t=Number(e.closest('[data-section="textBox"]').getAttribute("data-index")),o=!0;tA[t].text.trim()&&(o=window.confirm("Are you sure you want to remove this text box?")),o&&(tA=T(tA,t),td.querySelectorAll('[data-section="textBox"]').forEach(t=>t.remove()),tA.forEach((t,e)=>td.appendChild(Z(e,t))),J(tw,te,ta,tA))}}),td.addEventListener("pointerdown",t=>{let e=t.target;if(!e.closest('[data-section="textBox"]'))return;let o=Number(e.closest('[data-section="textBox"]').getAttribute("data-index")),i=e.matches('[data-move="offsetY"]'),a=e.matches('[data-move="offsetX"]');if(!i&&!a)return;let n=e.getAttribute("data-move"),s=e.getAttribute("data-sign");tE=requestAnimationFrame(t_(n,s,o))}),td.addEventListener("pointerup",t=>{let e=t.target,o=e.matches('[data-move="offsetY"]'),i=e.matches('[data-move="offsetX"]');(o||i)&&(cancelAnimationFrame(tE),tE=null)}),td.addEventListener("pointerout",t=>{let e=t.target,o=e.matches('[data-move="offsetY"]'),i=e.matches('[data-move="offsetX"]');(o||i)&&tE&&(cancelAnimationFrame(tE),tE=null)}),tn.addEventListener("change",t=>{ty.forEach(e=>e.hidden=e.id!==t.target.value)}),tb.addEventListener("click",tR),tg.addEventListener("input",t=>{let e=t.target.value.toLowerCase().trim();tb.querySelectorAll("button").forEach(t=>{let o=(t.querySelector("img").getAttribute("alt")||"").toLowerCase();t.hidden=!o.includes(e)}),tf.hidden=!!tb.querySelector("button:not([hidden])")}),tv.addEventListener("input",t=>{t.target===tv.canvasColor&&(tw=t.target.value),"string"==typeof tw&&(te.width=Number(tv.canvasWidth.value)||600,te.height=Number(tv.canvasHeight.value)||400,J(tw,te,ta,tA),tc.disabled=!1,te.hidden=!1,ti.hidden=!0)}),document.addEventListener("web-share:error",()=>{tt.open=!1,K("There was an error while trying to share your meme.","danger")}),document.addEventListener("capture-photo:error",t=>{console.error(t.detail.error),K(t.detail.error.message,"danger")}),document.addEventListener("capture-photo:success",t=>{Q.open=!1;let e=new Image;e.addEventListener("load",tk),e.src=t.detail.dataURI}),document.addEventListener("me-open",t=>{if("videoModal"===t.target.id){let t=Q.querySelector("capture-photo");t&&"function"==typeof t.startVideoStream&&t.startVideoStream()}}),document.addEventListener("me-close",t=>{if("videoModal"===t.target.id){let t=Q.querySelector("capture-photo");t&&"function"==typeof t.stopVideoStream&&t.stopVideoStream()}}),tb.querySelectorAll("button > img")?.forEach(t=>{t.setAttribute("title",t.getAttribute("alt"))}),tA.forEach((t,e)=>{td.appendChild(Z(e,t))}),to.accept=F,X.forEach(({name:t,path:e,style:o,weight:i})=>{Y(t,e,{style:o,weight:i})}); -//# sourceMappingURL=index.b9185ed0.js.map +//# sourceMappingURL=index.a3077d6d.js.map diff --git a/docs/index.a3077d6d.js.map b/docs/index.a3077d6d.js.map new file mode 100644 index 0000000..3c76c94 --- /dev/null +++ b/docs/index.a3077d6d.js.map @@ -0,0 +1 @@ +{"mappings":"A,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,CMQA,SAAS,EAAoB,CAAO,EAAA,OAClB,OAAZ,GAAoB,UAAA,OAAO,EACtB,UAAW,WAAa,aAAc,WAAa,UAAU,QAAA,CAAS,GAGxE,UAAW,SACpB,C,M,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,A,C,E,E,Q,A,E,Q,S,C,C,C,E,O,c,C,E,O,C,W,C,I,W,O,C,E,I,S,C,E,O,E,C,E,W,C,E,a,C,C,GLZA,IAgBA,EAhBI,EAAU,IAAI,IAgBlB,EAfA,SAAkB,CAAO,CAAE,CAAQ,EACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,MAAM,CAAG,EAAG,GAAK,EAC5C,EAAQ,GAAG,CAAC,CAAQ,CAAC,EAAE,CAAE,CACvB,QAAS,EACT,KAAM,CAAQ,CAAC,EAAI,EAAE,AACvB,EAEJ,C,GCVA,AAAA,EAAA,SAAA,QAAA,CAA8C,IAAA,IAAoB,GAAA,YAAA,GAAA,EAAI,QAAQ,GAAG,KAAK,KAAK,CAAC,gtB,O,c,C,C,E,W,C,I,W,O,C,E,I,K,E,W,C,E,a,C,C,GOmB5F,IAAM,EAAkB,CAAC;;;;AAIzB,CAAC,CAEK,EAAW,SAAS,aAAA,CAAc,WAExC,CAAA,EAAS,SAAA,CAAuB,CAAC;SACxB,EAAE,EAAO;;AAElB,CAgCA,AAAA,OAAM,UAAiB,YAErB,CAAC,CAAW,AAGZ,AAAA,EAAC,CAAQ,AAGT,AAAA,EAAC,CAAK,CAAG,EAAE,AAEX,AAAA,cAAc,CACZ,KAAK,GAEA,IAAI,CAAC,UAAA,EACW,IAAI,CAAC,YAAA,CAAa,CAAE,KAAM,OAAQ,eAAgB,CAAA,CAAK,GAC/D,WAAA,CAAY,EAAS,OAAA,CAAQ,SAAA,CAAU,CAAA,IAGpD,IAAI,CAAC,CAAC,CA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","sources":["","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/runtime-57b74f958dd415d8.js","src/js/index.js","node_modules/@georapbox/web-share-element/dist/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/","node_modules/@georapbox/web-share-element/dist/src/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share.js","node_modules/@georapbox/capture-photo-element/dist/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo.js","node_modules/@georapbox/capture-photo-element/dist/src/utils/clamp.js","node_modules/@georapbox/modal-element/dist/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/","node_modules/@georapbox/modal-element/dist/src/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/src/modal-element.js","node_modules/@georapbox/files-dropzone-element/dist/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/is-valid-file.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/files-selector.js","src/js/utils/array-remove.js","src/js/utils/uid.js","src/js/constants.js","src/js/custom-fonts.js","node_modules/@parcel/runtime-js/lib/runtime-3165768b2af17669.js","node_modules/@parcel/runtime-js/lib/runtime-73291864e538b74b.js","node_modules/@parcel/runtime-js/lib/runtime-a2fc0bec9703ab72.js","node_modules/@parcel/runtime-js/lib/runtime-b59fd44dfd81b5fd.js","node_modules/@parcel/runtime-js/lib/runtime-bf36396318022d20.js","node_modules/@parcel/runtime-js/lib/runtime-418166379205b8eb.js","node_modules/@parcel/runtime-js/lib/runtime-105db2d9f9edf7cf.js","node_modules/@parcel/runtime-js/lib/runtime-9f8b0d4110a0174a.js","node_modules/@parcel/runtime-js/lib/runtime-94ba5916670c0a2b.js","node_modules/@parcel/runtime-js/lib/runtime-dec7b2cfeb98de11.js","node_modules/@parcel/runtime-js/lib/runtime-1800a52d85f464ab.js","src/js/file-from-url.js","src/js/toast-alert.js","src/js/create-text-box.js","src/js/draw-canvas.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire5078\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire5078\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"kyEFX\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $ef7689007096c8a0$export$6503ec6e8aabbaf; }, function (v) { return $ef7689007096c8a0$export$6503ec6e8aabbaf = v; });\nvar $ef7689007096c8a0$export$6503ec6e8aabbaf;\nvar $ef7689007096c8a0$export$f7ad0328861e2f03;\n\"use strict\";\nvar $ef7689007096c8a0$var$mapping = new Map();\nfunction $ef7689007096c8a0$var$register(baseUrl, manifest) {\n for(var i = 0; i < manifest.length - 1; i += 2)$ef7689007096c8a0$var$mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n}\nfunction $ef7689007096c8a0$var$resolve(id) {\n var resolved = $ef7689007096c8a0$var$mapping.get(id);\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\n$ef7689007096c8a0$export$6503ec6e8aabbaf = $ef7689007096c8a0$var$register;\n$ef7689007096c8a0$export$f7ad0328861e2f03 = $ef7689007096c8a0$var$resolve;\n\n});\n\nvar $279d7e991aa5fda1$exports = {};\n\n(parcelRequire(\"kyEFX\")).register(new URL(\"\", import.meta.url).toString(), JSON.parse('[\"eq2Ey\",\"index.a3077d6d.js\",\"9jzSS\",\"Anton-Regular.e58ab3fe.ttf\",\"hr5Pp\",\"Oswald-Regular.89ec7d89.ttf\",\"5TebC\",\"Oswald-Bold.0f6a7ca6.ttf\",\"3ENF9\",\"Roboto-Regular.ca197847.ttf\",\"5yAXK\",\"Roboto-Bold.fdb9b54a.ttf\",\"k2KZ9\",\"RobotoCondensed-Regular.d585f5c7.ttf\",\"4h4UX\",\"RobotoCondensed-Bold.e1f96d4b.ttf\",\"8pomG\",\"CourierPrime-Regular.3a25a501.ttf\",\"l2v76\",\"CourierPrime-Bold.3d6bf689.ttf\",\"eKMWr\",\"OpenSans-Regular.edf9e01b.ttf\",\"dXO1Z\",\"OpenSans-Bold.8fceb72b.ttf\",\"9FH7D\",\"index.bcbdd9b6.css\"]'));\n\nfunction $7a2aca835bb05064$export$c37129e465f64ef0(a) {\n return null !== a && \"object\" == typeof a ? \"share\" in navigator && \"canShare\" in navigator && navigator.canShare(a) : \"share\" in navigator;\n}\n\n\nObject.defineProperty({}, \"WebShare\", {\n get: function() {\n return $cd62c5572235e737$export$30b344bef3e55b67;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $cd62c5572235e737$var$t = `\n :host {\n display: inline-block;\n }\n`, $cd62c5572235e737$var$e = document.createElement(\"template\");\n$cd62c5572235e737$var$e.innerHTML = `\n \n \n`;\nclass $cd62c5572235e737$export$30b344bef3e55b67 extends HTMLElement {\n #t;\n #e;\n #s = [];\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\",\n delegatesFocus: !0\n }).appendChild($cd62c5572235e737$var$e.content.cloneNode(!0)), this.#t = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null, this.#e = this.#i();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n attributeChangedCallback(t, e, s) {\n \"disabled\" === t && e !== s && this.#e && (this.#e.toggleAttribute(\"disabled\", this.disabled), this.#e.setAttribute(\"aria-disabled\", this.disabled.toString()), this.#e.part && this.#e.part.contains(\"button\") && this.#e.part.toggle(\"button--disabled\", this.disabled));\n }\n connectedCallback() {\n this.#r(\"shareUrl\"), this.#r(\"shareTitle\"), this.#r(\"shareText\"), this.#r(\"shareFiles\"), this.#r(\"disabled\"), this.#t?.addEventListener(\"slotchange\", this.#a), this.#e?.addEventListener(\"click\", this.#n);\n }\n disconnectedCallback() {\n this.#t?.removeEventListener(\"slotchange\", this.#a), this.#e?.removeEventListener(\"click\", this.#n);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(t) {\n this.toggleAttribute(\"disabled\", !!t);\n }\n get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(t) {\n this.setAttribute(\"share-url\", t);\n }\n get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(t) {\n this.setAttribute(\"share-title\", t);\n }\n get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(t) {\n this.setAttribute(\"share-text\", t);\n }\n get shareFiles() {\n return this.#s;\n }\n set shareFiles(t) {\n Array.isArray(t) && t.length > 0 && (this.#s = t);\n }\n async share() {\n if (!this.disabled) try {\n let t = {};\n this.shareUrl && (t.url = this.shareUrl), this.shareTitle && (t.title = this.shareTitle), this.shareText && (t.text = this.shareText), Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n }) && (t.files = this.shareFiles), await navigator.share(t), this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: !0,\n composed: !0,\n detail: {\n shareData: t\n }\n }));\n } catch (t) {\n if (t instanceof Error && \"AbortError\" === t.name) {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n #n = (t)=>{\n t.preventDefault(), this.disabled || this.share();\n };\n #a = (t)=>{\n t.target && \"button\" === t.target.name && (this.#e?.removeEventListener(\"click\", this.#n), this.#e = this.#i(), this.#e && (this.#e.addEventListener(\"click\", this.#n), \"BUTTON\" === this.#e.nodeName || this.#e.hasAttribute(\"role\") || this.#e.setAttribute(\"role\", \"button\")));\n };\n #i() {\n return this.#t && this.#t.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"button\" === t.getAttribute(\"slot\")) || null;\n }\n #r(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n static defineCustomElement(t = \"web-share\") {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $cd62c5572235e737$export$30b344bef3e55b67);\n }\n}\n$cd62c5572235e737$export$30b344bef3e55b67.defineCustomElement();\n\n\nObject.defineProperty({}, \"CapturePhoto\", {\n get: function() {\n return $dced0d224c6d876e$export$cc30a98fe3890794;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $dced0d224c6d876e$var$t = (t, e, i)=>(Number.isNaN(e) && (e = 0), Number.isNaN(i) && (i = 0), Math.min(Math.max(t, Math.min(e, i)), Math.max(e, i))), $dced0d224c6d876e$var$e = \"capture-photo\", $dced0d224c6d876e$var$i = `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`, $dced0d224c6d876e$var$o = document.createElement(\"template\");\n$dced0d224c6d876e$var$o.innerHTML = `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\nclass $dced0d224c6d876e$export$cc30a98fe3890794 extends HTMLElement {\n #t = {};\n #e = null;\n #i = null;\n #o = null;\n #n = null;\n #a = null;\n #s = null;\n #r = null;\n #l = null;\n constructor(){\n super(), this.#t = this.getSupportedConstraints(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($dced0d224c6d876e$var$o.content.cloneNode(!0));\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n attributeChangedCallback(t, e, i) {\n if (!this.isConnected) return;\n let o = this.getTrackCapabilities(), n = this.getTrackSettings();\n if (\"no-image\" === t && e !== i && this.#u(), \"facing-mode\" === t && e !== i && \"facingMode\" in this.#t) {\n let t = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n \"facingMode\" in n && t && (this.stopVideoStream(), this.startVideoStream());\n }\n if (\"camera-resolution\" === t && e !== i && \"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [t = 0, e = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n if (t > 0 && e > 0 && \"width\" in o && \"height\" in o) {\n let i = !!(o.width?.min && o.width?.max) && t >= o?.width?.min && t <= o?.width?.max, a = !!(o.height?.min && o.height?.max) && e >= o?.height?.min && e <= o?.height?.max;\n \"width\" in n && \"height\" in n && i && a && (this.stopVideoStream(), this.startVideoStream());\n }\n }\n if (\"pan\" === t && e !== i && \"pan\" in this.#t) {\n let t = !!(\"pan\" in o && o.pan?.min && o.pan?.max) && this.pan >= o.pan.min && this.pan <= o.pan.max;\n \"pan\" in n && \"number\" == typeof this.pan && t && this.#h(\"pan\", this.pan);\n }\n if (\"tilt\" === t && e !== i && \"tilt\" in this.#t) {\n let t = !!(\"tilt\" in o && o.tilt?.min && o.tilt?.max) && this.tilt >= o.tilt.min && this.tilt <= o.tilt.max;\n \"tilt\" in n && \"number\" == typeof this.tilt && t && this.#h(\"tilt\", this.tilt);\n }\n if (\"zoom\" === t && e !== i && \"zoom\" in this.#t) {\n let t = !!(\"zoom\" in o && o.zoom?.min && o.zoom?.max) && this.zoom >= o.zoom.min && this.zoom <= o.zoom.max;\n \"zoom\" in n && \"number\" == typeof this.zoom && t && this.#h(\"zoom\", this.zoom);\n }\n }\n connectedCallback() {\n if (this.#d(\"autpoPlay\"), this.#d(\"noImage\"), this.#d(\"facingMode\"), this.#d(\"cameraResolution\"), this.#d(\"pan\"), this.#d(\"tilt\"), this.#d(\"zoom\"), this.#d(\"calculateFileSize\"), this.#i = this.shadowRoot?.querySelector(\"canvas\") || null, this.#o = this.shadowRoot?.getElementById(\"output\") || null, this.#n = this.shadowRoot?.querySelector(\"video\") || null, this.#a = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null, this.#s = this.#c(), this.#r = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null, this.#l = this.#m(), this.#n?.addEventListener(\"loadedmetadata\", this.#p), this.#a?.addEventListener(\"slotchange\", this.#g), this.#s?.addEventListener(\"click\", this.#b), this.#r?.addEventListener(\"slotchange\", this.#f), this.#l?.addEventListener(\"click\", this.#v), !$dced0d224c6d876e$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n this.autoPlay && this.startVideoStream();\n }\n disconnectedCallback() {\n this.stopVideoStream(), this.#l?.removeEventListener(\"click\", this.#v), this.#s?.removeEventListener(\"click\", this.#b), this.#n?.removeEventListener(\"canplay\", this.#p), this.#a?.removeEventListener(\"slotchange\", this.#g), this.#r?.removeEventListener(\"slotchange\", this.#f);\n }\n get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(t) {\n this.toggleAttribute(\"auto-play\", !!t);\n }\n get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(t) {\n this.toggleAttribute(\"no-image\", !!t);\n }\n get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(t) {\n this.setAttribute(\"facing-mode\", t);\n }\n get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(t) {\n this.setAttribute(\"camera-resolution\", t);\n }\n get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(t) {\n this.setAttribute(\"pan\", null != t ? t.toString() : t);\n }\n get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(t) {\n this.setAttribute(\"tilt\", null != t ? t.toString() : t);\n }\n get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(t) {\n this.setAttribute(\"zoom\", null != t ? t.toString() : t);\n }\n get loading() {\n return this.hasAttribute(\"loading\");\n }\n get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(t) {\n this.toggleAttribute(\"calculate-file-size\", !!t);\n }\n #v = (t)=>{\n t.preventDefault(), this.loading || (this.facingMode = \"user\" !== this.facingMode && this.facingMode ? \"user\" : \"environment\");\n };\n #b = (t)=>{\n t.preventDefault(), this.capture();\n };\n #p = (t)=>{\n let i = t.target;\n i.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:video-play`, {\n bubbles: !0,\n composed: !0,\n detail: {\n video: i\n }\n }));\n }).catch((t)=>{\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n #u() {\n this.#o && Array.from(this.#o.childNodes).forEach((t)=>t.remove());\n }\n #h(e, i) {\n if (!this.#e || !e || !i) return;\n let [o] = this.#e.getVideoTracks(), n = this.getTrackCapabilities();\n e in this.getTrackSettings() && o.applyConstraints({\n advanced: [\n {\n [e]: $dced0d224c6d876e$var$t(Number(i), n[e]?.min || 1, n[e]?.max || 1)\n }\n ]\n });\n }\n #g = (t)=>{\n t.target?.name === \"capture-button\" && (this.#s?.removeEventListener(\"click\", this.#b), this.#s = this.#c(), this.#s && (this.#s.addEventListener(\"click\", this.#b), \"BUTTON\" === this.#s.nodeName || this.#s.hasAttribute(\"role\") || this.#s.setAttribute(\"role\", \"button\")));\n };\n #f = (t)=>{\n t.target?.name === \"facing-mode-button\" && (this.#l?.removeEventListener(\"click\", this.#v), this.#l = this.#m(), this.#l && (this.#l.addEventListener(\"click\", this.#v), \"BUTTON\" === this.#l.nodeName || this.#l.hasAttribute(\"role\") || this.#l.setAttribute(\"role\", \"button\")));\n };\n #m() {\n return this.#r && this.#r.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"facing-mode-button\" === t.getAttribute(\"slot\")) || null;\n }\n #c() {\n return this.#a && this.#a.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"capture-button\" === t.getAttribute(\"slot\")) || null;\n }\n #d(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n async startVideoStream() {\n if (!$dced0d224c6d876e$export$cc30a98fe3890794.isSupported() || this.#e) return;\n this.setAttribute(\"loading\", \"\");\n let t = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: !0,\n tilt: !0,\n zoom: !0\n },\n audio: !1\n };\n if (\"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [e = 0, i = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n e > 0 && i > 0 && (t.video.width = e, t.video.height = i);\n }\n try {\n this.#e = await navigator.mediaDevices.getUserMedia(t), this.#n && (this.#n.srcObject = this.#e), this.#h(\"pan\", this.pan), this.#h(\"tilt\", this.tilt), this.#h(\"zoom\", this.zoom);\n let e = this.getTrackSettings();\n \"facingMode\" in e && this.#r && (this.#r.hidden = !1);\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n stopVideoStream() {\n if (!this.#n || !this.#e) return;\n let [t] = this.#e.getVideoTracks();\n t?.stop(), this.#n.srcObject = null, this.#e = null;\n }\n async capture() {\n if (!this.loading && this.#i && this.#n) try {\n let t = this.#i.getContext(\"2d\"), i = this.#n.videoWidth, o = this.#n.videoHeight;\n this.#i.width = i, this.#i.height = o, t?.drawImage(this.#n, 0, 0, i, o);\n let n = this.#i.toDataURL(\"image/png\");\n if (\"string\" == typeof n && n.includes(\"data:image\")) {\n if (!this.noImage) {\n let t = new Image;\n t.src = n, t.width = i, t.height = o, t.setAttribute(\"part\", \"output-image\"), this.#u(), this.#o?.appendChild(t);\n }\n let t = {\n dataURI: n,\n width: i,\n height: o\n };\n if (this.calculateFileSize) try {\n let e = await fetch(n), i = (await e.blob()).size;\n i && (t.size = i);\n } catch (t) {}\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:success`, {\n bubbles: !0,\n composed: !0,\n detail: t\n }));\n }\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n getSupportedConstraints() {\n return $dced0d224c6d876e$export$cc30a98fe3890794.isSupported() && navigator.mediaDevices.getSupportedConstraints() || {};\n }\n getTrackCapabilities() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getCapabilities && t.getCapabilities() || {};\n }\n getTrackSettings() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getSettings && t.getSettings() || {};\n }\n static isSupported() {\n return !!navigator.mediaDevices?.getUserMedia;\n }\n static defineCustomElement(t = $dced0d224c6d876e$var$e) {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $dced0d224c6d876e$export$cc30a98fe3890794);\n }\n}\n$dced0d224c6d876e$export$cc30a98fe3890794.defineCustomElement();\n\n\nObject.defineProperty({}, \"ModalElement\", {\n get: function() {\n return $d9c5053bade2d3f8$export$32589115725b904b;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $d9c5053bade2d3f8$var$e = document.createElement(\"template\");\n$d9c5053bade2d3f8$var$e.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`; /**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ \nclass $d9c5053bade2d3f8$export$32589115725b904b extends HTMLElement {\n #e = null;\n #t = null;\n #o = void 0;\n constructor(){\n if (super(), !this.shadowRoot) {\n let t = this.attachShadow({\n mode: \"open\"\n });\n t.appendChild($d9c5053bade2d3f8$var$e.content.cloneNode(!0));\n }\n this.shadowRoot && (this.#e = this.shadowRoot.querySelector(\"dialog\"), this.#t = this.shadowRoot.querySelector('slot[name=\"footer\"]'));\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n if (null !== this.#e) {\n if (\"open\" === e && t !== o && (this.open ? (this.#e.showModal(), document.body && (document.body.style.overflowY = \"hidden\"), this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }))) : this.#e.close()), \"no-header\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__header\");\n null !== e && (e.hidden = this.noHeader);\n }\n if (\"no-animations\" === e && t !== o && this.#e.classList.toggle(\"dialog--no-animations\", this.noAnimations), \"no-close-button\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__close\");\n null !== e && (e.hidden = this.noCloseButton);\n }\n }\n }\n connectedCallback() {\n this.#i(\"open\"), this.#i(\"staticBackdrop\"), this.#i(\"noHeader\"), this.#i(\"noAnimations\"), this.#i(\"noCloseButton\"), this.#i(\"fullscreen\"), this.#e?.addEventListener(\"click\", this.#a), this.#e?.addEventListener(\"close\", this.#l), this.#e?.addEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#n), this.#t?.addEventListener(\"slotchange\", this.#r);\n }\n disconnectedCallback() {\n this.#o && clearTimeout(this.#o), this.#e?.addEventListener(\"click\", this.#a), this.#e?.removeEventListener(\"close\", this.#l), this.#e?.removeEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#n), this.#t?.removeEventListener(\"slotchange\", this.#r);\n }\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(e) {\n e ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n }\n get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(e) {\n e ? this.setAttribute(\"static-backdrop\", \"\") : this.removeAttribute(\"static-backdrop\");\n }\n get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(e) {\n e ? this.setAttribute(\"no-header\", \"\") : this.removeAttribute(\"no-header\");\n }\n get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(e) {\n e ? this.setAttribute(\"no-animations\", \"\") : this.removeAttribute(\"no-animations\");\n }\n get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(e) {\n e ? this.setAttribute(\"no-close-button\", \"\") : this.removeAttribute(\"no-close-button\");\n }\n get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(e) {\n e ? this.setAttribute(\"fullscreen\", \"\") : this.removeAttribute(\"fullscreen\");\n }\n #d() {\n this.#o || (this.#e?.classList.add(\"dialog--pulse\"), this.#o = setTimeout(()=>{\n this.#e?.classList.remove(\"dialog--pulse\"), clearTimeout(this.#o), this.#o = void 0;\n }, 300));\n }\n #l = ()=>{\n // the open property when the dialog is closed by the user.\n this.open = !1, document.body && (document.body.style.overflowY = \"\"), this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }));\n };\n #s = (e)=>{\n let t = this.#c(\"escape-key\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #n = (e)=>{\n let t = this.#c(\"close-button\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #a = (e)=>{\n if (e.target !== e.currentTarget) return;\n let t = this.#c(\"backdrop-click\");\n if (this.dispatchEvent(t), t.defaultPrevented || this.staticBackdrop) {\n this.noAnimations || this.#d();\n return;\n }\n this.#e?.close();\n };\n #r = ()=>{\n if (null === this.#e) return; /** @type {Nullable} */ \n let e = this.#e.querySelector(\".dialog__footer\");\n if (null === e) return;\n let t = this.#t?.assignedNodes(), o = !!t && t.length > 0;\n e.hidden = !o;\n };\n #c(e) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: !0,\n composed: !0,\n cancelable: !0,\n detail: {\n reason: e,\n element: this\n }\n });\n }\n #i(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n show() {\n this.open || (this.open = !0);\n }\n hide() {\n this.open && (this.open = !1);\n }\n static defineCustomElement(e = \"modal-element\") {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $d9c5053bade2d3f8$export$32589115725b904b);\n }\n}\n$d9c5053bade2d3f8$export$32589115725b904b.defineCustomElement();\n //# sourceMappingURL=modal-element-defined.js.map\n\n\nObject.defineProperty({}, \"FilesDropzone\", {\n get: function() {\n return $9351176e8d763a78$export$6ccd1735166caad9;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $9351176e8d763a78$var$e = new Map([\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]), $9351176e8d763a78$var$t = [\n \".DS_Store\",\n \"Thumbs.db\"\n], $9351176e8d763a78$var$o = (t)=>{\n let { name: o } = t;\n if (o && -1 !== o.lastIndexOf(\".\") && !t.type) {\n let i = (o.split(\".\").pop() || \"\").toLowerCase(), r = $9351176e8d763a78$var$e.get(i);\n r && Object.defineProperty(t, \"type\", {\n value: r,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return t;\n}, $9351176e8d763a78$var$i = (e, t)=>{\n let i = $9351176e8d763a78$var$o(e);\n if (\"string\" != typeof i.path) {\n let { webkitRelativePath: o } = e;\n Object.defineProperty(i, \"path\", {\n value: \"string\" == typeof t ? t : o || e.name,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return i;\n}, $9351176e8d763a78$var$r = async (e)=>await new Promise((t, o)=>{\n e.readEntries(t, o);\n }), $9351176e8d763a78$var$a = async (e)=>{\n let t = [], o = await $9351176e8d763a78$var$r(e);\n for(; o.length > 0;)t.push(...o), o = await $9351176e8d763a78$var$r(e);\n return t;\n}, $9351176e8d763a78$var$n = (e)=>new Promise((t, o)=>{\n e.file((o)=>t($9351176e8d763a78$var$i(o, e.fullPath)), o);\n }), $9351176e8d763a78$var$s = async (e)=>{\n let o = [], i = [];\n for (let t of e){\n if (\"file\" !== t.kind) continue;\n let e = t.getAsEntry ? t.getAsEntry() : t.webkitGetAsEntry();\n i.push(e);\n }\n for(; i.length > 0;){\n let e = i.shift();\n if (e) {\n if (e.isFile) {\n let i = await $9351176e8d763a78$var$n(e);\n -1 === $9351176e8d763a78$var$t.indexOf(i.name) && o.push(i);\n } else e.isDirectory && i.push(...await $9351176e8d763a78$var$a(e.createReader()));\n }\n }\n return o;\n}, $9351176e8d763a78$var$d = async (e)=>{\n let o = [];\n for (let r of e)-1 === $9351176e8d763a78$var$t.indexOf(r.name) && o.push($9351176e8d763a78$var$i(r));\n return o;\n}, $9351176e8d763a78$var$l = async (e)=>e.dataTransfer ? e.dataTransfer.items ? await $9351176e8d763a78$var$s(e.dataTransfer.items) : await $9351176e8d763a78$var$d(e.dataTransfer.files) : await $9351176e8d763a78$var$d(e.target.files), $9351176e8d763a78$var$p = \"files-dropzone\", $9351176e8d763a78$var$c = \"TOO_MANY_FILES\", $9351176e8d763a78$var$h = document.createElement(\"template\"), $9351176e8d763a78$var$u = `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$9351176e8d763a78$var$h.innerHTML = `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\nclass $9351176e8d763a78$export$6ccd1735166caad9 extends HTMLElement {\n #e = null;\n #t = null;\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($9351176e8d763a78$var$h.content.cloneNode(!0)), this.shadowRoot && (this.#e = this.shadowRoot.getElementById(\"fileInput\"), this.#t = this.shadowRoot.getElementById(\"dropzoneEl\"));\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n \"accept\" === e && t !== o && this.#e && (this.#e.accept = this.accept), \"disabled\" === e && t !== o && this.#e && (this.#e.disabled = this.disabled, this.disabled ? this.#t?.removeAttribute(\"tabindex\") : this.#t?.setAttribute(\"tabindex\", \"0\")), \"multiple\" === e && t !== o && this.#e && (this.#e.multiple = this.multiple), \"no-keyboard\" === e && t !== o && this.#t && (this.noKeyboard ? this.#t.removeAttribute(\"tabindex\") : this.#t.setAttribute(\"tabindex\", \"0\"));\n }\n connectedCallback() {\n this.#o(\"accept\"), this.#o(\"disabled\"), this.#o(\"maxFiles\"), this.#o(\"maxSize\"), this.#o(\"minSize\"), this.#o(\"multiple\"), this.#o(\"noClick\"), this.#o(\"noDrag\"), this.#o(\"noKeyboard\"), this.#o(\"autoFocus\"), this.#o(\"noStyle\"), this.#e?.addEventListener(\"change\", this.#i), this.#t?.addEventListener(\"dragenter\", this.#r), this.#t?.addEventListener(\"dragover\", this.#a), this.#t?.addEventListener(\"dragleave\", this.#n), this.#t?.addEventListener(\"drop\", this.#s), this.#t?.addEventListener(\"click\", this.#d), this.#t?.addEventListener(\"keyup\", this.#l), this.autoFocus && this.#t?.focus();\n }\n disconnectedCallback() {\n this.#e?.removeEventListener(\"change\", this.#i), this.#t?.removeEventListener(\"dragenter\", this.#r), this.#t?.removeEventListener(\"dragover\", this.#a), this.#t?.removeEventListener(\"dragleave\", this.#n), this.#t?.removeEventListener(\"drop\", this.#s), this.#t?.removeEventListener(\"click\", this.#d), this.#t?.removeEventListener(\"keyup\", this.#l);\n }\n get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(e) {\n this.setAttribute(\"accept\", null != e ? e.toString() : e);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(e) {\n this.toggleAttribute(\"disabled\", !!e);\n }\n get maxFiles() {\n let e = Number(this.getAttribute(\"max-files\")) || 0;\n return e <= 0 ? 1 / 0 : Math.floor(Math.abs(e));\n }\n set maxFiles(e) {\n this.setAttribute(\"max-files\", null != e ? e.toString() : e);\n }\n get maxSize() {\n let e = this.getAttribute(\"max-size\");\n if (null === e) return 1 / 0;\n let t = Number(e);\n return Number.isNaN(t) ? 1 / 0 : t;\n }\n set maxSize(e) {\n this.setAttribute(\"max-size\", null != e ? e.toString() : e);\n }\n get minSize() {\n let e = this.getAttribute(\"min-size\");\n if (null === e) return 0;\n let t = Number(e);\n return Number.isNaN(t) ? 0 : t;\n }\n set minSize(e) {\n this.setAttribute(\"min-size\", null != e ? e.toString() : e);\n }\n get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(e) {\n this.toggleAttribute(\"multiple\", !!e);\n }\n get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(e) {\n this.toggleAttribute(\"no-click\", !!e);\n }\n get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(e) {\n this.toggleAttribute(\"no-drag\", !!e);\n }\n get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(e) {\n this.toggleAttribute(\"no-keyboard\", !!e);\n }\n get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(e) {\n this.toggleAttribute(\"auto-focus\", !!e);\n }\n get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(e) {\n this.toggleAttribute(\"no-style\", !!e);\n }\n #i = async (e)=>{\n try {\n this.#p(await $9351176e8d763a78$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n };\n #r = ()=>{\n this.disabled || this.noDrag || this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragenter`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #a = (e)=>{\n if (e.preventDefault(), this.disabled || this.noDrag) {\n e.dataTransfer.dropEffect = \"none\";\n return;\n }\n e.dataTransfer.dropEffect = \"copy\", this.#t && (this.#t.classList.add(\"dropzone--dragover\"), this.#t.part.add(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragover`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #n = ()=>{\n this.disabled || this.noDrag || (this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragleave`, {\n bubbles: !0,\n composed: !0\n })));\n };\n #s = async (e)=>{\n if (!this.disabled && !this.noDrag) {\n e.preventDefault(), this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\"));\n try {\n this.#p(await $9351176e8d763a78$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n }\n };\n #d = ()=>{\n this.disabled || this.noClick || this.#e?.click();\n };\n #l = (e)=>{\n this.disabled || this.noKeyboard || \" \" !== e.key && \"Enter\" !== e.key || this.#e?.click();\n };\n #p(e) {\n if (!Array.isArray(e) || !e.length) return;\n let t = [], o = [], i = e.length;\n if (!this.multiple && i > 1) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $9351176e8d763a78$var$c,\n message: \"Too many files selected. Only 1 file is allowed.\"\n }\n ]\n });\n else if (this.multiple && i > this.maxFiles) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $9351176e8d763a78$var$c,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else for (let i of e){\n let e = function(e, t = \"\") {\n if (!t) return !0;\n let o = [\n ...new Set(t.split(\",\").map((e)=>e.trim()).filter(Boolean))\n ], i = e.type, r = i.replace(/\\/.*$/, \"\");\n for (let t of o)if (\".\" === t.charAt(0)) {\n if (-1 !== e.name.toLowerCase().indexOf(t.toLowerCase(), e.name.length - t.length)) return !0;\n } else if (/\\/\\*$/.test(t)) {\n if (r === t.replace(/\\/.*$/, \"\")) return !0;\n } else if (i === t) return !0;\n return !1;\n }(i, this.accept), r = i.size > this.maxSize, a = i.size < this.minSize;\n if (!e || r || a) {\n let t = [];\n e || t.push({\n code: \"INVALID_MIME_TYPE\",\n message: `File type \"${i.type}\" is not accepted.`\n }), r && t.push({\n code: \"FILE_TOO_LARGE\",\n message: `File size ${i.size} exceeds the maximum size of ${this.maxSize}.`\n }), a && t.push({\n code: \"FILE_TOO_SMALL\",\n message: `File size ${i.size} is smaller than the minimum size of ${this.minSize}.`\n }), o.push({\n file: i,\n errors: t\n });\n } else t.push(i);\n }\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t,\n rejectedFiles: o\n }\n })), t.length > 0 && this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop-accepted`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t\n }\n })), o.length > 0 && this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop-rejected`, {\n bubbles: !0,\n composed: !0,\n detail: {\n rejectedFiles: o\n }\n })), this.#e && (this.#e.value = this.#e.defaultValue);\n }\n openFileDialog() {\n this.disabled || this.#e?.click();\n }\n #o(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n static defineCustomElement(e = $9351176e8d763a78$var$p) {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $9351176e8d763a78$export$6ccd1735166caad9);\n }\n}\n$9351176e8d763a78$export$6ccd1735166caad9.defineCustomElement();\n\n\n\n\n/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */ const $4af3d380d1884504$export$30a014203d0d7e4f = (array, ...indexes)=>{\n if (!Array.isArray(array)) throw new TypeError(\"Expected an array for first argument\");\n return array.filter((_, i)=>indexes.indexOf(i) === -1);\n};\n\n\n/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */ const $17004b28c97c1306$export$e2a22331486dcca0 = (prefix = \"\", suffix = \"\")=>{\n const prefixString = typeof prefix === \"string\" && prefix !== \"\" ? prefix + \"-\" : \"\";\n const suffixString = typeof suffix === \"string\" && suffix !== \"\" ? \"-\" + suffix : \"\";\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n return `${prefixString}${randomString}${suffixString}`;\n};\n\n\nconst $65136e012e05e2d7$export$63e7bed68b07a85c = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\"\n];\n\n\nvar $068eb37972da8c20$exports = {};\n$068eb37972da8c20$exports = new URL(\"Anton-Regular.e58ab3fe.ttf\", import.meta.url).toString();\n\n\nvar $2db6b38fbc5d48da$exports = {};\n$2db6b38fbc5d48da$exports = new URL(\"Oswald-Regular.89ec7d89.ttf\", import.meta.url).toString();\n\n\nvar $a0b1873abc1b077b$exports = {};\n$a0b1873abc1b077b$exports = new URL(\"Oswald-Bold.0f6a7ca6.ttf\", import.meta.url).toString();\n\n\nvar $df7c7f72fd04e02a$exports = {};\n$df7c7f72fd04e02a$exports = new URL(\"Roboto-Regular.ca197847.ttf\", import.meta.url).toString();\n\n\nvar $e4c2039736f96f5d$exports = {};\n$e4c2039736f96f5d$exports = new URL(\"Roboto-Bold.fdb9b54a.ttf\", import.meta.url).toString();\n\n\nvar $fbff28e47a938944$exports = {};\n$fbff28e47a938944$exports = new URL(\"RobotoCondensed-Regular.d585f5c7.ttf\", import.meta.url).toString();\n\n\nvar $d8f4a375a42d32f4$exports = {};\n$d8f4a375a42d32f4$exports = new URL(\"RobotoCondensed-Bold.e1f96d4b.ttf\", import.meta.url).toString();\n\n\nvar $7cfbda315cbb4209$exports = {};\n$7cfbda315cbb4209$exports = new URL(\"CourierPrime-Regular.3a25a501.ttf\", import.meta.url).toString();\n\n\nvar $6379185b16d8409f$exports = {};\n$6379185b16d8409f$exports = new URL(\"CourierPrime-Bold.3d6bf689.ttf\", import.meta.url).toString();\n\n\nvar $454f2b111c8d0078$exports = {};\n$454f2b111c8d0078$exports = new URL(\"OpenSans-Regular.edf9e01b.ttf\", import.meta.url).toString();\n\n\nvar $c05fcaeb63dbd733$exports = {};\n$c05fcaeb63dbd733$exports = new URL(\"OpenSans-Bold.8fceb72b.ttf\", import.meta.url).toString();\n\n\nconst $56b863c8b6be7003$export$6874249d87f2602a = [\n {\n name: \"Anton\",\n label: \"Anton\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($068eb37972da8c20$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Regular\",\n label: \"Oswald\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($2db6b38fbc5d48da$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Bold\",\n label: \"Oswald Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($a0b1873abc1b077b$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"Roboto-Regular\",\n label: \"Roboto\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($df7c7f72fd04e02a$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Roboto-Bold\",\n label: \"Roboto Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($e4c2039736f96f5d$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"RobotoCondensed-Regular\",\n label: \"Roboto Condensed\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($fbff28e47a938944$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"RobotoCondensed-Bold\",\n label: \"Roboto Condensed Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($d8f4a375a42d32f4$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"CourierPrime-Regular\",\n label: \"Courier Prime\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($7cfbda315cbb4209$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"CourierPrime-Bold\",\n label: \"Courier Prime Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($6379185b16d8409f$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"OpenSans-Regular\",\n label: \"Open Sans\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($454f2b111c8d0078$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"OpenSans-Bold\",\n label: \"Open Sans Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($c05fcaeb63dbd733$exports))),\n style: \"normal\",\n weight: \"400\"\n }\n];\nconst $56b863c8b6be7003$export$59eceaef0c7797b2 = async (name, path, options = {})=>{\n try {\n const font = new FontFace(name, `url(${path})`, {\n ...options\n });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n\n\n\nconst $0374350c629f125f$export$6539e087749cf9d3 = async (options = {})=>{\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || \"\";\n if (!(0, $65136e012e05e2d7$export$63e7bed68b07a85c).includes(mimeType)) throw new Error(`This is not an accepted image format. Accepted MIME types are: ${(0, $65136e012e05e2d7$export$63e7bed68b07a85c).join(\", \")}`);\n return new File([\n blob\n ], options.filename || \"\", blob);\n};\n\n\nconst $3969451ff60cb8d5$var$errorsContainer = document.getElementById(\"errorsContainer\");\nconst $3969451ff60cb8d5$var$hideError = (evt)=>{\n const target = evt.currentTarget;\n target.removeEventListener(\"click\", $3969451ff60cb8d5$var$hideError);\n $3969451ff60cb8d5$var$errorsContainer.removeChild(target.parentNode);\n};\nconst $3969451ff60cb8d5$export$af04143326425dbd = (message = \"\", type = \"info\")=>{\n const types = [\n \"info\",\n \"warning\",\n \"danger\"\n ];\n if (!types.includes(type)) type = \"info\";\n const template = /* html */ `\n ${message}\n \n `;\n const div = document.createElement(\"div\");\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector(\"button\").addEventListener(\"click\", $3969451ff60cb8d5$var$hideError);\n $3969451ff60cb8d5$var$errorsContainer.appendChild(div);\n setTimeout(()=>div.classList.add(\"show\"), 100);\n};\n\n\n\nconst $224fa2388dce65c4$export$293a4b86a6fe2398 = (index, data = {})=>{\n const inputTemplate = /* html */ `\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n const fragment = document.createDocumentFragment();\n const div = document.createElement(\"div\");\n div.className = \"bg-light border shadow-sm mb-3 rounded\";\n div.setAttribute(\"data-section\", \"textBox\");\n div.setAttribute(\"data-index\", index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n return fragment.appendChild(div);\n};\n\n\nconst $64ef5d4149d7e6a5$export$e653a2de0f3a8b89 = (image, canvas, ctx, textOptions = [])=>{\n if (image == null) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n if (typeof image === \"string\") {\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n textOptions.forEach(function(item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n const multiplier = index + 1;\n const lineHeight = ctx.measureText(\"M\").width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split(\"\\n\");\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index)=>ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else textLines.forEach((text, index)=>{\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n ctx.restore();\n });\n};\n\n\nconst $85a5f86b715fe7db$var$videoModal = document.getElementById(\"videoModal\");\nconst $85a5f86b715fe7db$var$downloadModal = document.getElementById(\"downloadModal\");\nconst $85a5f86b715fe7db$var$canvas = document.getElementById(\"canvas\");\nconst $85a5f86b715fe7db$var$dropzoneEl = document.querySelector(\"files-dropzone\");\nconst $85a5f86b715fe7db$var$instructionsEl = document.getElementById(\"instructions\");\nconst $85a5f86b715fe7db$var$ctx = $85a5f86b715fe7db$var$canvas.getContext(\"2d\");\nconst $85a5f86b715fe7db$var$imageUploadMethodSelect = document.getElementById(\"imageUploadMethodSelect\");\nconst $85a5f86b715fe7db$var$fileSelectBtn = document.getElementById(\"fileSelectBtn\");\nconst $85a5f86b715fe7db$var$imageUrlForm = document.getElementById(\"imageUrlForm\");\nconst $85a5f86b715fe7db$var$addTextboxBtn = document.getElementById(\"addTextboxBtn\");\nconst $85a5f86b715fe7db$var$inputsContainer = document.getElementById(\"inputsContainer\");\nconst $85a5f86b715fe7db$var$generateMemeBtn = document.getElementById(\"generateMemeBtn\");\nconst $85a5f86b715fe7db$var$openVideoModalBtn = document.getElementById(\"openVideoModalBtn\");\nconst $85a5f86b715fe7db$var$downloadMemeBtn = document.getElementById(\"downloadMemeBtn\");\nconst $85a5f86b715fe7db$var$downloadMemePreview = document.getElementById(\"downloadMemePreview\");\nconst $85a5f86b715fe7db$var$webShareComponent = document.querySelector(\"web-share\");\nconst $85a5f86b715fe7db$var$galleryEl = document.getElementById(\"gallery\");\nconst $85a5f86b715fe7db$var$gallerySearchEl = document.getElementById(\"gallerySearch\");\nconst $85a5f86b715fe7db$var$galleryNoResultsEl = $85a5f86b715fe7db$var$galleryEl.querySelector(\".gallery__no-results\");\nconst $85a5f86b715fe7db$var$solidColorForm = document.getElementById(\"solidColorForm\");\nconst $85a5f86b715fe7db$var$uploadMethodEls = document.querySelectorAll(\".upload-method\");\nlet $85a5f86b715fe7db$var$selectedImage = null;\nlet $85a5f86b715fe7db$var$reqAnimFrame = null;\nconst $85a5f86b715fe7db$var$defaultTextOptions = {\n _isSettingsOpen: false,\n text: \"\",\n fillColor: \"#ffffff\",\n shadowColor: \"#000000\",\n font: \"Anton\",\n fontSize: 40,\n fontWeight: \"normal\",\n textAlign: \"center\",\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\nlet $85a5f86b715fe7db$var$textOptions = [\n {\n ...$85a5f86b715fe7db$var$defaultTextOptions\n }\n];\nconst $85a5f86b715fe7db$var$generateMeme = async ()=>{\n const dataUrl = $85a5f86b715fe7db$var$canvas.toDataURL(\"image/png\");\n // Prepare download link\n const downloadLink = dataUrl.replace(\"image/png\", \"image/octet-stream\");\n $85a5f86b715fe7db$var$downloadMemeBtn.download = `${(0, $17004b28c97c1306$export$e2a22331486dcca0)(\"meme\")}.png`;\n $85a5f86b715fe7db$var$downloadMemeBtn.href = downloadLink;\n $85a5f86b715fe7db$var$downloadMemePreview.src = downloadLink;\n // Prepare for sharing file\n if ((0, $7a2aca835bb05064$export$c37129e465f64ef0)()) try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: dataUrl,\n filename: `${(0, $17004b28c97c1306$export$e2a22331486dcca0)(\"meme\")}.png`,\n mimeType: \"image/png\"\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file && (0, $7a2aca835bb05064$export$c37129e465f64ef0)({\n files: [\n file\n ]\n })) {\n $85a5f86b715fe7db$var$webShareComponent.shareFiles = [\n file\n ];\n $85a5f86b715fe7db$var$webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n $85a5f86b715fe7db$var$downloadModal.open = true;\n};\nconst $85a5f86b715fe7db$var$onImageLoaded = (evt)=>{\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n $85a5f86b715fe7db$var$canvas.width = width;\n $85a5f86b715fe7db$var$canvas.height = height;\n $85a5f86b715fe7db$var$selectedImage = evt.target;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$generateMemeBtn.disabled = false;\n $85a5f86b715fe7db$var$canvas.hidden = false;\n $85a5f86b715fe7db$var$instructionsEl.hidden = true;\n};\nconst $85a5f86b715fe7db$var$handleSolidColorFormInput = (evt)=>{\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n if (evt.target === $85a5f86b715fe7db$var$solidColorForm[\"canvasColor\"]) $85a5f86b715fe7db$var$selectedImage = evt.target.value;\n if (typeof $85a5f86b715fe7db$var$selectedImage === \"string\") {\n $85a5f86b715fe7db$var$canvas.width = Number($85a5f86b715fe7db$var$solidColorForm[\"canvasWidth\"].value) || DEFAULT_WIDTH;\n $85a5f86b715fe7db$var$canvas.height = Number($85a5f86b715fe7db$var$solidColorForm[\"canvasHeight\"].value) || DEFAULT_HEIGHT;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$generateMemeBtn.disabled = false;\n $85a5f86b715fe7db$var$canvas.hidden = false;\n $85a5f86b715fe7db$var$instructionsEl.hidden = true;\n }\n};\nconst $85a5f86b715fe7db$var$handleFileSelect = (file)=>{\n if (!file) return;\n const image = new Image();\n const reader = new FileReader();\n reader.addEventListener(\"load\", function(evt) {\n const data = evt.target.result;\n image.addEventListener(\"load\", $85a5f86b715fe7db$var$onImageLoaded);\n image.src = data;\n });\n reader.readAsDataURL(file);\n};\nconst $85a5f86b715fe7db$var$handleOpenVideoModalButtonClick = ()=>{\n $85a5f86b715fe7db$var$videoModal.open = true;\n};\nconst $85a5f86b715fe7db$var$handleTextPropChange = (element, index, prop)=>{\n if (element.type === \"checkbox\") $85a5f86b715fe7db$var$textOptions[index][prop] = element.checked;\n else if (element.type === \"number\") $85a5f86b715fe7db$var$textOptions[index][prop] = Number(element.value);\n else $85a5f86b715fe7db$var$textOptions[index][prop] = element.value;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n};\nconst $85a5f86b715fe7db$var$handleAddTextboxBtnClick = ()=>{\n const textOptionsLength = $85a5f86b715fe7db$var$textOptions.length;\n const newTextBox = (0, $224fa2388dce65c4$export$293a4b86a6fe2398)(textOptionsLength, $85a5f86b715fe7db$var$defaultTextOptions);\n $85a5f86b715fe7db$var$textOptions.push({\n ...$85a5f86b715fe7db$var$defaultTextOptions\n });\n $85a5f86b715fe7db$var$inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\nconst $85a5f86b715fe7db$var$handleImageUploadFromURL = async (evt)=>{\n evt.preventDefault();\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form[\"imageUrl\"].value;\n if (!imageUrl.trim()) return;\n submitButton.disabled = true;\n submitButton.querySelector(\".spinner\").hidden = false;\n submitButton.querySelector(\".label\").hidden = true;\n try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: imageUrl\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n } catch (err) {\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(`Failed to load image from \"${imageUrl}\".`, \"danger\");\n } finally{\n submitButton.disabled = false;\n submitButton.querySelector(\".spinner\").hidden = true;\n submitButton.querySelector(\".label\").hidden = false;\n }\n};\nconst $85a5f86b715fe7db$var$moveText = (offsetDir, sign, index)=>()=>{\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n if (offsetDir === \"offsetY\") {\n if (sign === \"-\") $85a5f86b715fe7db$var$textOptions[index].offsetY -= 1;\n if (sign === \"+\") $85a5f86b715fe7db$var$textOptions[index].offsetY += 1;\n offsetYInput.value = $85a5f86b715fe7db$var$textOptions[index].offsetY;\n }\n if (offsetDir === \"offsetX\") {\n if (sign === \"-\") $85a5f86b715fe7db$var$textOptions[index].offsetX -= 1;\n if (sign === \"+\") $85a5f86b715fe7db$var$textOptions[index].offsetX += 1;\n offsetXInput.value = $85a5f86b715fe7db$var$textOptions[index].offsetX;\n }\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$reqAnimFrame = requestAnimationFrame($85a5f86b715fe7db$var$moveText(offsetDir, sign, index));\n };\nconst $85a5f86b715fe7db$var$handleUploadMethodChange = (evt)=>{\n $85a5f86b715fe7db$var$uploadMethodEls.forEach((el)=>el.hidden = el.id !== evt.target.value);\n};\nconst $85a5f86b715fe7db$var$handleFileSelectClick = ()=>{\n if (typeof $85a5f86b715fe7db$var$dropzoneEl.openFileDialog === \"function\") $85a5f86b715fe7db$var$dropzoneEl.openFileDialog();\n};\nconst $85a5f86b715fe7db$var$handleDropFilesAccepted = (evt)=>{\n const [file] = evt.detail.acceptedFiles;\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerInput = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"text\"]')) prop = \"text\";\n else if (element.matches('[data-input=\"fillColor\"]')) prop = \"fillColor\";\n else if (element.matches('[data-input=\"shadowColor\"]')) prop = \"shadowColor\";\n else if (element.matches('[data-input=\"font\"]')) prop = \"font\";\n else if (element.matches('[data-input=\"fontSize\"]')) prop = \"fontSize\";\n else if (element.matches('[data-input=\"fontWeight\"]')) prop = \"fontWeight\";\n else if (element.matches('[data-input=\"textAlign\"]')) prop = \"textAlign\";\n else if (element.matches('[data-input=\"shadowBlur\"]')) prop = \"shadowBlur\";\n else if (element.matches('[data-input=\"offsetY\"]')) prop = \"offsetY\";\n else if (element.matches('[data-input=\"offsetX\"]')) prop = \"offsetX\";\n else if (element.matches('[data-input=\"rotate\"]')) prop = \"rotate\";\n if (prop) $85a5f86b715fe7db$var$handleTextPropChange(element, index, prop);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerChange = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"allCaps\"]')) prop = \"allCaps\";\n if (prop) $85a5f86b715fe7db$var$handleTextPropChange(element, index, prop);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerClick = (evt)=>{\n const element = evt.target;\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\");\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n textBoxEls.forEach((el, index)=>{\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n if (el.getAttribute(\"data-index\") === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n $85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen = !$85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n $85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let confirm = true;\n if ($85a5f86b715fe7db$var$textOptions[index].text.trim()) confirm = window.confirm(\"Are you sure you want to remove this text box?\");\n if (confirm) {\n $85a5f86b715fe7db$var$textOptions = (0, $4af3d380d1884504$export$30a014203d0d7e4f)($85a5f86b715fe7db$var$textOptions, index);\n $85a5f86b715fe7db$var$inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach((el)=>el.remove());\n $85a5f86b715fe7db$var$textOptions.forEach((item, index)=>$85a5f86b715fe7db$var$inputsContainer.appendChild((0, $224fa2388dce65c4$export$293a4b86a6fe2398)(index, item)));\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n }\n }\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerdown = (evt)=>{\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n if (!textBoxEl) return;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n const offsetDir = element.getAttribute(\"data-move\");\n const sign = element.getAttribute(\"data-sign\");\n $85a5f86b715fe7db$var$reqAnimFrame = requestAnimationFrame($85a5f86b715fe7db$var$moveText(offsetDir, sign, index));\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerup = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n cancelAnimationFrame($85a5f86b715fe7db$var$reqAnimFrame);\n $85a5f86b715fe7db$var$reqAnimFrame = null;\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerout = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton || !$85a5f86b715fe7db$var$reqAnimFrame) return;\n cancelAnimationFrame($85a5f86b715fe7db$var$reqAnimFrame);\n $85a5f86b715fe7db$var$reqAnimFrame = null;\n};\nconst $85a5f86b715fe7db$var$handleGalleryClick = async (evt)=>{\n const button = evt.target.closest(\"button\");\n if (!button) return;\n const img = button.querySelector(\"img\");\n try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: img.src\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n } catch (err) {\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(`Failed to load image: \"${img.alt}\".`, \"danger\");\n }\n};\nconst $85a5f86b715fe7db$var$handleGallerySearchInput = (evt)=>{\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = $85a5f86b715fe7db$var$galleryEl.querySelectorAll(\"button\");\n galleryItems.forEach((item)=>{\n const alt = (item.querySelector(\"img\").getAttribute(\"alt\") || \"\").toLowerCase();\n item.hidden = !alt.includes(query);\n });\n $85a5f86b715fe7db$var$galleryNoResultsEl.hidden = !!$85a5f86b715fe7db$var$galleryEl.querySelector(\"button:not([hidden])\");\n};\nconst $85a5f86b715fe7db$var$handleWebShareError = ()=>{\n $85a5f86b715fe7db$var$downloadModal.open = false;\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(\"There was an error while trying to share your meme.\", \"danger\");\n};\nconst $85a5f86b715fe7db$var$handleCapturePhotoError = (evt)=>{\n console.error(evt.detail.error);\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(evt.detail.error.message, \"danger\");\n};\nconst $85a5f86b715fe7db$var$handleCapturePhotoSuccess = (evt)=>{\n $85a5f86b715fe7db$var$videoModal.open = false;\n const image = new Image();\n image.addEventListener(\"load\", $85a5f86b715fe7db$var$onImageLoaded);\n image.src = evt.detail.dataURI;\n};\nconst $85a5f86b715fe7db$var$handleModalOpen = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $85a5f86b715fe7db$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === \"function\") capturePhotoComponent.startVideoStream();\n }\n};\nconst $85a5f86b715fe7db$var$handleModalClose = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $85a5f86b715fe7db$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === \"function\") capturePhotoComponent.stopVideoStream();\n }\n};\n$85a5f86b715fe7db$var$fileSelectBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleFileSelectClick);\n$85a5f86b715fe7db$var$openVideoModalBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleOpenVideoModalButtonClick);\n$85a5f86b715fe7db$var$addTextboxBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleAddTextboxBtnClick);\n$85a5f86b715fe7db$var$generateMemeBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$generateMeme);\n$85a5f86b715fe7db$var$downloadMemeBtn.addEventListener(\"click\", ()=>$85a5f86b715fe7db$var$downloadModal.open = false);\n$85a5f86b715fe7db$var$imageUrlForm.addEventListener(\"submit\", $85a5f86b715fe7db$var$handleImageUploadFromURL);\n$85a5f86b715fe7db$var$dropzoneEl.addEventListener(\"files-dropzone-drop-accepted\", $85a5f86b715fe7db$var$handleDropFilesAccepted);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"input\", $85a5f86b715fe7db$var$handleInputsContainerInput);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"change\", $85a5f86b715fe7db$var$handleInputsContainerChange);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"click\", $85a5f86b715fe7db$var$handleInputsContainerClick);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerdown\", $85a5f86b715fe7db$var$handleInputsContainerPointerdown);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerup\", $85a5f86b715fe7db$var$handleInputsContainerPointerup);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerout\", $85a5f86b715fe7db$var$handleInputsContainerPointerout);\n$85a5f86b715fe7db$var$imageUploadMethodSelect.addEventListener(\"change\", $85a5f86b715fe7db$var$handleUploadMethodChange);\n$85a5f86b715fe7db$var$galleryEl.addEventListener(\"click\", $85a5f86b715fe7db$var$handleGalleryClick);\n$85a5f86b715fe7db$var$gallerySearchEl.addEventListener(\"input\", $85a5f86b715fe7db$var$handleGallerySearchInput);\n$85a5f86b715fe7db$var$solidColorForm.addEventListener(\"input\", $85a5f86b715fe7db$var$handleSolidColorFormInput);\ndocument.addEventListener(\"web-share:error\", $85a5f86b715fe7db$var$handleWebShareError);\ndocument.addEventListener(\"capture-photo:error\", $85a5f86b715fe7db$var$handleCapturePhotoError);\ndocument.addEventListener(\"capture-photo:success\", $85a5f86b715fe7db$var$handleCapturePhotoSuccess);\ndocument.addEventListener(\"me-open\", $85a5f86b715fe7db$var$handleModalOpen);\ndocument.addEventListener(\"me-close\", $85a5f86b715fe7db$var$handleModalClose);\n$85a5f86b715fe7db$var$galleryEl.querySelectorAll(\"button > img\")?.forEach((image)=>{\n image.setAttribute(\"title\", image.getAttribute(\"alt\"));\n});\n$85a5f86b715fe7db$var$textOptions.forEach((item, index)=>{\n $85a5f86b715fe7db$var$inputsContainer.appendChild((0, $224fa2388dce65c4$export$293a4b86a6fe2398)(index, item));\n});\n$85a5f86b715fe7db$var$dropzoneEl.accept = (0, $65136e012e05e2d7$export$63e7bed68b07a85c);\n(0, $56b863c8b6be7003$export$6874249d87f2602a).forEach(({ name: name, path: path, style: style, weight: weight })=>{\n (0, $56b863c8b6be7003$export$59eceaef0c7797b2)(name, path, {\n style: style,\n weight: weight\n });\n});\n\n\n//# sourceMappingURL=index.a3077d6d.js.map\n","\"use strict\";\n\nvar mapping = new Map();\nfunction register(baseUrl, manifest) {\n for (var i = 0; i < manifest.length - 1; i += 2) {\n mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n }\n}\nfunction resolve(id) {\n var resolved = mapping.get(id);\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(new __parcel__URL__(\"\").toString(),JSON.parse(\"[\\\"eq2Ey\\\",\\\"index.a3077d6d.js\\\",\\\"9jzSS\\\",\\\"Anton-Regular.e58ab3fe.ttf\\\",\\\"hr5Pp\\\",\\\"Oswald-Regular.89ec7d89.ttf\\\",\\\"5TebC\\\",\\\"Oswald-Bold.0f6a7ca6.ttf\\\",\\\"3ENF9\\\",\\\"Roboto-Regular.ca197847.ttf\\\",\\\"5yAXK\\\",\\\"Roboto-Bold.fdb9b54a.ttf\\\",\\\"k2KZ9\\\",\\\"RobotoCondensed-Regular.d585f5c7.ttf\\\",\\\"4h4UX\\\",\\\"RobotoCondensed-Bold.e1f96d4b.ttf\\\",\\\"8pomG\\\",\\\"CourierPrime-Regular.3a25a501.ttf\\\",\\\"l2v76\\\",\\\"CourierPrime-Bold.3d6bf689.ttf\\\",\\\"eKMWr\\\",\\\"OpenSans-Regular.edf9e01b.ttf\\\",\\\"dXO1Z\\\",\\\"OpenSans-Bold.8fceb72b.ttf\\\",\\\"9FH7D\\\",\\\"index.bcbdd9b6.css\\\"]\"));","import { isWebShareSupported } from '@georapbox/web-share-element/dist/is-web-share-supported.js';\nimport '@georapbox/web-share-element/dist/web-share-defined.js';\nimport '@georapbox/capture-photo-element/dist/capture-photo-defined.js';\nimport '@georapbox/modal-element/dist/modal-element-defined.js';\nimport '@georapbox/files-dropzone-element/dist/files-dropzone-defined.js';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport '../css/main.css';\nimport { arrayRemove } from './utils/array-remove.js';\nimport { uid } from './utils/uid.js';\nimport { ACCEPTED_MIME_TYPES } from './constants.js';\nimport { customFonts, loadCustomFont } from './custom-fonts.js';\nimport { fileFromUrl } from './file-from-url.js';\nimport { toastAlert } from './toast-alert.js';\nimport { createTextBox } from './create-text-box.js';\nimport { drawCanvas } from './draw-canvas.js';\n\nconst videoModal = document.getElementById('videoModal');\nconst downloadModal = document.getElementById('downloadModal');\nconst canvas = document.getElementById('canvas');\nconst dropzoneEl = document.querySelector('files-dropzone');\nconst instructionsEl = document.getElementById('instructions');\nconst ctx = canvas.getContext('2d');\nconst imageUploadMethodSelect = document.getElementById('imageUploadMethodSelect');\nconst fileSelectBtn = document.getElementById('fileSelectBtn');\nconst imageUrlForm = document.getElementById('imageUrlForm');\nconst addTextboxBtn = document.getElementById('addTextboxBtn');\nconst inputsContainer = document.getElementById('inputsContainer');\nconst generateMemeBtn = document.getElementById('generateMemeBtn');\nconst openVideoModalBtn = document.getElementById('openVideoModalBtn');\nconst downloadMemeBtn = document.getElementById('downloadMemeBtn');\nconst downloadMemePreview = document.getElementById('downloadMemePreview');\nconst webShareComponent = document.querySelector('web-share');\nconst galleryEl = document.getElementById('gallery');\nconst gallerySearchEl = document.getElementById('gallerySearch');\nconst galleryNoResultsEl = galleryEl.querySelector('.gallery__no-results');\nconst solidColorForm = document.getElementById('solidColorForm');\nconst uploadMethodEls = document.querySelectorAll('.upload-method');\nlet selectedImage = null;\nlet reqAnimFrame = null;\n\nconst defaultTextOptions = {\n _isSettingsOpen: false,\n text: '',\n fillColor: '#ffffff',\n shadowColor: '#000000',\n font: 'Anton',\n fontSize: 40,\n fontWeight: 'normal',\n textAlign: 'center',\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\n\nlet textOptions = [\n { ...defaultTextOptions }\n];\n\nconst generateMeme = async () => {\n const dataUrl = canvas.toDataURL('image/png');\n\n // Prepare download link\n const downloadLink = dataUrl.replace('image/png', 'image/octet-stream');\n downloadMemeBtn.download = `${uid('meme')}.png`;\n downloadMemeBtn.href = downloadLink;\n downloadMemePreview.src = downloadLink;\n\n // Prepare for sharing file\n if (isWebShareSupported()) {\n try {\n const file = await fileFromUrl({\n url: dataUrl,\n filename: `${uid('meme')}.png`,\n mimeType: 'image/png'\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file && isWebShareSupported({ files: [file] })) {\n webShareComponent.shareFiles = [file];\n webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n downloadModal.open = true;\n};\n\nconst onImageLoaded = evt => {\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n\n selectedImage = evt.target;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n};\n\nconst handleSolidColorFormInput = evt => {\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n\n if (evt.target === solidColorForm['canvasColor']) {\n selectedImage = evt.target.value;\n }\n\n if (typeof selectedImage === 'string') {\n canvas.width = Number(solidColorForm['canvasWidth'].value) || DEFAULT_WIDTH;\n canvas.height = Number(solidColorForm['canvasHeight'].value) || DEFAULT_HEIGHT;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n }\n};\n\nconst handleFileSelect = file => {\n if (!file) {\n return;\n }\n\n const image = new Image();\n const reader = new FileReader();\n\n reader.addEventListener('load', function (evt) {\n const data = evt.target.result;\n image.addEventListener('load', onImageLoaded);\n image.src = data;\n });\n\n reader.readAsDataURL(file);\n};\n\nconst handleOpenVideoModalButtonClick = () => {\n videoModal.open = true;\n};\n\nconst handleTextPropChange = (element, index, prop) => {\n if (element.type === 'checkbox') {\n textOptions[index][prop] = element.checked;\n } else if (element.type === 'number') {\n textOptions[index][prop] = Number(element.value);\n } else {\n textOptions[index][prop] = element.value;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n};\n\nconst handleAddTextboxBtnClick = () => {\n const textOptionsLength = textOptions.length;\n const newTextBox = createTextBox(textOptionsLength, defaultTextOptions);\n\n textOptions.push({ ...defaultTextOptions });\n inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\n\nconst handleImageUploadFromURL = async evt => {\n evt.preventDefault();\n\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form['imageUrl'].value;\n\n if (!imageUrl.trim()) {\n return;\n }\n\n submitButton.disabled = true;\n submitButton.querySelector('.spinner').hidden = false;\n submitButton.querySelector('.label').hidden = true;\n\n try {\n const file = await fileFromUrl({\n url: imageUrl\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image from \"${imageUrl}\".`, 'danger');\n } finally {\n submitButton.disabled = false;\n submitButton.querySelector('.spinner').hidden = true;\n submitButton.querySelector('.label').hidden = false;\n }\n};\n\nconst moveText = (offsetDir, sign, index) => () => {\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n\n if (offsetDir === 'offsetY') {\n if (sign === '-') {\n textOptions[index].offsetY -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetY += 1;\n }\n\n offsetYInput.value = textOptions[index].offsetY;\n }\n\n if (offsetDir === 'offsetX') {\n if (sign === '-') {\n textOptions[index].offsetX -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetX += 1;\n }\n\n offsetXInput.value = textOptions[index].offsetX;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleUploadMethodChange = evt => {\n uploadMethodEls.forEach(el => el.hidden = el.id !== evt.target.value);\n};\n\nconst handleFileSelectClick = () => {\n if (typeof dropzoneEl.openFileDialog === 'function') {\n dropzoneEl.openFileDialog();\n }\n};\n\nconst handleDropFilesAccepted = evt => {\n const [file] = evt.detail.acceptedFiles;\n\n if (file) {\n handleFileSelect(file);\n }\n};\n\nconst handleInputsContainerInput = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"text\"]')) {\n prop = 'text';\n } else if (element.matches('[data-input=\"fillColor\"]')) {\n prop = 'fillColor';\n } else if (element.matches('[data-input=\"shadowColor\"]')) {\n prop = 'shadowColor';\n } else if (element.matches('[data-input=\"font\"]')) {\n prop = 'font';\n } else if (element.matches('[data-input=\"fontSize\"]')) {\n prop = 'fontSize';\n } else if (element.matches('[data-input=\"fontWeight\"]')) {\n prop = 'fontWeight';\n } else if (element.matches('[data-input=\"textAlign\"]')) {\n prop = 'textAlign';\n } else if (element.matches('[data-input=\"shadowBlur\"]')) {\n prop = 'shadowBlur';\n } else if (element.matches('[data-input=\"offsetY\"]')) {\n prop = 'offsetY';\n } else if (element.matches('[data-input=\"offsetX\"]')) {\n prop = 'offsetX';\n } else if (element.matches('[data-input=\"rotate\"]')) {\n prop = 'rotate';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerChange = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"allCaps\"]')) {\n prop = 'allCaps';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerClick = evt => {\n const element = evt.target;\n\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute('data-index');\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n\n textBoxEls.forEach((el, index) => {\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n\n if (el.getAttribute('data-index') === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n textOptions[index]._isSettingsOpen = !textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let confirm = true;\n\n if (textOptions[index].text.trim()) {\n confirm = window.confirm('Are you sure you want to remove this text box?');\n }\n\n if (confirm) {\n textOptions = arrayRemove(textOptions, index);\n inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach(el => el.remove());\n textOptions.forEach((item, index) => inputsContainer.appendChild(createTextBox(index, item)));\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n }\n }\n};\n\nconst handleInputsContainerPointerdown = evt => {\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n\n if (!textBoxEl) {\n return;\n }\n\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n const offsetDir = element.getAttribute('data-move');\n const sign = element.getAttribute('data-sign');\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleInputsContainerPointerup = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleInputsContainerPointerout = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton || !reqAnimFrame) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleGalleryClick = async evt => {\n const button = evt.target.closest('button');\n\n if (!button) {\n return;\n }\n\n const img = button.querySelector('img');\n\n try {\n const file = await fileFromUrl({\n url: img.src\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image: \"${img.alt}\".`, 'danger');\n }\n};\n\nconst handleGallerySearchInput = evt => {\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = galleryEl.querySelectorAll('button');\n\n galleryItems.forEach(item => {\n const alt = (item.querySelector('img').getAttribute('alt') || '').toLowerCase();\n item.hidden = !alt.includes(query);\n });\n\n galleryNoResultsEl.hidden = !!galleryEl.querySelector('button:not([hidden])');\n};\n\nconst handleWebShareError = () => {\n downloadModal.open = false;\n toastAlert('There was an error while trying to share your meme.', 'danger');\n};\n\nconst handleCapturePhotoError = evt => {\n console.error(evt.detail.error);\n toastAlert(evt.detail.error.message, 'danger');\n};\n\nconst handleCapturePhotoSuccess = evt => {\n videoModal.open = false;\n const image = new Image();\n image.addEventListener('load', onImageLoaded);\n image.src = evt.detail.dataURI;\n};\n\nconst handleModalOpen = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === 'function') {\n capturePhotoComponent.startVideoStream();\n }\n }\n};\n\nconst handleModalClose = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === 'function') {\n capturePhotoComponent.stopVideoStream();\n }\n }\n};\n\nfileSelectBtn.addEventListener('click', handleFileSelectClick);\nopenVideoModalBtn.addEventListener('click', handleOpenVideoModalButtonClick);\naddTextboxBtn.addEventListener('click', handleAddTextboxBtnClick);\ngenerateMemeBtn.addEventListener('click', generateMeme);\ndownloadMemeBtn.addEventListener('click', () => downloadModal.open = false);\nimageUrlForm.addEventListener('submit', handleImageUploadFromURL);\ndropzoneEl.addEventListener('files-dropzone-drop-accepted', handleDropFilesAccepted);\ninputsContainer.addEventListener('input', handleInputsContainerInput);\ninputsContainer.addEventListener('change', handleInputsContainerChange);\ninputsContainer.addEventListener('click', handleInputsContainerClick);\ninputsContainer.addEventListener('pointerdown', handleInputsContainerPointerdown);\ninputsContainer.addEventListener('pointerup', handleInputsContainerPointerup);\ninputsContainer.addEventListener('pointerout', handleInputsContainerPointerout);\nimageUploadMethodSelect.addEventListener('change', handleUploadMethodChange);\ngalleryEl.addEventListener('click', handleGalleryClick);\ngallerySearchEl.addEventListener('input', handleGallerySearchInput);\nsolidColorForm.addEventListener('input', handleSolidColorFormInput);\ndocument.addEventListener('web-share:error', handleWebShareError);\ndocument.addEventListener('capture-photo:error', handleCapturePhotoError);\ndocument.addEventListener('capture-photo:success', handleCapturePhotoSuccess);\ndocument.addEventListener('me-open', handleModalOpen);\ndocument.addEventListener('me-close', handleModalClose);\n\ngalleryEl.querySelectorAll('button > img')?.forEach(image => {\n image.setAttribute('title', image.getAttribute('alt'));\n});\n\ntextOptions.forEach((item, index) => {\n inputsContainer.appendChild(createTextBox(index, item));\n});\n\ndropzoneEl.accept = ACCEPTED_MIME_TYPES;\n\ncustomFonts.forEach(({ name, path, style, weight }) => {\n loadCustomFont(name, path, { style, weight });\n});\n","function a(a){return null!==a&&\"object\"==typeof a?\"share\"in navigator&&\"canShare\"in navigator&&navigator.canShare(a):\"share\"in navigator}export{a as isWebShareSupported};\n//# sourceMappingURL=is-web-share-supported.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $e179325634270afd$exports = {};\n\n$parcel$export($e179325634270afd$exports, \"WebShare\", function () { return $e179325634270afd$export$30b344bef3e55b67; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */ const $e179325634270afd$var$styles = /* css */ `\n :host {\n display: inline-block;\n }\n`;\nconst $e179325634270afd$var$template = document.createElement(\"template\");\n$e179325634270afd$var$template.innerHTML = /* html */ `\n \n \n`;\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */ class $e179325634270afd$export$30b344bef3e55b67 extends HTMLElement {\n /** @type {Nullable} */ #buttonSlot;\n /** @type {Nullable} */ #buttonEl;\n /** @type {File[]} */ #files = [];\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\",\n delegatesFocus: true\n });\n shadowRoot.appendChild($e179325634270afd$var$template.content.cloneNode(true));\n }\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"disabled\" && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute(\"disabled\", this.disabled);\n this.#buttonEl.setAttribute(\"aria-disabled\", this.disabled.toString());\n if (this.#buttonEl.part && this.#buttonEl.part.contains(\"button\")) this.#buttonEl.part.toggle(\"button--disabled\", this.disabled);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"shareUrl\");\n this.#upgradeProperty(\"shareTitle\");\n this.#upgradeProperty(\"shareText\");\n this.#upgradeProperty(\"shareFiles\");\n this.#upgradeProperty(\"disabled\");\n this.#buttonSlot?.addEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.addEventListener(\"click\", this.#handleClick);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#buttonSlot?.removeEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n }\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */ get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(value) {\n this.setAttribute(\"share-url\", value);\n }\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */ get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(value) {\n this.setAttribute(\"share-title\", value);\n }\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */ get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(value) {\n this.setAttribute(\"share-text\", value);\n }\n /**\n * @type {File[]} - The files to share.\n */ get shareFiles() {\n return this.#files;\n }\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) this.#files = value;\n }\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */ async share() {\n if (this.disabled) return;\n try {\n /** @type {ShareData} */ const shareData = {};\n if (this.shareUrl) shareData.url = this.shareUrl;\n if (this.shareTitle) shareData.title = this.shareTitle;\n if (this.shareText) shareData.text = this.shareText;\n if (Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n })) shareData.files = this.shareFiles;\n await navigator.share(shareData);\n this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: true,\n composed: true,\n detail: {\n shareData: shareData\n }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */ #handleClick = (evt)=>{\n evt.preventDefault();\n if (this.disabled) return;\n this.share();\n };\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */ #handleSlotChange = (evt)=>{\n if (evt.target && evt.target.name === \"button\") {\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n this.#buttonEl = this.#getButton();\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener(\"click\", this.#handleClick);\n if (this.#buttonEl.nodeName !== \"BUTTON\" && !this.#buttonEl.hasAttribute(\"role\")) this.#buttonEl.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */ #getButton() {\n if (!this.#buttonSlot) return null;\n return this.#buttonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n static defineCustomElement(elementName = \"web-share\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $e179325634270afd$export$30b344bef3e55b67);\n }\n}\n\n\n(0, $e179325634270afd$export$30b344bef3e55b67).defineCustomElement();\n\n\nexport {$e179325634270afd$export$30b344bef3e55b67 as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","// @ts-check\n\n/**\n * Check if Web Share API is supported by the platform.\n *\n * @param {import('./web-share').ShareData} [options]\n * @returns {boolean} Returns `true` if Web Share API is supported; otherwise `false`.\n */\nfunction isWebShareSupported(options) {\n if (options !== null && typeof options === 'object') {\n return 'share' in navigator && 'canShare' in navigator && navigator.canShare(options);\n }\n\n return 'share' in navigator;\n}\n\nexport { isWebShareSupported };\n","Object.defineProperty({},\"WebShare\",{get:function(){return s},set:void 0,enumerable:!0,configurable:!0});let t=`\n :host {\n display: inline-block;\n }\n`,e=document.createElement(\"template\");e.innerHTML=`\n \n \n`;class s extends HTMLElement{#t;#e;#s=[];constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\",delegatesFocus:!0}).appendChild(e.content.cloneNode(!0)),this.#t=this.shadowRoot?.querySelector('slot[name=\"button\"]')||null,this.#e=this.#i()}static get observedAttributes(){return[\"disabled\"]}attributeChangedCallback(t,e,s){\"disabled\"===t&&e!==s&&this.#e&&(this.#e.toggleAttribute(\"disabled\",this.disabled),this.#e.setAttribute(\"aria-disabled\",this.disabled.toString()),this.#e.part&&this.#e.part.contains(\"button\")&&this.#e.part.toggle(\"button--disabled\",this.disabled))}connectedCallback(){this.#r(\"shareUrl\"),this.#r(\"shareTitle\"),this.#r(\"shareText\"),this.#r(\"shareFiles\"),this.#r(\"disabled\"),this.#t?.addEventListener(\"slotchange\",this.#a),this.#e?.addEventListener(\"click\",this.#n)}disconnectedCallback(){this.#t?.removeEventListener(\"slotchange\",this.#a),this.#e?.removeEventListener(\"click\",this.#n)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(t){this.toggleAttribute(\"disabled\",!!t)}get shareUrl(){return this.getAttribute(\"share-url\")||\"\"}set shareUrl(t){this.setAttribute(\"share-url\",t)}get shareTitle(){return this.getAttribute(\"share-title\")||\"\"}set shareTitle(t){this.setAttribute(\"share-title\",t)}get shareText(){return this.getAttribute(\"share-text\")||\"\"}set shareText(t){this.setAttribute(\"share-text\",t)}get shareFiles(){return this.#s}set shareFiles(t){Array.isArray(t)&&t.length>0&&(this.#s=t)}async share(){if(!this.disabled)try{let t={};this.shareUrl&&(t.url=this.shareUrl),this.shareTitle&&(t.title=this.shareTitle),this.shareText&&(t.text=this.shareText),Array.isArray(this.shareFiles)&&this.shareFiles.length>0&&navigator.canShare&&navigator.canShare({files:this.shareFiles})&&(t.files=this.shareFiles),await navigator.share(t),this.dispatchEvent(new CustomEvent(\"web-share:success\",{bubbles:!0,composed:!0,detail:{shareData:t}}))}catch(t){if(t instanceof Error&&\"AbortError\"===t.name){this.dispatchEvent(new CustomEvent(\"web-share:abort\",{bubbles:!0,composed:!0,detail:{error:t}}));return}this.dispatchEvent(new CustomEvent(\"web-share:error\",{bubbles:!0,composed:!0,detail:{error:t}}))}}#n=t=>{t.preventDefault(),this.disabled||this.share()};#a=t=>{t.target&&\"button\"===t.target.name&&(this.#e?.removeEventListener(\"click\",this.#n),this.#e=this.#i(),this.#e&&(this.#e.addEventListener(\"click\",this.#n),\"BUTTON\"===this.#e.nodeName||this.#e.hasAttribute(\"role\")||this.#e.setAttribute(\"role\",\"button\")))};#i(){return this.#t&&this.#t.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"button\"===t.getAttribute(\"slot\"))||null}#r(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}static defineCustomElement(t=\"web-share\"){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,s)}}s.defineCustomElement();export{s as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","import { WebShare } from './web-share.js';\n\nWebShare.defineCustomElement();\n\nexport { WebShare };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */\n\nconst styles = /* css */`\n :host {\n display: inline-block;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */ `\n \n \n`;\n\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */\nclass WebShare extends HTMLElement {\n /** @type {Nullable} */\n #buttonSlot;\n\n /** @type {Nullable} */\n #buttonEl;\n\n /** @type {File[]} */\n #files = [];\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open', delegatesFocus: true });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n\n static get observedAttributes() {\n return ['disabled'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'disabled' && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute('disabled', this.disabled);\n this.#buttonEl.setAttribute('aria-disabled', this.disabled.toString());\n\n if (this.#buttonEl.part && this.#buttonEl.part.contains('button')) {\n this.#buttonEl.part.toggle('button--disabled', this.disabled);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('shareUrl');\n this.#upgradeProperty('shareTitle');\n this.#upgradeProperty('shareText');\n this.#upgradeProperty('shareFiles');\n this.#upgradeProperty('disabled');\n\n this.#buttonSlot?.addEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.addEventListener('click', this.#handleClick);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#buttonSlot?.removeEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n }\n\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */\n get shareUrl() {\n return this.getAttribute('share-url') || '';\n }\n\n set shareUrl(value) {\n this.setAttribute('share-url', value);\n }\n\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */\n get shareTitle() {\n return this.getAttribute('share-title') || '';\n }\n\n set shareTitle(value) {\n this.setAttribute('share-title', value);\n }\n\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */\n get shareText() {\n return this.getAttribute('share-text') || '';\n }\n\n set shareText(value) {\n this.setAttribute('share-text', value);\n }\n\n /**\n * @type {File[]} - The files to share.\n */\n get shareFiles() {\n return this.#files;\n }\n\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) {\n this.#files = value;\n }\n }\n\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */\n async share() {\n if (this.disabled) {\n return;\n }\n\n try {\n /** @type {ShareData} */\n const shareData = {};\n\n if (this.shareUrl) {\n shareData.url = this.shareUrl;\n }\n\n if (this.shareTitle) {\n shareData.title = this.shareTitle;\n }\n\n if (this.shareText) {\n shareData.text = this.shareText;\n }\n\n if (\n Array.isArray(this.shareFiles)\n && this.shareFiles.length > 0\n && navigator.canShare\n && navigator.canShare({ files: this.shareFiles })\n ) {\n shareData.files = this.shareFiles;\n }\n\n await navigator.share(shareData);\n\n this.dispatchEvent(new CustomEvent('web-share:success', {\n bubbles: true,\n composed: true,\n detail: { shareData }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.dispatchEvent(new CustomEvent('web-share:abort', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n\n return;\n }\n\n this.dispatchEvent(new CustomEvent('web-share:error', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */\n #handleClick = evt => {\n evt.preventDefault();\n\n if (this.disabled) {\n return;\n }\n\n this.share();\n };\n\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */\n #handleSlotChange = evt => {\n if (evt.target && evt.target.name === 'button') {\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n this.#buttonEl = this.#getButton();\n\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener('click', this.#handleClick);\n\n if (this.#buttonEl.nodeName !== 'BUTTON' && !this.#buttonEl.hasAttribute('role')) {\n this.#buttonEl.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */\n #getButton() {\n if (!this.#buttonSlot) {\n return null;\n }\n\n return this.#buttonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n static defineCustomElement(elementName = 'web-share') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, WebShare);\n }\n }\n}\n\nexport { WebShare };\n","Object.defineProperty({},\"CapturePhoto\",{get:function(){return n},set:void 0,enumerable:!0,configurable:!0});let t=(t,e,i)=>(Number.isNaN(e)&&(e=0),Number.isNaN(i)&&(i=0),Math.min(Math.max(t,Math.min(e,i)),Math.max(e,i))),e=\"capture-photo\",i=`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`,o=document.createElement(\"template\");o.innerHTML=`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;class n extends HTMLElement{#t={};#e=null;#i=null;#o=null;#n=null;#a=null;#s=null;#r=null;#l=null;constructor(){super(),this.#t=this.getSupportedConstraints(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(o.content.cloneNode(!0))}static get observedAttributes(){return[\"no-image\",\"facing-mode\",\"camera-resolution\",\"pan\",\"tilt\",\"zoom\"]}attributeChangedCallback(t,e,i){if(!this.isConnected)return;let o=this.getTrackCapabilities(),n=this.getTrackSettings();if(\"no-image\"===t&&e!==i&&this.#u(),\"facing-mode\"===t&&e!==i&&\"facingMode\"in this.#t){let t=[\"user\",\"environment\"].includes(this.facingMode||\"\");\"facingMode\"in n&&t&&(this.stopVideoStream(),this.startVideoStream())}if(\"camera-resolution\"===t&&e!==i&&\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[t=0,e=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));if(t>0&&e>0&&\"width\"in o&&\"height\"in o){let i=!!(o.width?.min&&o.width?.max)&&t>=o?.width?.min&&t<=o?.width?.max,a=!!(o.height?.min&&o.height?.max)&&e>=o?.height?.min&&e<=o?.height?.max;\"width\"in n&&\"height\"in n&&i&&a&&(this.stopVideoStream(),this.startVideoStream())}}if(\"pan\"===t&&e!==i&&\"pan\"in this.#t){let t=!!(\"pan\"in o&&o.pan?.min&&o.pan?.max)&&this.pan>=o.pan.min&&this.pan<=o.pan.max;\"pan\"in n&&\"number\"==typeof this.pan&&t&&this.#h(\"pan\",this.pan)}if(\"tilt\"===t&&e!==i&&\"tilt\"in this.#t){let t=!!(\"tilt\"in o&&o.tilt?.min&&o.tilt?.max)&&this.tilt>=o.tilt.min&&this.tilt<=o.tilt.max;\"tilt\"in n&&\"number\"==typeof this.tilt&&t&&this.#h(\"tilt\",this.tilt)}if(\"zoom\"===t&&e!==i&&\"zoom\"in this.#t){let t=!!(\"zoom\"in o&&o.zoom?.min&&o.zoom?.max)&&this.zoom>=o.zoom.min&&this.zoom<=o.zoom.max;\"zoom\"in n&&\"number\"==typeof this.zoom&&t&&this.#h(\"zoom\",this.zoom)}}connectedCallback(){if(this.#d(\"autpoPlay\"),this.#d(\"noImage\"),this.#d(\"facingMode\"),this.#d(\"cameraResolution\"),this.#d(\"pan\"),this.#d(\"tilt\"),this.#d(\"zoom\"),this.#d(\"calculateFileSize\"),this.#i=this.shadowRoot?.querySelector(\"canvas\")||null,this.#o=this.shadowRoot?.getElementById(\"output\")||null,this.#n=this.shadowRoot?.querySelector(\"video\")||null,this.#a=this.shadowRoot?.querySelector('slot[name=\"capture-button\"]')||null,this.#s=this.#c(),this.#r=this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]')||null,this.#l=this.#m(),this.#n?.addEventListener(\"loadedmetadata\",this.#p),this.#a?.addEventListener(\"slotchange\",this.#g),this.#s?.addEventListener(\"click\",this.#b),this.#r?.addEventListener(\"slotchange\",this.#f),this.#l?.addEventListener(\"click\",this.#v),!n.isSupported())return this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:{name:\"NotSupportedError\",message:\"Not supported\"}}}));this.autoPlay&&this.startVideoStream()}disconnectedCallback(){this.stopVideoStream(),this.#l?.removeEventListener(\"click\",this.#v),this.#s?.removeEventListener(\"click\",this.#b),this.#n?.removeEventListener(\"canplay\",this.#p),this.#a?.removeEventListener(\"slotchange\",this.#g),this.#r?.removeEventListener(\"slotchange\",this.#f)}get autoPlay(){return this.hasAttribute(\"auto-play\")}set autoPlay(t){this.toggleAttribute(\"auto-play\",!!t)}get noImage(){return this.hasAttribute(\"no-image\")}set noImage(t){this.toggleAttribute(\"no-image\",!!t)}get facingMode(){return this.getAttribute(\"facing-mode\")||\"user\"}set facingMode(t){this.setAttribute(\"facing-mode\",t)}get cameraResolution(){return this.getAttribute(\"camera-resolution\")||\"\"}set cameraResolution(t){this.setAttribute(\"camera-resolution\",t)}get pan(){return Number(this.getAttribute(\"pan\"))||0}set pan(t){this.setAttribute(\"pan\",null!=t?t.toString():t)}get tilt(){return Number(this.getAttribute(\"tilt\"))||0}set tilt(t){this.setAttribute(\"tilt\",null!=t?t.toString():t)}get zoom(){return Number(this.getAttribute(\"zoom\"))||1}set zoom(t){this.setAttribute(\"zoom\",null!=t?t.toString():t)}get loading(){return this.hasAttribute(\"loading\")}get calculateFileSize(){return this.hasAttribute(\"calculate-file-size\")}set calculateFileSize(t){this.toggleAttribute(\"calculate-file-size\",!!t)}#v=t=>{t.preventDefault(),this.loading||(this.facingMode=\"user\"!==this.facingMode&&this.facingMode?\"user\":\"environment\")};#b=t=>{t.preventDefault(),this.capture()};#p=t=>{let i=t.target;i.play().then(()=>{this.dispatchEvent(new CustomEvent(`${e}:video-play`,{bubbles:!0,composed:!0,detail:{video:i}}))}).catch(t=>{this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}).finally(()=>{this.removeAttribute(\"loading\")})};#u(){this.#o&&Array.from(this.#o.childNodes).forEach(t=>t.remove())}#h(e,i){if(!this.#e||!e||!i)return;let[o]=this.#e.getVideoTracks(),n=this.getTrackCapabilities();e in this.getTrackSettings()&&o.applyConstraints({advanced:[{[e]:t(Number(i),n[e]?.min||1,n[e]?.max||1)}]})}#g=t=>{t.target?.name===\"capture-button\"&&(this.#s?.removeEventListener(\"click\",this.#b),this.#s=this.#c(),this.#s&&(this.#s.addEventListener(\"click\",this.#b),\"BUTTON\"===this.#s.nodeName||this.#s.hasAttribute(\"role\")||this.#s.setAttribute(\"role\",\"button\")))};#f=t=>{t.target?.name===\"facing-mode-button\"&&(this.#l?.removeEventListener(\"click\",this.#v),this.#l=this.#m(),this.#l&&(this.#l.addEventListener(\"click\",this.#v),\"BUTTON\"===this.#l.nodeName||this.#l.hasAttribute(\"role\")||this.#l.setAttribute(\"role\",\"button\")))};#m(){return this.#r&&this.#r.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"facing-mode-button\"===t.getAttribute(\"slot\"))||null}#c(){return this.#a&&this.#a.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"capture-button\"===t.getAttribute(\"slot\"))||null}#d(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}async startVideoStream(){if(!n.isSupported()||this.#e)return;this.setAttribute(\"loading\",\"\");let t={video:{facingMode:{ideal:this.facingMode||\"user\"},pan:!0,tilt:!0,zoom:!0},audio:!1};if(\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[e=0,i=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));e>0&&i>0&&(t.video.width=e,t.video.height=i)}try{this.#e=await navigator.mediaDevices.getUserMedia(t),this.#n&&(this.#n.srcObject=this.#e),this.#h(\"pan\",this.pan),this.#h(\"tilt\",this.tilt),this.#h(\"zoom\",this.zoom);let e=this.getTrackSettings();\"facingMode\"in e&&this.#r&&(this.#r.hidden=!1)}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}finally{this.removeAttribute(\"loading\")}}stopVideoStream(){if(!this.#n||!this.#e)return;let[t]=this.#e.getVideoTracks();t?.stop(),this.#n.srcObject=null,this.#e=null}async capture(){if(!this.loading&&this.#i&&this.#n)try{let t=this.#i.getContext(\"2d\"),i=this.#n.videoWidth,o=this.#n.videoHeight;this.#i.width=i,this.#i.height=o,t?.drawImage(this.#n,0,0,i,o);let n=this.#i.toDataURL(\"image/png\");if(\"string\"==typeof n&&n.includes(\"data:image\")){if(!this.noImage){let t=new Image;t.src=n,t.width=i,t.height=o,t.setAttribute(\"part\",\"output-image\"),this.#u(),this.#o?.appendChild(t)}let t={dataURI:n,width:i,height:o};if(this.calculateFileSize)try{let e=await fetch(n),i=(await e.blob()).size;i&&(t.size=i)}catch(t){}this.dispatchEvent(new CustomEvent(`${e}:success`,{bubbles:!0,composed:!0,detail:t}))}}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}}getSupportedConstraints(){return n.isSupported()&&navigator.mediaDevices.getSupportedConstraints()||{}}getTrackCapabilities(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getCapabilities&&t.getCapabilities()||{}}getTrackSettings(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getSettings&&t.getSettings()||{}}static isSupported(){return!!navigator.mediaDevices?.getUserMedia}static defineCustomElement(t=e){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,n)}}n.defineCustomElement();export{n as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $c290816263f90981$exports = {};\n\n$parcel$export($c290816263f90981$exports, \"CapturePhoto\", function () { return $c290816263f90981$export$cc30a98fe3890794; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */ /**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */ // @ts-check\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */ const $02ad8beec419df62$export$7d15b64cf5a3a4c4 = (value, lower, upper)=>{\n if (Number.isNaN(lower)) lower = 0;\n if (Number.isNaN(upper)) upper = 0;\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n\n\nconst $c290816263f90981$var$COMPONENT_NAME = \"capture-photo\";\nconst $c290816263f90981$var$styles = /* css */ `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\nconst $c290816263f90981$var$template = document.createElement(\"template\");\n$c290816263f90981$var$template.innerHTML = /* html */ `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */ class $c290816263f90981$export$cc30a98fe3890794 extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/ #supportedConstraints = {};\n /** @type {Nullable} */ #stream = null;\n /** @type {Nullable} */ #canvasElement = null;\n /** @type {Nullable} */ #outputElement = null;\n /** @type {Nullable} */ #videoElement = null;\n /** @type {Nullable} */ #captureButtonSlot = null;\n /** @type {Nullable} */ #captureButton = null;\n /** @type {Nullable} */ #facingModeButtonSlot = null;\n /** @type {Nullable} */ #facingModeButton = null;\n constructor(){\n super();\n this.#supportedConstraints = this.getSupportedConstraints();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($c290816263f90981$var$template.content.cloneNode(true));\n }\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) return;\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (name === \"no-image\" && oldValue !== newValue) this.#emptyOutputElement();\n if (name === \"facing-mode\" && oldValue !== newValue && \"facingMode\" in this.#supportedConstraints) {\n const isValidFacingMode = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n if (\"facingMode\" in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n if (name === \"camera-resolution\" && oldValue !== newValue) {\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0 && \"width\" in trackCapabilities && \"height\" in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max : false;\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max : false;\n if (\"width\" in trackSettings && \"height\" in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n if (name === \"pan\" && oldValue !== newValue && \"pan\" in this.#supportedConstraints) {\n const panInAllowedRange = \"pan\" in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max : false;\n if (\"pan\" in trackSettings && typeof this.pan === \"number\" && panInAllowedRange) this.#applyPTZ(\"pan\", this.pan);\n }\n if (name === \"tilt\" && oldValue !== newValue && \"tilt\" in this.#supportedConstraints) {\n const tiltInAllowedRange = \"tilt\" in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max : false;\n if (\"tilt\" in trackSettings && typeof this.tilt === \"number\" && tiltInAllowedRange) this.#applyPTZ(\"tilt\", this.tilt);\n }\n if (name === \"zoom\" && oldValue !== newValue && \"zoom\" in this.#supportedConstraints) {\n const zoomInAllowedRange = \"zoom\" in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max : false;\n if (\"zoom\" in trackSettings && typeof this.zoom === \"number\" && zoomInAllowedRange) this.#applyPTZ(\"zoom\", this.zoom);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"autpoPlay\");\n this.#upgradeProperty(\"noImage\");\n this.#upgradeProperty(\"facingMode\");\n this.#upgradeProperty(\"cameraResolution\");\n this.#upgradeProperty(\"pan\");\n this.#upgradeProperty(\"tilt\");\n this.#upgradeProperty(\"zoom\");\n this.#upgradeProperty(\"calculateFileSize\");\n this.#canvasElement = this.shadowRoot?.querySelector(\"canvas\") || null;\n this.#outputElement = this.shadowRoot?.getElementById(\"output\") || null;\n this.#videoElement = this.shadowRoot?.querySelector(\"video\") || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n this.#videoElement?.addEventListener(\"loadedmetadata\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n if (this.autoPlay) this.startVideoStream();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener(\"canplay\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n }\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */ get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(value) {\n this.toggleAttribute(\"auto-play\", !!value);\n }\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */ get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(value) {\n this.toggleAttribute(\"no-image\", !!value);\n }\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */ get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(value) {\n this.setAttribute(\"facing-mode\", value);\n }\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */ get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(value) {\n this.setAttribute(\"camera-resolution\", value);\n }\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */ get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(value) {\n this.setAttribute(\"pan\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */ get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(value) {\n this.setAttribute(\"tilt\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */ get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(value) {\n this.setAttribute(\"zoom\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */ get loading() {\n return this.hasAttribute(\"loading\");\n }\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */ get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(value) {\n this.toggleAttribute(\"calculate-file-size\", !!value);\n }\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */ #onFacingModeButtonClick = (evt)=>{\n evt.preventDefault();\n if (this.loading) return;\n this.facingMode = this.facingMode === \"user\" || !this.facingMode ? \"environment\" : \"user\";\n };\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */ #onCapturePhotoButtonClick = (evt)=>{\n evt.preventDefault();\n this.capture();\n };\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */ #onVideoLoadedMetaData = (evt)=>{\n const video = evt.target;\n video.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: {\n video: video\n }\n }));\n }).catch(/** @param {Error} error */ (error)=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n /**\n * Removes all child nodes from the output element.\n */ #emptyOutputElement() {\n if (!this.#outputElement) return;\n Array.from(this.#outputElement.childNodes).forEach((node)=>node.remove());\n }\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */ #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) return;\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (constraintName in trackSettings) track.applyConstraints({\n advanced: [\n {\n [constraintName]: (0, $02ad8beec419df62$export$7d15b64cf5a3a4c4)(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }\n ]\n });\n }\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onCaptureButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"capture-button\") {\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n if (this.#captureButton) {\n this.#captureButton.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n if (this.#captureButton.nodeName !== \"BUTTON\" && !this.#captureButton.hasAttribute(\"role\")) this.#captureButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onFacingModeButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"facing-mode-button\") {\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (this.#facingModeButton.nodeName !== \"BUTTON\" && !this.#facingModeButton.hasAttribute(\"role\")) this.#facingModeButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */ #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) return null;\n return this.#facingModeButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"facing-mode-button\";\n }) || null;\n }\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */ #getCaptureButton() {\n if (!this.#captureButtonSlot) return null;\n return this.#captureButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"capture-button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */ async startVideoStream() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported() || this.#stream) return;\n this.setAttribute(\"loading\", \"\");\n /** @type {ExtendedMediaTrackConstraints} */ const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n if (this.#videoElement) this.#videoElement.srcObject = this.#stream;\n this.#applyPTZ(\"pan\", this.pan);\n this.#applyPTZ(\"tilt\", this.tilt);\n this.#applyPTZ(\"zoom\", this.zoom);\n const trackSettings = this.getTrackSettings();\n if (\"facingMode\" in trackSettings && this.#facingModeButtonSlot) this.#facingModeButtonSlot.hidden = false;\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n /**\n * Stops the video stream.\n */ stopVideoStream() {\n if (!this.#videoElement || !this.#stream) return;\n const [track] = this.#stream.getVideoTracks();\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */ async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) return;\n try {\n const ctx = this.#canvasElement.getContext(\"2d\");\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL(\"image/png\");\n if (typeof dataURI === \"string\" && dataURI.includes(\"data:image\")) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute(\"part\", \"output-image\");\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */ const eventDetail = {\n dataURI: dataURI,\n width: width,\n height: height\n };\n if (this.calculateFileSize) try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n if (size) eventDetail.size = size;\n } catch (err) {\n // Fail silently...\n }\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */ getSupportedConstraints() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return {};\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */ getTrackCapabilities() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getCapabilities === \"function\") return track.getCapabilities() || {};\n return {};\n }\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */ getTrackSettings() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getSettings === \"function\") return track.getSettings() || {};\n return {};\n }\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */ static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */ static defineCustomElement(elementName = $c290816263f90981$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $c290816263f90981$export$cc30a98fe3890794);\n }\n}\n\n\n(0, $c290816263f90981$export$cc30a98fe3890794).defineCustomElement();\n\n\nexport {$c290816263f90981$export$cc30a98fe3890794 as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","import { CapturePhoto } from './capture-photo.js';\n\nCapturePhoto.defineCustomElement();\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */\n\nimport { clamp } from './utils/clamp.js';\n\nconst COMPONENT_NAME = 'capture-photo';\n\nconst styles = /* css */`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */\nclass CapturePhoto extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/\n #supportedConstraints = {};\n\n /** @type {Nullable} */\n #stream = null;\n\n /** @type {Nullable} */\n #canvasElement = null;\n\n /** @type {Nullable} */\n #outputElement = null;\n\n /** @type {Nullable} */\n #videoElement = null;\n\n /** @type {Nullable} */\n #captureButtonSlot = null;\n\n /** @type {Nullable} */\n #captureButton = null;\n\n /** @type {Nullable} */\n #facingModeButtonSlot = null;\n\n /** @type {Nullable} */\n #facingModeButton = null;\n\n constructor() {\n super();\n\n this.#supportedConstraints = this.getSupportedConstraints();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n\n static get observedAttributes() {\n return ['no-image', 'facing-mode', 'camera-resolution', 'pan', 'tilt', 'zoom'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) {\n return;\n }\n\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (name === 'no-image' && oldValue !== newValue) {\n this.#emptyOutputElement();\n }\n\n if (name === 'facing-mode' && oldValue !== newValue && 'facingMode' in this.#supportedConstraints) {\n const isValidFacingMode = ['user', 'environment'].includes(this.facingMode || '');\n\n if ('facingMode' in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n\n if (name === 'camera-resolution' && oldValue !== newValue) {\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0 && 'width' in trackCapabilities && 'height' in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max\n ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max\n : false;\n\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max\n ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max\n : false;\n\n if ('width' in trackSettings && 'height' in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n\n if (name === 'pan' && oldValue !== newValue && 'pan' in this.#supportedConstraints) {\n const panInAllowedRange = 'pan' in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max\n ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max\n : false;\n\n if ('pan' in trackSettings && typeof this.pan === 'number' && panInAllowedRange) {\n this.#applyPTZ('pan', this.pan);\n }\n }\n\n if (name === 'tilt' && oldValue !== newValue && 'tilt' in this.#supportedConstraints) {\n const tiltInAllowedRange = 'tilt' in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max\n ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max\n : false;\n\n if ('tilt' in trackSettings && typeof this.tilt === 'number' && tiltInAllowedRange) {\n this.#applyPTZ('tilt', this.tilt);\n }\n }\n\n if (name === 'zoom' && oldValue !== newValue && 'zoom' in this.#supportedConstraints) {\n const zoomInAllowedRange = 'zoom' in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max\n ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max\n : false;\n\n if ('zoom' in trackSettings && typeof this.zoom === 'number' && zoomInAllowedRange) {\n this.#applyPTZ('zoom', this.zoom);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('autpoPlay');\n this.#upgradeProperty('noImage');\n this.#upgradeProperty('facingMode');\n this.#upgradeProperty('cameraResolution');\n this.#upgradeProperty('pan');\n this.#upgradeProperty('tilt');\n this.#upgradeProperty('zoom');\n this.#upgradeProperty('calculateFileSize');\n\n this.#canvasElement = this.shadowRoot?.querySelector('canvas') || null;\n this.#outputElement = this.shadowRoot?.getElementById('output') || null;\n this.#videoElement = this.shadowRoot?.querySelector('video') || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n\n this.#videoElement?.addEventListener('loadedmetadata', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener('click', this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (!CapturePhoto.isSupported()) {\n return this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: 'NotSupportedError',\n message: 'Not supported'\n }\n }\n }));\n }\n\n if (this.autoPlay) {\n this.startVideoStream();\n }\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener('canplay', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n }\n\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */\n get autoPlay() {\n return this.hasAttribute('auto-play');\n }\n\n set autoPlay(value) {\n this.toggleAttribute('auto-play', !!value);\n }\n\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */\n get noImage() {\n return this.hasAttribute('no-image');\n }\n\n set noImage(value) {\n this.toggleAttribute('no-image', !!value);\n }\n\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */\n get facingMode() {\n return this.getAttribute('facing-mode') || 'user';\n }\n\n set facingMode(value) {\n this.setAttribute('facing-mode', value);\n }\n\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */\n get cameraResolution() {\n return this.getAttribute('camera-resolution') || '';\n }\n\n set cameraResolution(value) {\n this.setAttribute('camera-resolution', value);\n }\n\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */\n get pan() {\n return Number(this.getAttribute('pan')) || 0;\n }\n\n set pan(value) {\n this.setAttribute('pan', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */\n get tilt() {\n return Number(this.getAttribute('tilt')) || 0;\n }\n\n set tilt(value) {\n this.setAttribute('tilt', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */\n get zoom() {\n return Number(this.getAttribute('zoom')) || 1;\n }\n\n set zoom(value) {\n this.setAttribute('zoom', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */\n get loading() {\n return this.hasAttribute('loading');\n }\n\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */\n get calculateFileSize() {\n return this.hasAttribute('calculate-file-size');\n }\n\n set calculateFileSize(value) {\n this.toggleAttribute('calculate-file-size', !!value);\n }\n\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */\n #onFacingModeButtonClick = evt => {\n evt.preventDefault();\n\n if (this.loading) {\n return;\n }\n\n this.facingMode = this.facingMode === 'user' || !this.facingMode ? 'environment' : 'user';\n };\n\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */\n #onCapturePhotoButtonClick = evt => {\n evt.preventDefault();\n this.capture();\n };\n\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */\n #onVideoLoadedMetaData = evt => {\n const video = evt.target;\n\n video.play().then(() => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: { video }\n }));\n }).catch(/** @param {Error} error */error => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }).finally(() => {\n this.removeAttribute('loading');\n });\n };\n\n /**\n * Removes all child nodes from the output element.\n */\n #emptyOutputElement() {\n if (!this.#outputElement) {\n return;\n }\n\n Array.from(this.#outputElement.childNodes).forEach(node => node.remove());\n }\n\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */\n #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (constraintName in trackSettings) {\n track.applyConstraints({\n advanced: [{\n [constraintName]: clamp(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }]\n });\n }\n }\n\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onCaptureButtonSlotChange = evt => {\n if (evt.target?.name === 'capture-button') {\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n\n if (this.#captureButton) {\n this.#captureButton.addEventListener('click', this.#onCapturePhotoButtonClick);\n\n if (this.#captureButton.nodeName !== 'BUTTON' && !this.#captureButton.hasAttribute('role')) {\n this.#captureButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onFacingModeButtonSlotChange = evt => {\n if (evt.target?.name === 'facing-mode-button') {\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (this.#facingModeButton.nodeName !== 'BUTTON' && !this.#facingModeButton.hasAttribute('role')) {\n this.#facingModeButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */\n #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) {\n return null;\n }\n\n return this.#facingModeButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'facing-mode-button';\n }) || null;\n }\n\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */\n #getCaptureButton() {\n if (!this.#captureButtonSlot) {\n return null;\n }\n\n return this.#captureButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'capture-button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */\n async startVideoStream() {\n if (!CapturePhoto.isSupported() || this.#stream) {\n return;\n }\n\n this.setAttribute('loading', '');\n\n /** @type {ExtendedMediaTrackConstraints} */\n const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || 'user'\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n\n if (this.#videoElement) {\n this.#videoElement.srcObject = this.#stream;\n }\n\n this.#applyPTZ('pan', this.pan);\n this.#applyPTZ('tilt', this.tilt);\n this.#applyPTZ('zoom', this.zoom);\n\n const trackSettings = this.getTrackSettings();\n\n if ('facingMode' in trackSettings && this.#facingModeButtonSlot) {\n this.#facingModeButtonSlot.hidden = false;\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n } finally {\n this.removeAttribute('loading');\n }\n }\n\n /**\n * Stops the video stream.\n */\n stopVideoStream() {\n if (!this.#videoElement || !this.#stream) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */\n async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) {\n return;\n }\n\n try {\n const ctx = this.#canvasElement.getContext('2d');\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL('image/png');\n\n if (typeof dataURI === 'string' && dataURI.includes('data:image')) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute('part', 'output-image');\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */\n const eventDetail = { dataURI, width, height };\n\n if (this.calculateFileSize) {\n try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n\n if (size) {\n eventDetail.size = size;\n }\n } catch (err) {\n // Fail silently...\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */\n getSupportedConstraints() {\n if (!CapturePhoto.isSupported()) {\n return {};\n }\n\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */\n getTrackCapabilities() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getCapabilities === 'function') {\n return track.getCapabilities() || {};\n }\n\n return {};\n }\n\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */\n getTrackSettings() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getSettings === 'function') {\n return track.getSettings() || {};\n }\n\n return {};\n }\n\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */\n static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, CapturePhoto);\n }\n }\n}\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */\nexport const clamp = (value, lower, upper) => {\n if (Number.isNaN(lower)) {\n lower = 0;\n }\n\n if (Number.isNaN(upper)) {\n upper = 0;\n }\n\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n","Object.defineProperty({},\"ModalElement\",{get:function(){return t},set:void 0,enumerable:!0,configurable:!0});let e=document.createElement(\"template\");e.innerHTML=/* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */class t extends HTMLElement{/** @type {Nullable} */#e=null;/** @type {Nullable} */#t=null;/** @type {ReturnType | undefined} */#o=void 0;constructor(){if(super(),!this.shadowRoot){let t=this.attachShadow({mode:\"open\"});t.appendChild(e.content.cloneNode(!0))}this.shadowRoot&&(this.#e=this.shadowRoot.querySelector(\"dialog\"),this.#t=this.shadowRoot.querySelector('slot[name=\"footer\"]'))}static get observedAttributes(){return[\"open\",\"no-header\",\"no-animations\",\"no-close-button\"]}/**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */attributeChangedCallback(e,t,o){if(null!==this.#e){if(\"open\"===e&&t!==o&&(this.open?(this.#e.showModal(),document.body&&(document.body.style.overflowY=\"hidden\"),this.dispatchEvent(new CustomEvent(\"me-open\",{bubbles:!0,composed:!0,detail:{element:this}}))):this.#e.close()),\"no-header\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__header\");null!==e&&(e.hidden=this.noHeader)}if(\"no-animations\"===e&&t!==o&&this.#e.classList.toggle(\"dialog--no-animations\",this.noAnimations),\"no-close-button\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__close\");null!==e&&(e.hidden=this.noCloseButton)}}}/**\n * Lifecycle method that is called when the element is added to the DOM.\n */connectedCallback(){this.#i(\"open\"),this.#i(\"staticBackdrop\"),this.#i(\"noHeader\"),this.#i(\"noAnimations\"),this.#i(\"noCloseButton\"),this.#i(\"fullscreen\"),this.#e?.addEventListener(\"click\",this.#a),this.#e?.addEventListener(\"close\",this.#l),this.#e?.addEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\",this.#n),this.#t?.addEventListener(\"slotchange\",this.#r)}/**\n * Lifecycle method that is called when the element is removed from the DOM.\n */disconnectedCallback(){this.#o&&clearTimeout(this.#o),this.#e?.addEventListener(\"click\",this.#a),this.#e?.removeEventListener(\"close\",this.#l),this.#e?.removeEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\",this.#n),this.#t?.removeEventListener(\"slotchange\",this.#r)}/**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */get open(){return this.hasAttribute(\"open\")}set open(e){e?this.setAttribute(\"open\",\"\"):this.removeAttribute(\"open\")}/**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */get staticBackdrop(){return this.hasAttribute(\"static-backdrop\")}set staticBackdrop(e){e?this.setAttribute(\"static-backdrop\",\"\"):this.removeAttribute(\"static-backdrop\")}/**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */get noHeader(){return this.hasAttribute(\"no-header\")}set noHeader(e){e?this.setAttribute(\"no-header\",\"\"):this.removeAttribute(\"no-header\")}/**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */get noAnimations(){return this.hasAttribute(\"no-animations\")}set noAnimations(e){e?this.setAttribute(\"no-animations\",\"\"):this.removeAttribute(\"no-animations\")}/**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */get noCloseButton(){return this.hasAttribute(\"no-close-button\")}set noCloseButton(e){e?this.setAttribute(\"no-close-button\",\"\"):this.removeAttribute(\"no-close-button\")}/**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */get fullscreen(){return this.hasAttribute(\"fullscreen\")}set fullscreen(e){e?this.setAttribute(\"fullscreen\",\"\"):this.removeAttribute(\"fullscreen\")}/**\n * Applies a pulse effect on the dialog.\n */#d(){this.#o||(this.#e?.classList.add(\"dialog--pulse\"),this.#o=setTimeout(()=>{this.#e?.classList.remove(\"dialog--pulse\"),clearTimeout(this.#o),this.#o=void 0},300))}/**\n * Handles the close event of the dialog.\n */#l=()=>{// This is needed because the dialog element does not reset\n// the open property when the dialog is closed by the user.\nthis.open=!1,document.body&&(document.body.style.overflowY=\"\"),this.dispatchEvent(new CustomEvent(\"me-close\",{bubbles:!0,composed:!0,detail:{element:this}}))};/**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */#s=e=>{let t=this.#c(\"escape-key\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */#n=e=>{let t=this.#c(\"close-button\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */#a=e=>{if(e.target!==e.currentTarget)return;let t=this.#c(\"backdrop-click\");if(this.dispatchEvent(t),t.defaultPrevented||this.staticBackdrop){this.noAnimations||this.#d();return}this.#e?.close()};/**\n * Handles the slotchange event of the footer slot.\n */#r=()=>{if(null===this.#e)return;/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__footer\");if(null===e)return;let t=this.#t?.assignedNodes(),o=!!t&&t.length>0;e.hidden=!o};/**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */#c(e){return new CustomEvent(\"me-request-close\",{bubbles:!0,composed:!0,cancelable:!0,detail:{reason:e,element:this}})}/**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */#i(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}/**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */show(){this.open||(this.open=!0)}/**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */hide(){this.open&&(this.open=!1)}/**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */static defineCustomElement(e=\"modal-element\"){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,t)}}t.defineCustomElement();export{t as ModalElement};//# sourceMappingURL=modal-element-defined.js.map\n\n//# sourceMappingURL=modal-element-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $180b6dcf923bafc7$exports = {};\n\n$parcel$export($180b6dcf923bafc7$exports, \"ModalElement\", function () { return $180b6dcf923bafc7$export$32589115725b904b; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ const $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION = 300;\nconst $180b6dcf923bafc7$var$template = document.createElement(\"template\");\n$180b6dcf923bafc7$var$template.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ class $180b6dcf923bafc7$export$32589115725b904b extends HTMLElement {\n /** @type {Nullable} */ #dialogEl = null;\n /** @type {Nullable} */ #footerSlotEl = null;\n /** @type {ReturnType | undefined} */ #pulseAnimationTimeout = void 0;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($180b6dcf923bafc7$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector(\"dialog\");\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) return;\n if (name === \"open\" && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n if (document.body) document.body.style.overflowY = \"hidden\";\n this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n } else this.#dialogEl.close();\n }\n if (name === \"no-header\" && oldValue !== newValue) {\n /** @type {Nullable} */ const headerEl = this.#dialogEl.querySelector(\".dialog__header\");\n if (headerEl !== null) headerEl.hidden = this.noHeader;\n }\n if (name === \"no-animations\" && oldValue !== newValue) this.#dialogEl.classList.toggle(\"dialog--no-animations\", this.noAnimations);\n if (name === \"no-close-button\" && oldValue !== newValue) {\n /** @type {Nullable} */ const closeBtnEl = this.#dialogEl.querySelector(\".dialog__close\");\n if (closeBtnEl !== null) closeBtnEl.hidden = this.noCloseButton;\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"open\");\n this.#upgradeProperty(\"staticBackdrop\");\n this.#upgradeProperty(\"noHeader\");\n this.#upgradeProperty(\"noAnimations\");\n this.#upgradeProperty(\"noCloseButton\");\n this.#upgradeProperty(\"fullscreen\");\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.addEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.addEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.removeEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.removeEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */ get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n if (value) this.setAttribute(\"open\", \"\");\n else this.removeAttribute(\"open\");\n }\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */ get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(value) {\n if (value) this.setAttribute(\"static-backdrop\", \"\");\n else this.removeAttribute(\"static-backdrop\");\n }\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */ get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(value) {\n if (value) this.setAttribute(\"no-header\", \"\");\n else this.removeAttribute(\"no-header\");\n }\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */ get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(value) {\n if (value) this.setAttribute(\"no-animations\", \"\");\n else this.removeAttribute(\"no-animations\");\n }\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */ get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(value) {\n if (value) this.setAttribute(\"no-close-button\", \"\");\n else this.removeAttribute(\"no-close-button\");\n }\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */ get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(value) {\n if (value) this.setAttribute(\"fullscreen\", \"\");\n else this.removeAttribute(\"fullscreen\");\n }\n /**\n * Applies a pulse effect on the dialog.\n */ #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) return;\n this.#dialogEl?.classList.add(\"dialog--pulse\");\n this.#pulseAnimationTimeout = setTimeout(()=>{\n this.#dialogEl?.classList.remove(\"dialog--pulse\");\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION);\n }\n /**\n * Handles the close event of the dialog.\n */ #handleDialogClose = ()=>{\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n if (document.body) document.body.style.overflowY = \"\";\n this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n };\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */ #handleDialogCancel = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"escape-key\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */ #handleCloseButtonClick = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"close-button\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */ #handleDialogClick = (evt)=>{\n if (evt.target !== evt.currentTarget) return;\n const requestCloseEvent = this.#createRequestCloseEvent(\"backdrop-click\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n this.#dialogEl?.close();\n };\n /**\n * Handles the slotchange event of the footer slot.\n */ #handleFooterSlotChange = ()=>{\n if (this.#dialogEl === null) return;\n /** @type {Nullable} */ const footerEl = this.#dialogEl.querySelector(\".dialog__footer\");\n if (footerEl === null) return;\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n footerEl.hidden = !hasFooterSlotNodes;\n };\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */ #createRequestCloseEvent(reason) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason: reason,\n element: this\n }\n });\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */ show() {\n if (this.open) return;\n this.open = true;\n }\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */ hide() {\n if (!this.open) return;\n this.open = false;\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */ static defineCustomElement(elementName = \"modal-element\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $180b6dcf923bafc7$export$32589115725b904b);\n }\n}\n\n\n(0, $180b6dcf923bafc7$export$32589115725b904b).defineCustomElement();\n\n\nexport {$180b6dcf923bafc7$export$32589115725b904b as ModalElement};\n//# sourceMappingURL=modal-element-defined.js.map\n","import { ModalElement } from './modal-element.js';\n\nModalElement.defineCustomElement();\n\nexport { ModalElement };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nconst PULSE_ANIMATION_DURATION = 300;\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */\nclass ModalElement extends HTMLElement {\n /** @type {Nullable} */\n #dialogEl = null;\n\n /** @type {Nullable} */\n #footerSlotEl = null;\n\n /** @type {ReturnType | undefined} */\n #pulseAnimationTimeout = void 0;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector('dialog');\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n\n static get observedAttributes() {\n return ['open', 'no-header', 'no-animations', 'no-close-button'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) {\n return;\n }\n\n if (name === 'open' && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n\n if (document.body) {\n document.body.style.overflowY = 'hidden';\n }\n\n this.dispatchEvent(new CustomEvent('me-open', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n } else {\n this.#dialogEl.close();\n }\n }\n\n if (name === 'no-header' && oldValue !== newValue) {\n /** @type {Nullable} */\n const headerEl = this.#dialogEl.querySelector('.dialog__header');\n\n if (headerEl !== null) {\n headerEl.hidden = this.noHeader;\n }\n }\n\n if (name === 'no-animations' && oldValue !== newValue) {\n this.#dialogEl.classList.toggle('dialog--no-animations', this.noAnimations);\n }\n\n if (name === 'no-close-button' && oldValue !== newValue) {\n /** @type {Nullable} */\n const closeBtnEl = this.#dialogEl.querySelector('.dialog__close');\n\n if (closeBtnEl !== null) {\n closeBtnEl.hidden = this.noCloseButton;\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('open');\n this.#upgradeProperty('staticBackdrop');\n this.#upgradeProperty('noHeader');\n this.#upgradeProperty('noAnimations');\n this.#upgradeProperty('noCloseButton');\n this.#upgradeProperty('fullscreen');\n\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.addEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.addEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.removeEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.removeEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */\n get open() {\n return this.hasAttribute('open');\n }\n\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n } else {\n this.removeAttribute('open');\n }\n }\n\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */\n get staticBackdrop() {\n return this.hasAttribute('static-backdrop');\n }\n\n set staticBackdrop(value) {\n if (value) {\n this.setAttribute('static-backdrop', '');\n } else {\n this.removeAttribute('static-backdrop');\n }\n }\n\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */\n get noHeader() {\n return this.hasAttribute('no-header');\n }\n\n set noHeader(value) {\n if (value) {\n this.setAttribute('no-header', '');\n } else {\n this.removeAttribute('no-header');\n }\n }\n\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */\n get noAnimations() {\n return this.hasAttribute('no-animations');\n }\n\n set noAnimations(value) {\n if (value) {\n this.setAttribute('no-animations', '');\n } else {\n this.removeAttribute('no-animations');\n }\n }\n\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */\n get noCloseButton() {\n return this.hasAttribute('no-close-button');\n }\n\n set noCloseButton(value) {\n if (value) {\n this.setAttribute('no-close-button', '');\n } else {\n this.removeAttribute('no-close-button');\n }\n }\n\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */\n get fullscreen() {\n return this.hasAttribute('fullscreen');\n }\n\n set fullscreen(value) {\n if (value) {\n this.setAttribute('fullscreen', '');\n } else {\n this.removeAttribute('fullscreen');\n }\n }\n\n /**\n * Applies a pulse effect on the dialog.\n */\n #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) {\n return;\n }\n\n this.#dialogEl?.classList.add('dialog--pulse');\n\n this.#pulseAnimationTimeout = setTimeout(() => {\n this.#dialogEl?.classList.remove('dialog--pulse');\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, PULSE_ANIMATION_DURATION);\n }\n\n /**\n * Handles the close event of the dialog.\n */\n #handleDialogClose = () => {\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n\n if (document.body) {\n document.body.style.overflowY = '';\n }\n\n this.dispatchEvent(new CustomEvent('me-close', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n };\n\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */\n #handleDialogCancel = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('escape-key');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */\n #handleCloseButtonClick = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('close-button');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */\n #handleDialogClick = evt => {\n if (evt.target !== evt.currentTarget) {\n return;\n }\n\n const requestCloseEvent = this.#createRequestCloseEvent('backdrop-click');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n\n this.#dialogEl?.close();\n };\n\n /**\n * Handles the slotchange event of the footer slot.\n */\n #handleFooterSlotChange = () => {\n if (this.#dialogEl === null) {\n return;\n }\n\n /** @type {Nullable} */\n const footerEl = this.#dialogEl.querySelector('.dialog__footer');\n\n if (footerEl === null) {\n return;\n }\n\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n\n footerEl.hidden = !hasFooterSlotNodes;\n };\n\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */\n #createRequestCloseEvent(reason) {\n return new CustomEvent('me-request-close', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason,\n element: this\n }\n });\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */\n show() {\n if (this.open) {\n return;\n }\n\n this.open = true;\n }\n\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */\n hide() {\n if (!this.open) {\n return;\n }\n\n this.open = false;\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */\n static defineCustomElement(elementName = 'modal-element') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, ModalElement);\n }\n }\n}\n\nexport { ModalElement };\n","Object.defineProperty({},\"FilesDropzone\",{get:function(){return m},set:void 0,enumerable:!0,configurable:!0});let e=new Map([[\"aac\",\"audio/aac\"],[\"abw\",\"application/x-abiword\"],[\"arc\",\"application/x-freearc\"],[\"avif\",\"image/avif\"],[\"avi\",\"video/x-msvideo\"],[\"azw\",\"application/vnd.amazon.ebook\"],[\"bin\",\"application/octet-stream\"],[\"bmp\",\"image/bmp\"],[\"bz\",\"application/x-bzip\"],[\"bz2\",\"application/x-bzip2\"],[\"cda\",\"application/x-cdf\"],[\"csh\",\"application/x-csh\"],[\"css\",\"text/css\"],[\"csv\",\"text/csv\"],[\"doc\",\"application/msword\"],[\"docx\",\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"],[\"eot\",\"application/vnd.ms-fontobject\"],[\"epub\",\"application/epub+zip\"],[\"gz\",\"application/gzip\"],[\"gif\",\"image/gif\"],[\"heic\",\"image/heic\"],[\"heif\",\"image/heif\"],[\"htm\",\"text/html\"],[\"html\",\"text/html\"],[\"ico\",\"image/vnd.microsoft.icon\"],[\"ics\",\"text/calendar\"],[\"jar\",\"application/java-archive\"],[\"jpeg\",\"image/jpeg\"],[\"jpg\",\"image/jpeg\"],[\"jxl\",\"image/jxl\"],[\"js\",\"text/javascript\"],[\"json\",\"application/json\"],[\"jsonld\",\"application/ld+json\"],[\"markdown\",\"text/markdown\"],[\"md\",\"text/markdown\"],[\"mid\",\"audio/midi\"],[\"midi\",\"audio/midi\"],[\"mjs\",\"text/javascript\"],[\"mp3\",\"audio/mpeg\"],[\"mp4\",\"video/mp4\"],[\"mpeg\",\"video/mpeg\"],[\"mpkg\",\"application/vnd.apple.installer+xml\"],[\"odp\",\"application/vnd.oasis.opendocument.presentation\"],[\"ods\",\"application/vnd.oasis.opendocument.spreadsheet\"],[\"odt\",\"application/vnd.oasis.opendocument.text\"],[\"oga\",\"audio/ogg\"],[\"ogv\",\"video/ogg\"],[\"ogx\",\"application/ogg\"],[\"opus\",\"audio/opus\"],[\"otf\",\"font/otf\"],[\"png\",\"image/png\"],[\"pdf\",\"application/pdf\"],[\"php\",\"application/x-httpd-php\"],[\"ppt\",\"application/vnd.ms-powerpoint\"],[\"pptx\",\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"],[\"rar\",\"application/vnd.rar\"],[\"rtf\",\"application/rtf\"],[\"sh\",\"application/x-sh\"],[\"svg\",\"image/svg+xml\"],[\"swf\",\"application/x-shockwave-flash\"],[\"tar\",\"application/x-tar\"],[\"tif\",\"image/tiff\"],[\"tiff\",\"image/tiff\"],[\"ts\",\"video/mp2t\"],[\"ttf\",\"font/ttf\"],[\"txt\",\"text/plain\"],[\"vsd\",\"application/vnd.visio\"],[\"wav\",\"audio/wav\"],[\"weba\",\"audio/webm\"],[\"webm\",\"video/webm\"],[\"webp\",\"image/webp\"],[\"woff\",\"font/woff\"],[\"woff2\",\"font/woff2\"],[\"xhtml\",\"application/xhtml+xml\"],[\"xls\",\"application/vnd.ms-excel\"],[\"xlsx\",\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],[\"xml\",\"application/xml\"],[\"xul\",\"application/vnd.mozilla.xul+xml\"],[\"zip\",\"application/zip\"],[\"7z\",\"application/x-7z-compressed\"],[\"mkv\",\"video/x-matroska\"],[\"mov\",\"video/quicktime\"],[\"msg\",\"application/vnd.ms-outlook\"]]),t=[\".DS_Store\",\"Thumbs.db\"],o=t=>{let{name:o}=t;if(o&&-1!==o.lastIndexOf(\".\")&&!t.type){let i=(o.split(\".\").pop()||\"\").toLowerCase(),r=e.get(i);r&&Object.defineProperty(t,\"type\",{value:r,writable:!1,configurable:!1,enumerable:!0})}return t},i=(e,t)=>{let i=o(e);if(\"string\"!=typeof i.path){let{webkitRelativePath:o}=e;Object.defineProperty(i,\"path\",{value:\"string\"==typeof t?t:o||e.name,writable:!1,configurable:!1,enumerable:!0})}return i},r=async e=>await new Promise((t,o)=>{e.readEntries(t,o)}),a=async e=>{let t=[],o=await r(e);for(;o.length>0;)t.push(...o),o=await r(e);return t},n=e=>new Promise((t,o)=>{e.file(o=>t(i(o,e.fullPath)),o)}),s=async e=>{let o=[],i=[];for(let t of e){if(\"file\"!==t.kind)continue;let e=t.getAsEntry?t.getAsEntry():t.webkitGetAsEntry();i.push(e)}for(;i.length>0;){let e=i.shift();if(e){if(e.isFile){let i=await n(e);-1===t.indexOf(i.name)&&o.push(i)}else e.isDirectory&&i.push(...await a(e.createReader()))}}return o},d=async e=>{let o=[];for(let r of e)-1===t.indexOf(r.name)&&o.push(i(r));return o},l=async e=>e.dataTransfer?e.dataTransfer.items?await s(e.dataTransfer.items):await d(e.dataTransfer.files):await d(e.target.files),p=\"files-dropzone\",c=\"TOO_MANY_FILES\",h=document.createElement(\"template\"),u=`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;h.innerHTML=`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;class m extends HTMLElement{#e=null;#t=null;constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(h.content.cloneNode(!0)),this.shadowRoot&&(this.#e=this.shadowRoot.getElementById(\"fileInput\"),this.#t=this.shadowRoot.getElementById(\"dropzoneEl\"))}static get observedAttributes(){return[\"accept\",\"disabled\",\"multiple\",\"no-keyboard\"]}attributeChangedCallback(e,t,o){\"accept\"===e&&t!==o&&this.#e&&(this.#e.accept=this.accept),\"disabled\"===e&&t!==o&&this.#e&&(this.#e.disabled=this.disabled,this.disabled?this.#t?.removeAttribute(\"tabindex\"):this.#t?.setAttribute(\"tabindex\",\"0\")),\"multiple\"===e&&t!==o&&this.#e&&(this.#e.multiple=this.multiple),\"no-keyboard\"===e&&t!==o&&this.#t&&(this.noKeyboard?this.#t.removeAttribute(\"tabindex\"):this.#t.setAttribute(\"tabindex\",\"0\"))}connectedCallback(){this.#o(\"accept\"),this.#o(\"disabled\"),this.#o(\"maxFiles\"),this.#o(\"maxSize\"),this.#o(\"minSize\"),this.#o(\"multiple\"),this.#o(\"noClick\"),this.#o(\"noDrag\"),this.#o(\"noKeyboard\"),this.#o(\"autoFocus\"),this.#o(\"noStyle\"),this.#e?.addEventListener(\"change\",this.#i),this.#t?.addEventListener(\"dragenter\",this.#r),this.#t?.addEventListener(\"dragover\",this.#a),this.#t?.addEventListener(\"dragleave\",this.#n),this.#t?.addEventListener(\"drop\",this.#s),this.#t?.addEventListener(\"click\",this.#d),this.#t?.addEventListener(\"keyup\",this.#l),this.autoFocus&&this.#t?.focus()}disconnectedCallback(){this.#e?.removeEventListener(\"change\",this.#i),this.#t?.removeEventListener(\"dragenter\",this.#r),this.#t?.removeEventListener(\"dragover\",this.#a),this.#t?.removeEventListener(\"dragleave\",this.#n),this.#t?.removeEventListener(\"drop\",this.#s),this.#t?.removeEventListener(\"click\",this.#d),this.#t?.removeEventListener(\"keyup\",this.#l)}get accept(){return this.getAttribute(\"accept\")||\"\"}set accept(e){this.setAttribute(\"accept\",null!=e?e.toString():e)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(e){this.toggleAttribute(\"disabled\",!!e)}get maxFiles(){let e=Number(this.getAttribute(\"max-files\"))||0;return e<=0?1/0:Math.floor(Math.abs(e))}set maxFiles(e){this.setAttribute(\"max-files\",null!=e?e.toString():e)}get maxSize(){let e=this.getAttribute(\"max-size\");if(null===e)return 1/0;let t=Number(e);return Number.isNaN(t)?1/0:t}set maxSize(e){this.setAttribute(\"max-size\",null!=e?e.toString():e)}get minSize(){let e=this.getAttribute(\"min-size\");if(null===e)return 0;let t=Number(e);return Number.isNaN(t)?0:t}set minSize(e){this.setAttribute(\"min-size\",null!=e?e.toString():e)}get multiple(){return this.hasAttribute(\"multiple\")}set multiple(e){this.toggleAttribute(\"multiple\",!!e)}get noClick(){return this.hasAttribute(\"no-click\")}set noClick(e){this.toggleAttribute(\"no-click\",!!e)}get noDrag(){return this.hasAttribute(\"no-drag\")}set noDrag(e){this.toggleAttribute(\"no-drag\",!!e)}get noKeyboard(){return this.hasAttribute(\"no-keyboard\")}set noKeyboard(e){this.toggleAttribute(\"no-keyboard\",!!e)}get autoFocus(){return this.hasAttribute(\"auto-focus\")}set autoFocus(e){this.toggleAttribute(\"auto-focus\",!!e)}get noStyle(){return this.hasAttribute(\"no-style\")}set noStyle(e){this.toggleAttribute(\"no-style\",!!e)}#i=async e=>{try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}};#r=()=>{this.disabled||this.noDrag||this.dispatchEvent(new Event(`${p}-dragenter`,{bubbles:!0,composed:!0}))};#a=e=>{if(e.preventDefault(),this.disabled||this.noDrag){e.dataTransfer.dropEffect=\"none\";return}e.dataTransfer.dropEffect=\"copy\",this.#t&&(this.#t.classList.add(\"dropzone--dragover\"),this.#t.part.add(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragover`,{bubbles:!0,composed:!0}))};#n=()=>{this.disabled||this.noDrag||(this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragleave`,{bubbles:!0,composed:!0})))};#s=async e=>{if(!this.disabled&&!this.noDrag){e.preventDefault(),this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\"));try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}}};#d=()=>{this.disabled||this.noClick||this.#e?.click()};#l=e=>{this.disabled||this.noKeyboard||\" \"!==e.key&&\"Enter\"!==e.key||this.#e?.click()};#p(e){if(!Array.isArray(e)||!e.length)return;let t=[],o=[],i=e.length;if(!this.multiple&&i>1)for(let t of e)o.push({file:t,errors:[{code:c,message:\"Too many files selected. Only 1 file is allowed.\"}]});else if(this.multiple&&i>this.maxFiles)for(let t of e)o.push({file:t,errors:[{code:c,message:`Too many files selected. Only ${this.maxFiles} ${this.maxFiles>1?\"files are\":\"file is\"} allowed.`}]});else for(let i of e){let e=function(e,t=\"\"){if(!t)return!0;let o=[...new Set(t.split(\",\").map(e=>e.trim()).filter(Boolean))],i=e.type,r=i.replace(/\\/.*$/,\"\");for(let t of o)if(\".\"===t.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(t.toLowerCase(),e.name.length-t.length))return!0}else if(/\\/\\*$/.test(t)){if(r===t.replace(/\\/.*$/,\"\"))return!0}else if(i===t)return!0;return!1}(i,this.accept),r=i.size>this.maxSize,a=i.size0&&this.dispatchEvent(new CustomEvent(`${p}-drop-accepted`,{bubbles:!0,composed:!0,detail:{acceptedFiles:t}})),o.length>0&&this.dispatchEvent(new CustomEvent(`${p}-drop-rejected`,{bubbles:!0,composed:!0,detail:{rejectedFiles:o}})),this.#e&&(this.#e.value=this.#e.defaultValue)}openFileDialog(){this.disabled||this.#e?.click()}#o(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}static defineCustomElement(e=p){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,m)}}m.defineCustomElement();export{m as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $862aa3736b0514bc$exports = {};\n\n$parcel$export($862aa3736b0514bc$exports, \"FilesDropzone\", function () { return $862aa3736b0514bc$export$6ccd1735166caad9; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ // @ts-check\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */ function $38f222170fd4d21a$export$7c47054fed488f80(file, acceptedTypeSpecifiers = \"\") {\n if (!acceptedTypeSpecifiers) return true;\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(\",\").map((v)=>v.trim()).filter(Boolean))\n ];\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, \"\");\n for (const validType of acceptedMimeTypesList){\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (fileMimeType === validType) return true;\n }\n }\n return false;\n}\n\n\n// @ts-check\n/**\n * A map of common file extensions and their associated MIME types.\n */ const $f31161edf38949e9$var$COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n // Others\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]);\nconst $f31161edf38949e9$var$FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n \".DS_Store\",\n \"Thumbs.db\" // Windows\n];\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */ const $f31161edf38949e9$var$toFileWithMimeType = (file)=>{\n const { name: name } = file;\n const hasExtension = name && name.lastIndexOf(\".\") !== -1;\n if (hasExtension && !file.type) {\n const extension = (name.split(\".\").pop() || \"\").toLowerCase();\n const type = $f31161edf38949e9$var$COMMON_MIME_TYPES.get(extension);\n if (type) Object.defineProperty(file, \"type\", {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return file;\n};\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */ const $f31161edf38949e9$var$toFileWithPath = (file, path)=>{\n const fileWithMimeType = $f31161edf38949e9$var$toFileWithMimeType(file);\n // @ts-ignore\n if (typeof fileWithMimeType.path !== \"string\") {\n const { webkitRelativePath: webkitRelativePath } = file;\n Object.defineProperty(fileWithMimeType, \"path\", {\n value: typeof path === \"string\" ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return fileWithMimeType;\n};\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readEntriesPromise = async (directoryReader)=>{\n return await new Promise((resolve, reject)=>{\n directoryReader.readEntries(resolve, reject);\n });\n};\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readAllDirectoryEntries = async (directoryReader)=>{\n const entries = [];\n let readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n while(readEntries.length > 0){\n entries.push(...readEntries);\n readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n }\n return entries;\n};\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */ const $f31161edf38949e9$var$getFileFromFileEntry = (fileEntry)=>{\n return new Promise((resolve, reject)=>{\n fileEntry.file((file)=>resolve($f31161edf38949e9$var$toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromDataTransferItemList = async (dataTransferItemList)=>{\n const files = [];\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n for (const item of dataTransferItemList){\n if (item.kind !== \"file\") continue;\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n queue.push(entry);\n }\n while(queue.length > 0){\n const entry = queue.shift();\n if (!entry) continue;\n else if (entry.isFile) {\n const file = await $f31161edf38949e9$var$getFileFromFileEntry(entry);\n if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push(file);\n } else if (entry.isDirectory) queue.push(...await $f31161edf38949e9$var$readAllDirectoryEntries(entry.createReader()));\n }\n return files;\n};\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromFileList = async (fileList)=>{\n const files = [];\n for (const file of fileList)if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push($f31161edf38949e9$var$toFileWithPath(file));\n return files;\n};\nconst $f31161edf38949e9$export$6d52664cd15c442 = async (evt)=>{\n if (evt.dataTransfer) return evt.dataTransfer.items ? await $f31161edf38949e9$var$getFilesFromDataTransferItemList(evt.dataTransfer.items) : await $f31161edf38949e9$var$getFilesFromFileList(evt.dataTransfer.files);\n return await $f31161edf38949e9$var$getFilesFromFileList(evt.target.files);\n};\n\n\nconst $862aa3736b0514bc$var$COMPONENT_NAME = \"files-dropzone\";\nconst $862aa3736b0514bc$var$TOO_MANY_FILES = \"TOO_MANY_FILES\";\nconst $862aa3736b0514bc$var$FILE_TOO_LARGE = \"FILE_TOO_LARGE\";\nconst $862aa3736b0514bc$var$FILE_TOO_SMALL = \"FILE_TOO_SMALL\";\nconst $862aa3736b0514bc$var$INVALID_MIME_TYPE = \"INVALID_MIME_TYPE\";\nconst $862aa3736b0514bc$var$template = document.createElement(\"template\");\nconst $862aa3736b0514bc$var$styles = /* css */ `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$862aa3736b0514bc$var$template.innerHTML = /* html */ `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */ class $862aa3736b0514bc$export$6ccd1735166caad9 extends HTMLElement {\n /** @type {Nullable} */ #fileInput = null;\n /** @type {Nullable} */ #dropzoneEl = null;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($862aa3736b0514bc$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */ this.shadowRoot.getElementById(\"fileInput\");\n this.#dropzoneEl = this.shadowRoot.getElementById(\"dropzoneEl\");\n }\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"accept\" && oldValue !== newValue && this.#fileInput) this.#fileInput.accept = this.accept;\n if (name === \"disabled\" && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n if (this.disabled) this.#dropzoneEl?.removeAttribute(\"tabindex\");\n else this.#dropzoneEl?.setAttribute(\"tabindex\", \"0\");\n }\n if (name === \"multiple\" && oldValue !== newValue && this.#fileInput) this.#fileInput.multiple = this.multiple;\n if (name === \"no-keyboard\" && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) this.#dropzoneEl.removeAttribute(\"tabindex\");\n else this.#dropzoneEl.setAttribute(\"tabindex\", \"0\");\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"accept\");\n this.#upgradeProperty(\"disabled\");\n this.#upgradeProperty(\"maxFiles\");\n this.#upgradeProperty(\"maxSize\");\n this.#upgradeProperty(\"minSize\");\n this.#upgradeProperty(\"multiple\");\n this.#upgradeProperty(\"noClick\");\n this.#upgradeProperty(\"noDrag\");\n this.#upgradeProperty(\"noKeyboard\");\n this.#upgradeProperty(\"autoFocus\");\n this.#upgradeProperty(\"noStyle\");\n this.#fileInput?.addEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.addEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.addEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.addEventListener(\"keyup\", this.#handleKeyUp);\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#fileInput?.removeEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.removeEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.removeEventListener(\"keyup\", this.#handleKeyUp);\n }\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */ get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(value) {\n this.setAttribute(\"accept\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */ get maxFiles() {\n const num = Number(this.getAttribute(\"max-files\")) || 0;\n if (num <= 0) return Infinity;\n return Math.floor(Math.abs(num));\n }\n set maxFiles(value) {\n this.setAttribute(\"max-files\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */ get maxSize() {\n const value = this.getAttribute(\"max-size\");\n if (value === null) return Infinity;\n const num = Number(value);\n return Number.isNaN(num) ? Infinity : num;\n }\n set maxSize(value) {\n this.setAttribute(\"max-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */ get minSize() {\n const value = this.getAttribute(\"min-size\");\n if (value === null) return 0;\n const num = Number(value);\n return Number.isNaN(num) ? 0 : num;\n }\n set minSize(value) {\n this.setAttribute(\"min-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */ get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(value) {\n this.toggleAttribute(\"multiple\", !!value);\n }\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */ get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(value) {\n this.toggleAttribute(\"no-click\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */ get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(value) {\n this.toggleAttribute(\"no-drag\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */ get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(value) {\n this.toggleAttribute(\"no-keyboard\", !!value);\n }\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */ get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(value) {\n this.toggleAttribute(\"auto-focus\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */ get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(value) {\n this.toggleAttribute(\"no-style\", !!value);\n }\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */ #handleFileInputChange = async (evt)=>{\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the dragenter event of the dropzone.\n */ #handleDragEnter = ()=>{\n if (this.disabled || this.noDrag) return;\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDragOver = (evt)=>{\n evt.preventDefault();\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = \"none\";\n return;\n }\n evt.dataTransfer.dropEffect = \"copy\";\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add(\"dropzone--dragover\");\n this.#dropzoneEl.part.add(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragleave event of the dropzone.\n */ #handleDragLeave = ()=>{\n if (this.disabled || this.noDrag) return;\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDrop = async (evt)=>{\n if (this.disabled || this.noDrag) return;\n evt.preventDefault();\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the click event of the dropzone.\n */ #handleClick = ()=>{\n if (this.disabled || this.noClick) return;\n this.#fileInput?.click();\n };\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleKeyUp = (evt)=>{\n if (this.disabled || this.noKeyboard) return;\n if (evt.key === \" \" || evt.key === \"Enter\") this.#fileInput?.click();\n };\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */ #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) return;\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }\n ]\n });\n else if (this.multiple && filesLength > this.maxFiles) // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files){\n const fileHasValidType = (0, $38f222170fd4d21a$export$7c47054fed488f80)(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) acceptedFiles.push(file);\n else {\n const errors = [];\n if (!fileHasValidType) errors.push({\n code: $862aa3736b0514bc$var$INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n if (fileExceedsMaxSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n if (fileIsSmallerThanMinSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n rejectedFiles.push({\n file: file,\n errors: errors\n });\n }\n }\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles,\n rejectedFiles: rejectedFiles\n }\n }));\n if (acceptedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles\n }\n }));\n if (rejectedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles: rejectedFiles\n }\n }));\n if (this.#fileInput) this.#fileInput.value = this.#fileInput.defaultValue;\n }\n /**\n * Opens the file dialog programmatically.\n */ openFileDialog() {\n if (this.disabled) return;\n this.#fileInput?.click();\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */ static defineCustomElement(elementName = $862aa3736b0514bc$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $862aa3736b0514bc$export$6ccd1735166caad9);\n }\n}\n\n\n(0, $862aa3736b0514bc$export$6ccd1735166caad9).defineCustomElement();\n\n\nexport {$862aa3736b0514bc$export$6ccd1735166caad9 as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","import { FilesDropzone } from './files-dropzone.js';\n\nFilesDropzone.defineCustomElement();\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nimport { isValidFile } from './utils/is-valid-file.js';\nimport { getFilesFromEvent } from './utils/files-selector.js';\n\nconst COMPONENT_NAME = 'files-dropzone';\nconst TOO_MANY_FILES = 'TOO_MANY_FILES';\nconst FILE_TOO_LARGE = 'FILE_TOO_LARGE';\nconst FILE_TOO_SMALL = 'FILE_TOO_SMALL';\nconst INVALID_MIME_TYPE = 'INVALID_MIME_TYPE';\nconst template = document.createElement('template');\n\nconst styles = /* css */`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */\nclass FilesDropzone extends HTMLElement {\n /** @type {Nullable} */\n #fileInput = null;\n\n /** @type {Nullable} */\n #dropzoneEl = null;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */(this.shadowRoot.getElementById('fileInput'));\n this.#dropzoneEl = this.shadowRoot.getElementById('dropzoneEl');\n }\n }\n\n static get observedAttributes() {\n return ['accept', 'disabled', 'multiple', 'no-keyboard'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'accept' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.accept = this.accept;\n }\n\n if (name === 'disabled' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n\n if (this.disabled) {\n this.#dropzoneEl?.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl?.setAttribute('tabindex', '0');\n }\n }\n\n if (name === 'multiple' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.multiple = this.multiple;\n }\n\n if (name === 'no-keyboard' && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) {\n this.#dropzoneEl.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('accept');\n this.#upgradeProperty('disabled');\n this.#upgradeProperty('maxFiles');\n this.#upgradeProperty('maxSize');\n this.#upgradeProperty('minSize');\n this.#upgradeProperty('multiple');\n this.#upgradeProperty('noClick');\n this.#upgradeProperty('noDrag');\n this.#upgradeProperty('noKeyboard');\n this.#upgradeProperty('autoFocus');\n this.#upgradeProperty('noStyle');\n\n this.#fileInput?.addEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.addEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.addEventListener('click', this.#handleClick);\n this.#dropzoneEl?.addEventListener('keyup', this.#handleKeyUp);\n\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#fileInput?.removeEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.removeEventListener('click', this.#handleClick);\n this.#dropzoneEl?.removeEventListener('keyup', this.#handleKeyUp);\n }\n\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */\n get accept() {\n return this.getAttribute('accept') || '';\n }\n\n set accept(value) {\n this.setAttribute('accept', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */\n get maxFiles() {\n const num = Number(this.getAttribute('max-files')) || 0;\n\n if (num <= 0) {\n return Infinity;\n }\n\n return Math.floor(Math.abs(num));\n }\n\n set maxFiles(value) {\n this.setAttribute('max-files', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */\n get maxSize() {\n const value = this.getAttribute('max-size');\n\n if (value === null) {\n return Infinity;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? Infinity : num;\n }\n\n set maxSize(value) {\n this.setAttribute('max-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */\n get minSize() {\n const value = this.getAttribute('min-size');\n\n if (value === null) {\n return 0;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? 0 : num;\n }\n\n set minSize(value) {\n this.setAttribute('min-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */\n get multiple() {\n return this.hasAttribute('multiple');\n }\n\n set multiple(value) {\n this.toggleAttribute('multiple', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */\n get noClick() {\n return this.hasAttribute('no-click');\n }\n\n set noClick(value) {\n this.toggleAttribute('no-click', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */\n get noDrag() {\n return this.hasAttribute('no-drag');\n }\n\n set noDrag(value) {\n this.toggleAttribute('no-drag', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */\n get noKeyboard() {\n return this.hasAttribute('no-keyboard');\n }\n\n set noKeyboard(value) {\n this.toggleAttribute('no-keyboard', !!value);\n }\n\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */\n get autoFocus() {\n return this.hasAttribute('auto-focus');\n }\n\n set autoFocus(value) {\n this.toggleAttribute('auto-focus', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */\n get noStyle() {\n return this.hasAttribute('no-style');\n }\n\n set noStyle(value) {\n this.toggleAttribute('no-style', !!value);\n }\n\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */\n #handleFileInputChange = async evt => {\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the dragenter event of the dropzone.\n */\n #handleDragEnter = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDragOver = evt => {\n evt.preventDefault();\n\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = 'none';\n return;\n }\n\n evt.dataTransfer.dropEffect = 'copy';\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add('dropzone--dragover');\n this.#dropzoneEl.part.add('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragleave event of the dropzone.\n */\n #handleDragLeave = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDrop = async evt => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n evt.preventDefault();\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the click event of the dropzone.\n */\n #handleClick = () => {\n if (this.disabled || this.noClick) {\n return;\n }\n\n this.#fileInput?.click();\n };\n\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleKeyUp = evt => {\n if (this.disabled || this.noKeyboard) {\n return;\n }\n\n if (evt.key === ' ' || evt.key === 'Enter') {\n this.#fileInput?.click();\n }\n };\n\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */\n #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) {\n return;\n }\n\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) {\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }]\n });\n }\n } else if (this.multiple && filesLength > this.maxFiles) {\n // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? 'files are' : 'file is'} allowed.`\n }]\n });\n }\n } else {\n // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files) {\n const fileHasValidType = isValidFile(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) {\n acceptedFiles.push(file);\n } else {\n const errors = [];\n\n if (!fileHasValidType) {\n errors.push({\n code: INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n }\n\n if (fileExceedsMaxSize) {\n errors.push({\n code: FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n }\n\n if (fileIsSmallerThanMinSize) {\n errors.push({\n code: FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n }\n\n rejectedFiles.push({ file, errors });\n }\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles,\n rejectedFiles\n }\n }));\n\n if (acceptedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles\n }\n }));\n }\n\n if (rejectedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles\n }\n }));\n }\n\n if (this.#fileInput) {\n this.#fileInput.value = this.#fileInput.defaultValue;\n }\n }\n\n /**\n * Opens the file dialog programmatically.\n */\n openFileDialog() {\n if (this.disabled) {\n return;\n }\n\n this.#fileInput?.click();\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, FilesDropzone);\n }\n }\n}\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */\nexport function isValidFile(file, acceptedTypeSpecifiers = '') {\n if (!acceptedTypeSpecifiers) {\n return true;\n }\n\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(',').map(v => v.trim()).filter(Boolean))\n ];\n\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, '');\n\n for (const validType of acceptedMimeTypesList) {\n if (validType.charAt(0) === '.') {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, '')) {\n return true;\n }\n } else {\n if (fileMimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n}\n","// @ts-check\n\n/**\n * A map of common file extensions and their associated MIME types.\n */\nconst COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['jxl', 'image/jxl'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['markdown', 'text/markdown'],\n ['md', 'text/markdown'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */\nconst toFileWithMimeType = file => {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const extension = (name.split('.').pop() || '').toLowerCase();\n const type = COMMON_MIME_TYPES.get(extension);\n\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n};\n\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */\nconst toFileWithPath = (file, path) => {\n const fileWithMimeType = toFileWithMimeType(file);\n\n // @ts-ignore\n if (typeof fileWithMimeType.path !== 'string') {\n const { webkitRelativePath } = file;\n\n Object.defineProperty(fileWithMimeType, 'path', {\n value: typeof path === 'string' ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return fileWithMimeType;\n};\n\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readEntriesPromise = async directoryReader => {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n};\n\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readAllDirectoryEntries = async directoryReader => {\n const entries = [];\n let readEntries = await readEntriesPromise(directoryReader);\n\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n\n return entries;\n};\n\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */\nconst getFileFromFileEntry = fileEntry => {\n return new Promise((resolve, reject) => {\n fileEntry.file(file => resolve(toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromDataTransferItemList = async dataTransferItemList => {\n const files = [];\n\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n\n for (const item of dataTransferItemList) {\n if (item.kind !== 'file') {\n // Ignore non-file items, such as links.\n continue;\n }\n\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n\n queue.push(entry);\n }\n\n while (queue.length > 0) {\n const entry = queue.shift();\n\n if (!entry) {\n continue;\n } else if (entry.isFile) {\n const file = await getFileFromFileEntry(entry);\n\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(file);\n }\n } else if (entry.isDirectory) {\n queue.push(...await readAllDirectoryEntries(entry.createReader()));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromFileList = async fileList => {\n const files = [];\n\n for (const file of fileList) {\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(toFileWithPath(file));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from an event.\n * This function supports both `drop` and `change` events.\n *\n * @param {*} evt - The event to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nexport const getFilesFromEvent = async evt => {\n if (evt.dataTransfer) {\n return evt.dataTransfer.items\n ? await getFilesFromDataTransferItemList(evt.dataTransfer.items)\n : await getFilesFromFileList(evt.dataTransfer.files);\n }\n\n return await getFilesFromFileList(evt.target.files);\n};\n","/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */\nexport const arrayRemove = (array, ...indexes) => {\n if (!Array.isArray(array)) {\n throw new TypeError('Expected an array for first argument');\n }\n\n return array.filter((_, i) => indexes.indexOf(i) === -1);\n};\n","/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */\nconst uid = (prefix = '', suffix = '') => {\n const prefixString = typeof prefix === 'string' && prefix !== '' ? prefix + '-' : '';\n const suffixString = typeof suffix === 'string' && suffix !== '' ? '-' + suffix : '';\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n\n return `${prefixString}${randomString}${suffixString}`;\n};\n\nexport { uid };\n","export const ACCEPTED_MIME_TYPES = ['image/jpg', 'image/jpeg', 'image/png', 'image/apng', 'image/gif', 'image/webp', 'image/avif'];\n","import AntonRegular from 'url:../assets/fonts/Anton/Anton-Regular.ttf';\nimport OswaldRegular from 'url:../assets/fonts/Oswald/Oswald-Regular.ttf';\nimport OswaldBold from 'url:../assets/fonts/Oswald/Oswald-Bold.ttf';\nimport RobotoRegular from 'url:../assets/fonts/Roboto/Roboto-Regular.ttf';\nimport RobotoBold from 'url:../assets/fonts/Roboto/Roboto-Bold.ttf';\nimport RobotoCondensedRegular from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Regular.ttf';\nimport RobotoCondensedBold from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Bold.ttf';\nimport CourierPrimeRegular from 'url:../assets/fonts/CourierPrime/CourierPrime-Regular.ttf';\nimport CourierPrimeBold from 'url:../assets/fonts/CourierPrime/CourierPrime-Bold.ttf';\nimport OpenSansRegular from 'url:../assets/fonts/OpenSans/OpenSans-Regular.ttf';\nimport OpenSansBold from 'url:../assets/fonts/OpenSans/OpenSans-Bold.ttf';\n\nexport const customFonts = [\n { name: 'Anton', label: 'Anton', path: AntonRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Regular', label: 'Oswald', path: OswaldRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Bold', label: 'Oswald Bold', path: OswaldBold, style: 'normal', weight: '700' },\n { name: 'Roboto-Regular', label: 'Roboto', path: RobotoRegular, style: 'normal', weight: '400' },\n { name: 'Roboto-Bold', label: 'Roboto Bold', path: RobotoBold, style: 'normal', weight: '700' },\n { name: 'RobotoCondensed-Regular', label: 'Roboto Condensed', path: RobotoCondensedRegular, style: 'normal', weight: '400' },\n { name: 'RobotoCondensed-Bold', label: 'Roboto Condensed Bold', path: RobotoCondensedBold, style: 'normal', weight: '700' },\n { name: 'CourierPrime-Regular', label: 'Courier Prime', path: CourierPrimeRegular, style: 'normal', weight: '400' },\n { name: 'CourierPrime-Bold', label: 'Courier Prime Bold', path: CourierPrimeBold, style: 'normal', weight: '700' },\n { name: 'OpenSans-Regular', label: 'Open Sans', path: OpenSansRegular, style: 'normal', weight: '400' },\n { name: 'OpenSans-Bold', label: 'Open Sans Bold', path: OpenSansBold, style: 'normal', weight: '400' }\n];\n\nexport const loadCustomFont = async (name, path, options = {}) => {\n try {\n const font = new FontFace(name, `url(${path})`, { ...options });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n","module.exports = new __parcel__URL__(\"Anton-Regular.e58ab3fe.ttf\").toString();","module.exports = new __parcel__URL__(\"Oswald-Regular.89ec7d89.ttf\").toString();","module.exports = new __parcel__URL__(\"Oswald-Bold.0f6a7ca6.ttf\").toString();","module.exports = new __parcel__URL__(\"Roboto-Regular.ca197847.ttf\").toString();","module.exports = new __parcel__URL__(\"Roboto-Bold.fdb9b54a.ttf\").toString();","module.exports = new __parcel__URL__(\"RobotoCondensed-Regular.d585f5c7.ttf\").toString();","module.exports = new __parcel__URL__(\"RobotoCondensed-Bold.e1f96d4b.ttf\").toString();","module.exports = new __parcel__URL__(\"CourierPrime-Regular.3a25a501.ttf\").toString();","module.exports = new __parcel__URL__(\"CourierPrime-Bold.3d6bf689.ttf\").toString();","module.exports = new __parcel__URL__(\"OpenSans-Regular.edf9e01b.ttf\").toString();","module.exports = new __parcel__URL__(\"OpenSans-Bold.8fceb72b.ttf\").toString();","import { ACCEPTED_MIME_TYPES } from './constants.js';\n\nexport const fileFromUrl = async (options = {}) => {\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || '';\n\n if (!ACCEPTED_MIME_TYPES.includes(mimeType)) {\n throw new Error(`This is not an accepted image format. Accepted MIME types are: ${ACCEPTED_MIME_TYPES.join(', ')}`);\n }\n\n return new File([blob], options.filename || '', blob);\n};\n","const errorsContainer = document.getElementById('errorsContainer');\n\nconst hideError = evt => {\n const target = evt.currentTarget;\n target.removeEventListener('click', hideError);\n errorsContainer.removeChild(target.parentNode);\n};\n\nexport const toastAlert = (message = '', type = 'info') => {\n const types = ['info', 'warning', 'danger'];\n\n if (!types.includes(type)) {\n type = 'info';\n }\n\n const template = /* html */`\n ${message}\n \n `;\n\n const div = document.createElement('div');\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector('button').addEventListener('click', hideError);\n errorsContainer.appendChild(div);\n setTimeout(() => div.classList.add('show'), 100);\n};\n","import { customFonts } from './custom-fonts.js';\n\nexport const createTextBox = (index, data = {}) => {\n const inputTemplate = /* html */`\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n\n const fragment = document.createDocumentFragment();\n const div = document.createElement('div');\n\n div.className = 'bg-light border shadow-sm mb-3 rounded';\n div.setAttribute('data-section', 'textBox');\n div.setAttribute('data-index', index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n\n return fragment.appendChild(div);\n};\n","export const drawCanvas = (image, canvas, ctx, textOptions = []) => {\n if (image == null) {\n return;\n }\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (typeof image === 'string') { // Assume it's a color\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n }\n\n textOptions.forEach(function (item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n\n const multiplier = index + 1;\n const lineHeight = ctx.measureText('M').width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split('\\n');\n\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index) => ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else {\n textLines.forEach((text, index) => {\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n }\n\n ctx.restore();\n });\n};"],"names":["$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","$7a2aca835bb05064$export$c37129e465f64ef0","navigator","canShare","id","exports","init","module","call","err","Error","code","register","parcelRegister","Object","defineProperty","get","$ef7689007096c8a0$export$6503ec6e8aabbaf","set","v","enumerable","configurable","$ef7689007096c8a0$var$mapping","Map","baseUrl","manifest","i","length","path","URL","url","toString","JSON","parse","$cd62c5572235e737$export$30b344bef3e55b67","$cd62c5572235e737$var$t","$cd62c5572235e737$var$e","document","createElement","innerHTML","HTMLElement","t","e","s","constructor","shadowRoot","attachShadow","mode","delegatesFocus","appendChild","content","cloneNode","querySelector","observedAttributes","attributeChangedCallback","toggleAttribute","disabled","setAttribute","part","contains","toggle","connectedCallback","r","addEventListener","n","disconnectedCallback","removeEventListener","hasAttribute","shareUrl","getAttribute","shareTitle","shareText","shareFiles","Array","isArray","share","title","text","files","dispatchEvent","CustomEvent","bubbles","composed","detail","shareData","name","error","preventDefault","target","nodeName","assignedElements","flatten","find","prototype","hasOwnProperty","defineCustomElement","customElements","define","$dced0d224c6d876e$export$cc30a98fe3890794","$dced0d224c6d876e$var$t","Number","isNaN","Math","min","max","$dced0d224c6d876e$var$e","$dced0d224c6d876e$var$i","$dced0d224c6d876e$var$o","o","l","getSupportedConstraints","isConnected","getTrackCapabilities","getTrackSettings","u","includes","facingMode","stopVideoStream","startVideoStream","cameraResolution","trim","split","map","width","height","pan","h","tilt","zoom","d","getElementById","c","m","p","g","b","f","isSupported","message","autoPlay","noImage","loading","calculateFileSize","capture","play","then","video","catch","finally","removeAttribute","from","childNodes","forEach","remove","getVideoTracks","applyConstraints","advanced","ideal","audio","mediaDevices","getUserMedia","srcObject","hidden","stop","getContext","videoWidth","videoHeight","drawImage","toDataURL","Image","src","dataURI","fetch","blob","size","getCapabilities","getSettings","$d9c5053bade2d3f8$export$32589115725b904b","$d9c5053bade2d3f8$var$e","open","showModal","body","style","overflowY","element","close","noHeader","classList","noAnimations","noCloseButton","clearTimeout","staticBackdrop","fullscreen","add","setTimeout","defaultPrevented","currentTarget","assignedNodes","cancelable","reason","show","hide","$9351176e8d763a78$export$6ccd1735166caad9","$9351176e8d763a78$var$e","$9351176e8d763a78$var$t","$9351176e8d763a78$var$o","lastIndexOf","type","pop","toLowerCase","value","writable","$9351176e8d763a78$var$i","webkitRelativePath","$9351176e8d763a78$var$r","Promise","readEntries","$9351176e8d763a78$var$a","push","$9351176e8d763a78$var$n","file","fullPath","$9351176e8d763a78$var$s","kind","getAsEntry","webkitGetAsEntry","shift","isFile","indexOf","isDirectory","createReader","$9351176e8d763a78$var$d","$9351176e8d763a78$var$l","dataTransfer","items","$9351176e8d763a78$var$p","$9351176e8d763a78$var$c","$9351176e8d763a78$var$h","$9351176e8d763a78$var$u","accept","multiple","noKeyboard","autoFocus","focus","maxFiles","floor","abs","maxSize","minSize","noClick","noDrag","noStyle","Event","dropEffect","click","key","errors","Set","filter","Boolean","replace","charAt","test","acceptedFiles","rejectedFiles","defaultValue","openFileDialog","$4af3d380d1884504$export$30a014203d0d7e4f","array","indexes","TypeError","_","$17004b28c97c1306$export$e2a22331486dcca0","prefix","suffix","randomString","random","substring","$65136e012e05e2d7$export$63e7bed68b07a85c","$068eb37972da8c20$exports","$2db6b38fbc5d48da$exports","$a0b1873abc1b077b$exports","$df7c7f72fd04e02a$exports","$e4c2039736f96f5d$exports","$fbff28e47a938944$exports","$d8f4a375a42d32f4$exports","$7cfbda315cbb4209$exports","$6379185b16d8409f$exports","$454f2b111c8d0078$exports","$c05fcaeb63dbd733$exports","$56b863c8b6be7003$export$6874249d87f2602a","label","weight","$56b863c8b6be7003$export$59eceaef0c7797b2","options","font","FontFace","load","fonts","console","$0374350c629f125f$export$6539e087749cf9d3","res","mimeType","join","File","filename","$3969451ff60cb8d5$var$errorsContainer","$3969451ff60cb8d5$var$hideError","evt","removeChild","parentNode","$3969451ff60cb8d5$export$af04143326425dbd","types","template","div","className","$224fa2388dce65c4$export$293a4b86a6fe2398","index","data","inputTemplate","fillColor","shadowColor","_isSettingsOpen","fontSize","shadowBlur","rotate","offsetY","offsetX","fragment","createDocumentFragment","textAlign","checked","allCaps","$64ef5d4149d7e6a5$export$e653a2de0f3a8b89","image","canvas","ctx","textOptions","clearRect","fillStyle","fillRect","item","fontWeight","multiplier","lineHeight","measureText","xPos","textLines","toUpperCase","save","shadowOffsetX","shadowOffsetY","translate","PI","fillText","restore","$85a5f86b715fe7db$var$videoModal","$85a5f86b715fe7db$var$downloadModal","$85a5f86b715fe7db$var$canvas","$85a5f86b715fe7db$var$dropzoneEl","$85a5f86b715fe7db$var$instructionsEl","$85a5f86b715fe7db$var$ctx","$85a5f86b715fe7db$var$imageUploadMethodSelect","$85a5f86b715fe7db$var$fileSelectBtn","$85a5f86b715fe7db$var$imageUrlForm","$85a5f86b715fe7db$var$addTextboxBtn","$85a5f86b715fe7db$var$inputsContainer","$85a5f86b715fe7db$var$generateMemeBtn","$85a5f86b715fe7db$var$openVideoModalBtn","$85a5f86b715fe7db$var$downloadMemeBtn","$85a5f86b715fe7db$var$downloadMemePreview","$85a5f86b715fe7db$var$webShareComponent","$85a5f86b715fe7db$var$galleryEl","$85a5f86b715fe7db$var$gallerySearchEl","$85a5f86b715fe7db$var$galleryNoResultsEl","$85a5f86b715fe7db$var$solidColorForm","$85a5f86b715fe7db$var$uploadMethodEls","querySelectorAll","$85a5f86b715fe7db$var$selectedImage","$85a5f86b715fe7db$var$reqAnimFrame","$85a5f86b715fe7db$var$defaultTextOptions","$85a5f86b715fe7db$var$textOptions","$85a5f86b715fe7db$var$generateMeme","dataUrl","downloadLink","download","href","$85a5f86b715fe7db$var$onImageLoaded","MAX_WIDTH","MAX_HEIGHT","$85a5f86b715fe7db$var$handleFileSelect","reader","FileReader","result","readAsDataURL","$85a5f86b715fe7db$var$handleTextPropChange","prop","$85a5f86b715fe7db$var$handleImageUploadFromURL","form","submitButton","imageUrl","$85a5f86b715fe7db$var$moveText","offsetDir","sign","textBoxSection","offsetYInput","offsetXInput","requestAnimationFrame","$85a5f86b715fe7db$var$handleGalleryClick","button","closest","img","alt","newTextBox","matches","textBoxIndex","textBoxEls","el","settingsEl","confirm","isOffsetYButton","isOffsetXButton","cancelAnimationFrame","query","galleryItems","capturePhotoComponent","$442be162a818aed4$export$c37129e465f64ef0","isWebShareSupported","$e179325634270afd$export$30b344bef3e55b67","$e179325634270afd$var$styles","$e179325634270afd$var$template","buttonSlot","buttonEl","getButton","oldValue","newValue","upgradeProperty","handleSlotChange","handleClick","instance","elementName","WebShare","$c290816263f90981$export$cc30a98fe3890794","$02ad8beec419df62$export$7d15b64cf5a3a4c4","lower","upper","$c290816263f90981$var$COMPONENT_NAME","$c290816263f90981$var$styles","$c290816263f90981$var$template","supportedConstraints","stream","canvasElement","outputElement","videoElement","captureButtonSlot","captureButton","facingModeButtonSlot","facingModeButton","trackCapabilities","trackSettings","emptyOutputElement","isValidFacingMode","x","widthInAllowedRange","heightInAllowedRange","panInAllowedRange","applyPTZ","tiltInAllowedRange","zoomInAllowedRange","getCaptureButton","getFacingModeButton","onVideoLoadedMetaData","onCaptureButtonSlotChange","onCapturePhotoButtonClick","onFacingModeButtonSlotChange","onFacingModeButtonClick","node","constraintName","constraintValue","track","constraints","eventDetail","CapturePhoto","$180b6dcf923bafc7$export$32589115725b904b","$180b6dcf923bafc7$var$template","dialogEl","footerSlotEl","pulseAnimationTimeout","headerEl","closeBtnEl","handleDialogClick","handleDialogClose","handleDialogCancel","handleCloseButtonClick","handleFooterSlotChange","applyPulseEffectOnDialog","requestCloseEvent","createRequestCloseEvent","footerEl","footerSlotNodes","hasFooterSlotNodes","ModalElement","$862aa3736b0514bc$export$6ccd1735166caad9","$f31161edf38949e9$var$COMMON_MIME_TYPES","$f31161edf38949e9$var$FILES_TO_IGNORE","$f31161edf38949e9$var$toFileWithMimeType","hasExtension","extension","$f31161edf38949e9$var$toFileWithPath","fileWithMimeType","$f31161edf38949e9$var$readEntriesPromise","directoryReader","resolve","reject","$f31161edf38949e9$var$readAllDirectoryEntries","entries","$f31161edf38949e9$var$getFileFromFileEntry","fileEntry","$f31161edf38949e9$var$getFilesFromDataTransferItemList","dataTransferItemList","queue","entry","$f31161edf38949e9$var$getFilesFromFileList","fileList","$f31161edf38949e9$export$6d52664cd15c442","$862aa3736b0514bc$var$COMPONENT_NAME","$862aa3736b0514bc$var$TOO_MANY_FILES","$862aa3736b0514bc$var$template","$862aa3736b0514bc$var$styles","fileInput","dropzoneEl","handleFileInputChange","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleKeyUp","num","Infinity","handleFilesSelect","filesLength","fileHasValidType","acceptedTypeSpecifiers","acceptedMimeTypesList","fileMimeType","baseMimeType","validType","fileExceedsMaxSize","fileIsSmallerThanMinSize","FilesDropzone"],"version":3,"file":"index.a3077d6d.js.map"} \ No newline at end of file diff --git a/docs/index.b9185ed0.js.map b/docs/index.b9185ed0.js.map deleted file mode 100644 index c092f94..0000000 --- a/docs/index.b9185ed0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"mappings":"A,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,CMQA,SAAS,EAAoB,CAAO,EAAA,OAClB,OAAZ,GAAoB,UAAA,OAAO,EACtB,UAAW,WAAa,aAAc,WAAa,UAAU,QAAA,CAAS,GAGxE,UAAW,SACpB,C,M,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,A,C,E,E,Q,A,E,Q,S,C,C,C,E,O,c,C,E,O,C,W,C,I,W,O,C,E,I,S,C,E,O,E,C,E,W,C,E,a,C,C,GLZA,IAgBA,EAhBI,EAAU,IAAI,IAgBlB,EAfA,SAAkB,CAAO,CAAE,CAAQ,EACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,MAAM,CAAG,EAAG,GAAK,EAC5C,EAAQ,GAAG,CAAC,CAAQ,CAAC,EAAE,CAAE,CACvB,QAAS,EACT,KAAM,CAAQ,CAAC,EAAI,EAAE,AACvB,EAEJ,C,GCVA,AAAA,EAAA,SAAA,QAAA,CAA8C,IAAA,IAAoB,GAAA,YAAA,GAAA,EAAI,QAAQ,GAAG,KAAK,KAAK,CAAC,gtB,O,c,C,C,E,W,C,I,W,O,C,E,I,K,E,W,C,E,a,C,C,GOmB5F,IAAM,EAAkB,CAAC;;;;AAIzB,CAAC,CAEK,EAAW,SAAS,aAAA,CAAc,WAExC,CAAA,EAAS,SAAA,CAAuB,CAAC;SACxB,EAAE,EAAO;;AAElB,CAgCA,AAAA,OAAM,UAAiB,YAErB,CAAC,CAAW,AAGZ,AAAA,EAAC,CAAQ,AAGT,AAAA,EAAC,CAAK,CAAG,EAAE,AAEX,AAAA,cAAc,CACZ,KAAK,GAEA,IAAI,CAAC,UAAA,EACW,IAAI,CAAC,YAAA,CAAa,CAAE,KAAM,OAAQ,eAAgB,CAAA,CAAK,GAC/D,WAAA,CAAY,EAAS,OAAA,CAAQ,SAAA,CAAU,CAAA,IAGpD,IAAI,CAAC,CAAC,CA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","sources":["","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/runtime-57b74f958dd415d8.js","src/js/index.js","node_modules/@georapbox/web-share-element/dist/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/","node_modules/@georapbox/web-share-element/dist/src/is-web-share-supported.js","node_modules/@georapbox/web-share-element/dist/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share-defined.js","node_modules/@georapbox/web-share-element/dist/src/web-share.js","node_modules/@georapbox/capture-photo-element/dist/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo-defined.js","node_modules/@georapbox/capture-photo-element/dist/src/capture-photo.js","node_modules/@georapbox/capture-photo-element/dist/src/utils/clamp.js","node_modules/@georapbox/modal-element/dist/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/","node_modules/@georapbox/modal-element/dist/src/modal-element-defined.js","node_modules/@georapbox/modal-element/dist/src/modal-element.js","node_modules/@georapbox/files-dropzone-element/dist/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone-defined.js","node_modules/@georapbox/files-dropzone-element/dist/src/files-dropzone.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/is-valid-file.js","node_modules/@georapbox/files-dropzone-element/dist/src/utils/files-selector.js","src/js/utils/array-remove.js","src/js/utils/uid.js","src/js/constants.js","src/js/custom-fonts.js","node_modules/@parcel/runtime-js/lib/runtime-3165768b2af17669.js","node_modules/@parcel/runtime-js/lib/runtime-73291864e538b74b.js","node_modules/@parcel/runtime-js/lib/runtime-a2fc0bec9703ab72.js","node_modules/@parcel/runtime-js/lib/runtime-b59fd44dfd81b5fd.js","node_modules/@parcel/runtime-js/lib/runtime-bf36396318022d20.js","node_modules/@parcel/runtime-js/lib/runtime-418166379205b8eb.js","node_modules/@parcel/runtime-js/lib/runtime-105db2d9f9edf7cf.js","node_modules/@parcel/runtime-js/lib/runtime-9f8b0d4110a0174a.js","node_modules/@parcel/runtime-js/lib/runtime-94ba5916670c0a2b.js","node_modules/@parcel/runtime-js/lib/runtime-dec7b2cfeb98de11.js","node_modules/@parcel/runtime-js/lib/runtime-1800a52d85f464ab.js","src/js/file-from-url.js","src/js/toast-alert.js","src/js/create-text-box.js","src/js/draw-canvas.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire5078\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire5078\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"kyEFX\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $ef7689007096c8a0$export$6503ec6e8aabbaf; }, function (v) { return $ef7689007096c8a0$export$6503ec6e8aabbaf = v; });\nvar $ef7689007096c8a0$export$6503ec6e8aabbaf;\nvar $ef7689007096c8a0$export$f7ad0328861e2f03;\n\"use strict\";\nvar $ef7689007096c8a0$var$mapping = new Map();\nfunction $ef7689007096c8a0$var$register(baseUrl, manifest) {\n for(var i = 0; i < manifest.length - 1; i += 2)$ef7689007096c8a0$var$mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n}\nfunction $ef7689007096c8a0$var$resolve(id) {\n var resolved = $ef7689007096c8a0$var$mapping.get(id);\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\n$ef7689007096c8a0$export$6503ec6e8aabbaf = $ef7689007096c8a0$var$register;\n$ef7689007096c8a0$export$f7ad0328861e2f03 = $ef7689007096c8a0$var$resolve;\n\n});\n\nvar $279d7e991aa5fda1$exports = {};\n\n(parcelRequire(\"kyEFX\")).register(new URL(\"\", import.meta.url).toString(), JSON.parse('[\"eq2Ey\",\"index.b9185ed0.js\",\"9jzSS\",\"Anton-Regular.e58ab3fe.ttf\",\"hr5Pp\",\"Oswald-Regular.89ec7d89.ttf\",\"5TebC\",\"Oswald-Bold.0f6a7ca6.ttf\",\"3ENF9\",\"Roboto-Regular.ca197847.ttf\",\"5yAXK\",\"Roboto-Bold.fdb9b54a.ttf\",\"k2KZ9\",\"RobotoCondensed-Regular.d585f5c7.ttf\",\"4h4UX\",\"RobotoCondensed-Bold.e1f96d4b.ttf\",\"8pomG\",\"CourierPrime-Regular.3a25a501.ttf\",\"l2v76\",\"CourierPrime-Bold.3d6bf689.ttf\",\"eKMWr\",\"OpenSans-Regular.edf9e01b.ttf\",\"dXO1Z\",\"OpenSans-Bold.8fceb72b.ttf\",\"9FH7D\",\"index.58beac5f.css\"]'));\n\nfunction $7a2aca835bb05064$export$c37129e465f64ef0(a) {\n return null !== a && \"object\" == typeof a ? \"share\" in navigator && \"canShare\" in navigator && navigator.canShare(a) : \"share\" in navigator;\n}\n\n\nObject.defineProperty({}, \"WebShare\", {\n get: function() {\n return $cd62c5572235e737$export$30b344bef3e55b67;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $cd62c5572235e737$var$t = `\n :host {\n display: inline-block;\n }\n`, $cd62c5572235e737$var$e = document.createElement(\"template\");\n$cd62c5572235e737$var$e.innerHTML = `\n \n \n`;\nclass $cd62c5572235e737$export$30b344bef3e55b67 extends HTMLElement {\n #t;\n #e;\n #s = [];\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\",\n delegatesFocus: !0\n }).appendChild($cd62c5572235e737$var$e.content.cloneNode(!0)), this.#t = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null, this.#e = this.#i();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n attributeChangedCallback(t, e, s) {\n \"disabled\" === t && e !== s && this.#e && (this.#e.toggleAttribute(\"disabled\", this.disabled), this.#e.setAttribute(\"aria-disabled\", this.disabled.toString()), this.#e.part && this.#e.part.contains(\"button\") && this.#e.part.toggle(\"button--disabled\", this.disabled));\n }\n connectedCallback() {\n this.#r(\"shareUrl\"), this.#r(\"shareTitle\"), this.#r(\"shareText\"), this.#r(\"shareFiles\"), this.#r(\"disabled\"), this.#t?.addEventListener(\"slotchange\", this.#a), this.#e?.addEventListener(\"click\", this.#n);\n }\n disconnectedCallback() {\n this.#t?.removeEventListener(\"slotchange\", this.#a), this.#e?.removeEventListener(\"click\", this.#n);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(t) {\n this.toggleAttribute(\"disabled\", !!t);\n }\n get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(t) {\n this.setAttribute(\"share-url\", t);\n }\n get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(t) {\n this.setAttribute(\"share-title\", t);\n }\n get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(t) {\n this.setAttribute(\"share-text\", t);\n }\n get shareFiles() {\n return this.#s;\n }\n set shareFiles(t) {\n Array.isArray(t) && t.length > 0 && (this.#s = t);\n }\n async share() {\n if (!this.disabled) try {\n let t = {};\n this.shareUrl && (t.url = this.shareUrl), this.shareTitle && (t.title = this.shareTitle), this.shareText && (t.text = this.shareText), Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n }) && (t.files = this.shareFiles), await navigator.share(t), this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: !0,\n composed: !0,\n detail: {\n shareData: t\n }\n }));\n } catch (t) {\n if (t instanceof Error && \"AbortError\" === t.name) {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n #n = (t)=>{\n t.preventDefault(), this.disabled || this.share();\n };\n #a = (t)=>{\n t.target && \"button\" === t.target.name && (this.#e?.removeEventListener(\"click\", this.#n), this.#e = this.#i(), this.#e && (this.#e.addEventListener(\"click\", this.#n), \"BUTTON\" === this.#e.nodeName || this.#e.hasAttribute(\"role\") || this.#e.setAttribute(\"role\", \"button\")));\n };\n #i() {\n return this.#t && this.#t.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"button\" === t.getAttribute(\"slot\")) || null;\n }\n #r(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n static defineCustomElement(t = \"web-share\") {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $cd62c5572235e737$export$30b344bef3e55b67);\n }\n}\n$cd62c5572235e737$export$30b344bef3e55b67.defineCustomElement();\n\n\nObject.defineProperty({}, \"CapturePhoto\", {\n get: function() {\n return $dced0d224c6d876e$export$cc30a98fe3890794;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $dced0d224c6d876e$var$t = (t, e, i)=>(Number.isNaN(e) && (e = 0), Number.isNaN(i) && (i = 0), Math.min(Math.max(t, Math.min(e, i)), Math.max(e, i))), $dced0d224c6d876e$var$e = \"capture-photo\", $dced0d224c6d876e$var$i = `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`, $dced0d224c6d876e$var$o = document.createElement(\"template\");\n$dced0d224c6d876e$var$o.innerHTML = `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\nclass $dced0d224c6d876e$export$cc30a98fe3890794 extends HTMLElement {\n #t = {};\n #e = null;\n #i = null;\n #o = null;\n #n = null;\n #a = null;\n #s = null;\n #r = null;\n #l = null;\n constructor(){\n super(), this.#t = this.getSupportedConstraints(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($dced0d224c6d876e$var$o.content.cloneNode(!0));\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n attributeChangedCallback(t, e, i) {\n if (!this.isConnected) return;\n let o = this.getTrackCapabilities(), n = this.getTrackSettings();\n if (\"no-image\" === t && e !== i && this.#u(), \"facing-mode\" === t && e !== i && \"facingMode\" in this.#t) {\n let t = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n \"facingMode\" in n && t && (this.stopVideoStream(), this.startVideoStream());\n }\n if (\"camera-resolution\" === t && e !== i && \"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [t = 0, e = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n if (t > 0 && e > 0 && \"width\" in o && \"height\" in o) {\n let i = !!(o.width?.min && o.width?.max) && t >= o?.width?.min && t <= o?.width?.max, a = !!(o.height?.min && o.height?.max) && e >= o?.height?.min && e <= o?.height?.max;\n \"width\" in n && \"height\" in n && i && a && (this.stopVideoStream(), this.startVideoStream());\n }\n }\n if (\"pan\" === t && e !== i && \"pan\" in this.#t) {\n let t = !!(\"pan\" in o && o.pan?.min && o.pan?.max) && this.pan >= o.pan.min && this.pan <= o.pan.max;\n \"pan\" in n && \"number\" == typeof this.pan && t && this.#h(\"pan\", this.pan);\n }\n if (\"tilt\" === t && e !== i && \"tilt\" in this.#t) {\n let t = !!(\"tilt\" in o && o.tilt?.min && o.tilt?.max) && this.tilt >= o.tilt.min && this.tilt <= o.tilt.max;\n \"tilt\" in n && \"number\" == typeof this.tilt && t && this.#h(\"tilt\", this.tilt);\n }\n if (\"zoom\" === t && e !== i && \"zoom\" in this.#t) {\n let t = !!(\"zoom\" in o && o.zoom?.min && o.zoom?.max) && this.zoom >= o.zoom.min && this.zoom <= o.zoom.max;\n \"zoom\" in n && \"number\" == typeof this.zoom && t && this.#h(\"zoom\", this.zoom);\n }\n }\n connectedCallback() {\n if (this.#d(\"autpoPlay\"), this.#d(\"noImage\"), this.#d(\"facingMode\"), this.#d(\"cameraResolution\"), this.#d(\"pan\"), this.#d(\"tilt\"), this.#d(\"zoom\"), this.#d(\"calculateFileSize\"), this.#i = this.shadowRoot?.querySelector(\"canvas\") || null, this.#o = this.shadowRoot?.getElementById(\"output\") || null, this.#n = this.shadowRoot?.querySelector(\"video\") || null, this.#a = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null, this.#s = this.#c(), this.#r = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null, this.#l = this.#m(), this.#n?.addEventListener(\"loadedmetadata\", this.#p), this.#a?.addEventListener(\"slotchange\", this.#g), this.#s?.addEventListener(\"click\", this.#b), this.#r?.addEventListener(\"slotchange\", this.#f), this.#l?.addEventListener(\"click\", this.#v), !$dced0d224c6d876e$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n this.autoPlay && this.startVideoStream();\n }\n disconnectedCallback() {\n this.stopVideoStream(), this.#l?.removeEventListener(\"click\", this.#v), this.#s?.removeEventListener(\"click\", this.#b), this.#n?.removeEventListener(\"canplay\", this.#p), this.#a?.removeEventListener(\"slotchange\", this.#g), this.#r?.removeEventListener(\"slotchange\", this.#f);\n }\n get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(t) {\n this.toggleAttribute(\"auto-play\", !!t);\n }\n get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(t) {\n this.toggleAttribute(\"no-image\", !!t);\n }\n get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(t) {\n this.setAttribute(\"facing-mode\", t);\n }\n get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(t) {\n this.setAttribute(\"camera-resolution\", t);\n }\n get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(t) {\n this.setAttribute(\"pan\", null != t ? t.toString() : t);\n }\n get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(t) {\n this.setAttribute(\"tilt\", null != t ? t.toString() : t);\n }\n get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(t) {\n this.setAttribute(\"zoom\", null != t ? t.toString() : t);\n }\n get loading() {\n return this.hasAttribute(\"loading\");\n }\n get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(t) {\n this.toggleAttribute(\"calculate-file-size\", !!t);\n }\n #v = (t)=>{\n t.preventDefault(), this.loading || (this.facingMode = \"user\" !== this.facingMode && this.facingMode ? \"user\" : \"environment\");\n };\n #b = (t)=>{\n t.preventDefault(), this.capture();\n };\n #p = (t)=>{\n let i = t.target;\n i.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:video-play`, {\n bubbles: !0,\n composed: !0,\n detail: {\n video: i\n }\n }));\n }).catch((t)=>{\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n #u() {\n this.#o && Array.from(this.#o.childNodes).forEach((t)=>t.remove());\n }\n #h(e, i) {\n if (!this.#e || !e || !i) return;\n let [o] = this.#e.getVideoTracks(), n = this.getTrackCapabilities();\n e in this.getTrackSettings() && o.applyConstraints({\n advanced: [\n {\n [e]: $dced0d224c6d876e$var$t(Number(i), n[e]?.min || 1, n[e]?.max || 1)\n }\n ]\n });\n }\n #g = (t)=>{\n t.target?.name === \"capture-button\" && (this.#s?.removeEventListener(\"click\", this.#b), this.#s = this.#c(), this.#s && (this.#s.addEventListener(\"click\", this.#b), \"BUTTON\" === this.#s.nodeName || this.#s.hasAttribute(\"role\") || this.#s.setAttribute(\"role\", \"button\")));\n };\n #f = (t)=>{\n t.target?.name === \"facing-mode-button\" && (this.#l?.removeEventListener(\"click\", this.#v), this.#l = this.#m(), this.#l && (this.#l.addEventListener(\"click\", this.#v), \"BUTTON\" === this.#l.nodeName || this.#l.hasAttribute(\"role\") || this.#l.setAttribute(\"role\", \"button\")));\n };\n #m() {\n return this.#r && this.#r.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"facing-mode-button\" === t.getAttribute(\"slot\")) || null;\n }\n #c() {\n return this.#a && this.#a.assignedElements({\n flatten: !0\n }).find((t)=>\"BUTTON\" === t.nodeName || \"capture-button\" === t.getAttribute(\"slot\")) || null;\n }\n #d(t) {\n if (Object.prototype.hasOwnProperty.call(this, t)) {\n let e = this[t];\n delete this[t], this[t] = e;\n }\n }\n async startVideoStream() {\n if (!$dced0d224c6d876e$export$cc30a98fe3890794.isSupported() || this.#e) return;\n this.setAttribute(\"loading\", \"\");\n let t = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: !0,\n tilt: !0,\n zoom: !0\n },\n audio: !1\n };\n if (\"string\" == typeof this.cameraResolution && this.cameraResolution.trim().length > 0) {\n let [e = 0, i = 0] = this.cameraResolution.split(\"x\").map((t)=>Number(t));\n e > 0 && i > 0 && (t.video.width = e, t.video.height = i);\n }\n try {\n this.#e = await navigator.mediaDevices.getUserMedia(t), this.#n && (this.#n.srcObject = this.#e), this.#h(\"pan\", this.pan), this.#h(\"tilt\", this.tilt), this.#h(\"zoom\", this.zoom);\n let e = this.getTrackSettings();\n \"facingMode\" in e && this.#r && (this.#r.hidden = !1);\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n stopVideoStream() {\n if (!this.#n || !this.#e) return;\n let [t] = this.#e.getVideoTracks();\n t?.stop(), this.#n.srcObject = null, this.#e = null;\n }\n async capture() {\n if (!this.loading && this.#i && this.#n) try {\n let t = this.#i.getContext(\"2d\"), i = this.#n.videoWidth, o = this.#n.videoHeight;\n this.#i.width = i, this.#i.height = o, t?.drawImage(this.#n, 0, 0, i, o);\n let n = this.#i.toDataURL(\"image/png\");\n if (\"string\" == typeof n && n.includes(\"data:image\")) {\n if (!this.noImage) {\n let t = new Image;\n t.src = n, t.width = i, t.height = o, t.setAttribute(\"part\", \"output-image\"), this.#u(), this.#o?.appendChild(t);\n }\n let t = {\n dataURI: n,\n width: i,\n height: o\n };\n if (this.calculateFileSize) try {\n let e = await fetch(n), i = (await e.blob()).size;\n i && (t.size = i);\n } catch (t) {}\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:success`, {\n bubbles: !0,\n composed: !0,\n detail: t\n }));\n }\n } catch (t) {\n this.dispatchEvent(new CustomEvent(`${$dced0d224c6d876e$var$e}:error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: t\n }\n }));\n }\n }\n getSupportedConstraints() {\n return $dced0d224c6d876e$export$cc30a98fe3890794.isSupported() && navigator.mediaDevices.getSupportedConstraints() || {};\n }\n getTrackCapabilities() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getCapabilities && t.getCapabilities() || {};\n }\n getTrackSettings() {\n if (!this.#e) return {};\n let [t] = this.#e.getVideoTracks();\n return t && \"function\" == typeof t.getSettings && t.getSettings() || {};\n }\n static isSupported() {\n return !!navigator.mediaDevices?.getUserMedia;\n }\n static defineCustomElement(t = $dced0d224c6d876e$var$e) {\n \"undefined\" == typeof window || window.customElements.get(t) || window.customElements.define(t, $dced0d224c6d876e$export$cc30a98fe3890794);\n }\n}\n$dced0d224c6d876e$export$cc30a98fe3890794.defineCustomElement();\n\n\nObject.defineProperty({}, \"ModalElement\", {\n get: function() {\n return $d9c5053bade2d3f8$export$32589115725b904b;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $d9c5053bade2d3f8$var$e = document.createElement(\"template\");\n$d9c5053bade2d3f8$var$e.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`; /**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ \nclass $d9c5053bade2d3f8$export$32589115725b904b extends HTMLElement {\n #e = null;\n #t = null;\n #o = void 0;\n constructor(){\n if (super(), !this.shadowRoot) {\n let t = this.attachShadow({\n mode: \"open\"\n });\n t.appendChild($d9c5053bade2d3f8$var$e.content.cloneNode(!0));\n }\n this.shadowRoot && (this.#e = this.shadowRoot.querySelector(\"dialog\"), this.#t = this.shadowRoot.querySelector('slot[name=\"footer\"]'));\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n if (null !== this.#e) {\n if (\"open\" === e && t !== o && (this.open ? (this.#e.showModal(), document.body && (document.body.style.overflowY = \"hidden\"), this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }))) : this.#e.close()), \"no-header\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__header\");\n null !== e && (e.hidden = this.noHeader);\n }\n if (\"no-animations\" === e && t !== o && this.#e.classList.toggle(\"dialog--no-animations\", this.noAnimations), \"no-close-button\" === e && t !== o) {\n let e = this.#e.querySelector(\".dialog__close\");\n null !== e && (e.hidden = this.noCloseButton);\n }\n }\n }\n connectedCallback() {\n this.#i(\"open\"), this.#i(\"staticBackdrop\"), this.#i(\"noHeader\"), this.#i(\"noAnimations\"), this.#i(\"noCloseButton\"), this.#i(\"fullscreen\"), this.#e?.addEventListener(\"click\", this.#a), this.#e?.addEventListener(\"close\", this.#l), this.#e?.addEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#n), this.#t?.addEventListener(\"slotchange\", this.#r);\n }\n disconnectedCallback() {\n this.#o && clearTimeout(this.#o), this.#e?.addEventListener(\"click\", this.#a), this.#e?.removeEventListener(\"close\", this.#l), this.#e?.removeEventListener(\"cancel\", this.#s), this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#n), this.#t?.removeEventListener(\"slotchange\", this.#r);\n }\n get open() {\n return this.hasAttribute(\"open\");\n }\n set open(e) {\n e ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n }\n get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(e) {\n e ? this.setAttribute(\"static-backdrop\", \"\") : this.removeAttribute(\"static-backdrop\");\n }\n get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(e) {\n e ? this.setAttribute(\"no-header\", \"\") : this.removeAttribute(\"no-header\");\n }\n get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(e) {\n e ? this.setAttribute(\"no-animations\", \"\") : this.removeAttribute(\"no-animations\");\n }\n get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(e) {\n e ? this.setAttribute(\"no-close-button\", \"\") : this.removeAttribute(\"no-close-button\");\n }\n get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(e) {\n e ? this.setAttribute(\"fullscreen\", \"\") : this.removeAttribute(\"fullscreen\");\n }\n #d() {\n this.#o || (this.#e?.classList.add(\"dialog--pulse\"), this.#o = setTimeout(()=>{\n this.#e?.classList.remove(\"dialog--pulse\"), clearTimeout(this.#o), this.#o = void 0;\n }, 300));\n }\n #l = ()=>{\n // the open property when the dialog is closed by the user.\n this.open = !1, document.body && (document.body.style.overflowY = \"\"), this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: !0,\n composed: !0,\n detail: {\n element: this\n }\n }));\n };\n #s = (e)=>{\n let t = this.#c(\"escape-key\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #n = (e)=>{\n let t = this.#c(\"close-button\");\n this.dispatchEvent(t), t.defaultPrevented && (e.preventDefault(), this.noAnimations || this.#d());\n };\n #a = (e)=>{\n if (e.target !== e.currentTarget) return;\n let t = this.#c(\"backdrop-click\");\n if (this.dispatchEvent(t), t.defaultPrevented || this.staticBackdrop) {\n this.noAnimations || this.#d();\n return;\n }\n this.#e?.close();\n };\n #r = ()=>{\n if (null === this.#e) return; /** @type {Nullable} */ \n let e = this.#e.querySelector(\".dialog__footer\");\n if (null === e) return;\n let t = this.#t?.assignedNodes(), o = !!t && t.length > 0;\n e.hidden = !o;\n };\n #c(e) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: !0,\n composed: !0,\n cancelable: !0,\n detail: {\n reason: e,\n element: this\n }\n });\n }\n #i(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n show() {\n this.open || (this.open = !0);\n }\n hide() {\n this.open && (this.open = !1);\n }\n static defineCustomElement(e = \"modal-element\") {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $d9c5053bade2d3f8$export$32589115725b904b);\n }\n}\n$d9c5053bade2d3f8$export$32589115725b904b.defineCustomElement();\n //# sourceMappingURL=modal-element-defined.js.map\n\n\nObject.defineProperty({}, \"FilesDropzone\", {\n get: function() {\n return $9351176e8d763a78$export$6ccd1735166caad9;\n },\n set: void 0,\n enumerable: !0,\n configurable: !0\n});\nlet $9351176e8d763a78$var$e = new Map([\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]), $9351176e8d763a78$var$t = [\n \".DS_Store\",\n \"Thumbs.db\"\n], $9351176e8d763a78$var$o = (t)=>{\n let { name: o } = t;\n if (o && -1 !== o.lastIndexOf(\".\") && !t.type) {\n let i = (o.split(\".\").pop() || \"\").toLowerCase(), r = $9351176e8d763a78$var$e.get(i);\n r && Object.defineProperty(t, \"type\", {\n value: r,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return t;\n}, $9351176e8d763a78$var$i = (e, t)=>{\n let i = $9351176e8d763a78$var$o(e);\n if (\"string\" != typeof i.path) {\n let { webkitRelativePath: o } = e;\n Object.defineProperty(i, \"path\", {\n value: \"string\" == typeof t ? t : o || e.name,\n writable: !1,\n configurable: !1,\n enumerable: !0\n });\n }\n return i;\n}, $9351176e8d763a78$var$r = async (e)=>await new Promise((t, o)=>{\n e.readEntries(t, o);\n }), $9351176e8d763a78$var$a = async (e)=>{\n let t = [], o = await $9351176e8d763a78$var$r(e);\n for(; o.length > 0;)t.push(...o), o = await $9351176e8d763a78$var$r(e);\n return t;\n}, $9351176e8d763a78$var$n = (e)=>new Promise((t, o)=>{\n e.file((o)=>t($9351176e8d763a78$var$i(o, e.fullPath)), o);\n }), $9351176e8d763a78$var$s = async (e)=>{\n let o = [], i = [];\n for (let t of e){\n if (\"file\" !== t.kind) continue;\n let e = t.getAsEntry ? t.getAsEntry() : t.webkitGetAsEntry();\n i.push(e);\n }\n for(; i.length > 0;){\n let e = i.shift();\n if (e) {\n if (e.isFile) {\n let i = await $9351176e8d763a78$var$n(e);\n -1 === $9351176e8d763a78$var$t.indexOf(i.name) && o.push(i);\n } else e.isDirectory && i.push(...await $9351176e8d763a78$var$a(e.createReader()));\n }\n }\n return o;\n}, $9351176e8d763a78$var$d = async (e)=>{\n let o = [];\n for (let r of e)-1 === $9351176e8d763a78$var$t.indexOf(r.name) && o.push($9351176e8d763a78$var$i(r));\n return o;\n}, $9351176e8d763a78$var$l = async (e)=>e.dataTransfer ? e.dataTransfer.items ? await $9351176e8d763a78$var$s(e.dataTransfer.items) : await $9351176e8d763a78$var$d(e.dataTransfer.files) : await $9351176e8d763a78$var$d(e.target.files), $9351176e8d763a78$var$p = \"files-dropzone\", $9351176e8d763a78$var$c = \"TOO_MANY_FILES\", $9351176e8d763a78$var$h = document.createElement(\"template\"), $9351176e8d763a78$var$u = `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$9351176e8d763a78$var$h.innerHTML = `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\nclass $9351176e8d763a78$export$6ccd1735166caad9 extends HTMLElement {\n #e = null;\n #t = null;\n constructor(){\n super(), this.shadowRoot || this.attachShadow({\n mode: \"open\"\n }).appendChild($9351176e8d763a78$var$h.content.cloneNode(!0)), this.shadowRoot && (this.#e = this.shadowRoot.getElementById(\"fileInput\"), this.#t = this.shadowRoot.getElementById(\"dropzoneEl\"));\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n attributeChangedCallback(e, t, o) {\n \"accept\" === e && t !== o && this.#e && (this.#e.accept = this.accept), \"disabled\" === e && t !== o && this.#e && (this.#e.disabled = this.disabled, this.disabled ? this.#t?.removeAttribute(\"tabindex\") : this.#t?.setAttribute(\"tabindex\", \"0\")), \"multiple\" === e && t !== o && this.#e && (this.#e.multiple = this.multiple), \"no-keyboard\" === e && t !== o && this.#t && (this.noKeyboard ? this.#t.removeAttribute(\"tabindex\") : this.#t.setAttribute(\"tabindex\", \"0\"));\n }\n connectedCallback() {\n this.#o(\"accept\"), this.#o(\"disabled\"), this.#o(\"maxFiles\"), this.#o(\"maxSize\"), this.#o(\"minSize\"), this.#o(\"multiple\"), this.#o(\"noClick\"), this.#o(\"noDrag\"), this.#o(\"noKeyboard\"), this.#o(\"autoFocus\"), this.#o(\"noStyle\"), this.#e?.addEventListener(\"change\", this.#i), this.#t?.addEventListener(\"dragenter\", this.#r), this.#t?.addEventListener(\"dragover\", this.#a), this.#t?.addEventListener(\"dragleave\", this.#n), this.#t?.addEventListener(\"drop\", this.#s), this.#t?.addEventListener(\"click\", this.#d), this.#t?.addEventListener(\"keyup\", this.#l), this.autoFocus && this.#t?.focus();\n }\n disconnectedCallback() {\n this.#e?.removeEventListener(\"change\", this.#i), this.#t?.removeEventListener(\"dragenter\", this.#r), this.#t?.removeEventListener(\"dragover\", this.#a), this.#t?.removeEventListener(\"dragleave\", this.#n), this.#t?.removeEventListener(\"drop\", this.#s), this.#t?.removeEventListener(\"click\", this.#d), this.#t?.removeEventListener(\"keyup\", this.#l);\n }\n get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(e) {\n this.setAttribute(\"accept\", null != e ? e.toString() : e);\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(e) {\n this.toggleAttribute(\"disabled\", !!e);\n }\n get maxFiles() {\n let e = Number(this.getAttribute(\"max-files\")) || 0;\n return e <= 0 ? 1 / 0 : Math.floor(Math.abs(e));\n }\n set maxFiles(e) {\n this.setAttribute(\"max-files\", null != e ? e.toString() : e);\n }\n get maxSize() {\n let e = this.getAttribute(\"max-size\");\n if (null === e) return 1 / 0;\n let t = Number(e);\n return Number.isNaN(t) ? 1 / 0 : t;\n }\n set maxSize(e) {\n this.setAttribute(\"max-size\", null != e ? e.toString() : e);\n }\n get minSize() {\n let e = this.getAttribute(\"min-size\");\n if (null === e) return 0;\n let t = Number(e);\n return Number.isNaN(t) ? 0 : t;\n }\n set minSize(e) {\n this.setAttribute(\"min-size\", null != e ? e.toString() : e);\n }\n get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(e) {\n this.toggleAttribute(\"multiple\", !!e);\n }\n get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(e) {\n this.toggleAttribute(\"no-click\", !!e);\n }\n get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(e) {\n this.toggleAttribute(\"no-drag\", !!e);\n }\n get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(e) {\n this.toggleAttribute(\"no-keyboard\", !!e);\n }\n get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(e) {\n this.toggleAttribute(\"auto-focus\", !!e);\n }\n get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(e) {\n this.toggleAttribute(\"no-style\", !!e);\n }\n #i = async (e)=>{\n try {\n this.#p(await $9351176e8d763a78$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n };\n #r = ()=>{\n this.disabled || this.noDrag || this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragenter`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #a = (e)=>{\n if (e.preventDefault(), this.disabled || this.noDrag) {\n e.dataTransfer.dropEffect = \"none\";\n return;\n }\n e.dataTransfer.dropEffect = \"copy\", this.#t && (this.#t.classList.add(\"dropzone--dragover\"), this.#t.part.add(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragover`, {\n bubbles: !0,\n composed: !0\n }));\n };\n #n = ()=>{\n this.disabled || this.noDrag || (this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\")), this.dispatchEvent(new Event(`${$9351176e8d763a78$var$p}-dragleave`, {\n bubbles: !0,\n composed: !0\n })));\n };\n #s = async (e)=>{\n if (!this.disabled && !this.noDrag) {\n e.preventDefault(), this.#t && (this.#t.classList.remove(\"dropzone--dragover\"), this.#t.part.remove(\"dropzone--dragover\"));\n try {\n this.#p(await $9351176e8d763a78$var$l(e));\n } catch (e) {\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-error`, {\n bubbles: !0,\n composed: !0,\n detail: {\n error: e\n }\n }));\n }\n }\n };\n #d = ()=>{\n this.disabled || this.noClick || this.#e?.click();\n };\n #l = (e)=>{\n this.disabled || this.noKeyboard || \" \" !== e.key && \"Enter\" !== e.key || this.#e?.click();\n };\n #p(e) {\n if (!Array.isArray(e) || !e.length) return;\n let t = [], o = [], i = e.length;\n if (!this.multiple && i > 1) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $9351176e8d763a78$var$c,\n message: \"Too many files selected. Only 1 file is allowed.\"\n }\n ]\n });\n else if (this.multiple && i > this.maxFiles) for (let t of e)o.push({\n file: t,\n errors: [\n {\n code: $9351176e8d763a78$var$c,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else for (let i of e){\n let e = function(e, t = \"\") {\n if (!t) return !0;\n let o = [\n ...new Set(t.split(\",\").map((e)=>e.trim()).filter(Boolean))\n ], i = e.type, r = i.replace(/\\/.*$/, \"\");\n for (let t of o)if (\".\" === t.charAt(0)) {\n if (-1 !== e.name.toLowerCase().indexOf(t.toLowerCase(), e.name.length - t.length)) return !0;\n } else if (/\\/\\*$/.test(t)) {\n if (r === t.replace(/\\/.*$/, \"\")) return !0;\n } else if (i === t) return !0;\n return !1;\n }(i, this.accept), r = i.size > this.maxSize, a = i.size < this.minSize;\n if (!e || r || a) {\n let t = [];\n e || t.push({\n code: \"INVALID_MIME_TYPE\",\n message: `File type \"${i.type}\" is not accepted.`\n }), r && t.push({\n code: \"FILE_TOO_LARGE\",\n message: `File size ${i.size} exceeds the maximum size of ${this.maxSize}.`\n }), a && t.push({\n code: \"FILE_TOO_SMALL\",\n message: `File size ${i.size} is smaller than the minimum size of ${this.minSize}.`\n }), o.push({\n file: i,\n errors: t\n });\n } else t.push(i);\n }\n this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t,\n rejectedFiles: o\n }\n })), t.length > 0 && this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop-accepted`, {\n bubbles: !0,\n composed: !0,\n detail: {\n acceptedFiles: t\n }\n })), o.length > 0 && this.dispatchEvent(new CustomEvent(`${$9351176e8d763a78$var$p}-drop-rejected`, {\n bubbles: !0,\n composed: !0,\n detail: {\n rejectedFiles: o\n }\n })), this.#e && (this.#e.value = this.#e.defaultValue);\n }\n openFileDialog() {\n this.disabled || this.#e?.click();\n }\n #o(e) {\n if (Object.prototype.hasOwnProperty.call(this, e)) {\n let t = this[e];\n delete this[e], this[e] = t;\n }\n }\n static defineCustomElement(e = $9351176e8d763a78$var$p) {\n \"undefined\" == typeof window || window.customElements.get(e) || window.customElements.define(e, $9351176e8d763a78$export$6ccd1735166caad9);\n }\n}\n$9351176e8d763a78$export$6ccd1735166caad9.defineCustomElement();\n\n\n\n\n/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */ const $4af3d380d1884504$export$30a014203d0d7e4f = (array, ...indexes)=>{\n if (!Array.isArray(array)) throw new TypeError(\"Expected an array for first argument\");\n return array.filter((_, i)=>indexes.indexOf(i) === -1);\n};\n\n\n/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */ const $17004b28c97c1306$export$e2a22331486dcca0 = (prefix = \"\", suffix = \"\")=>{\n const prefixString = typeof prefix === \"string\" && prefix !== \"\" ? prefix + \"-\" : \"\";\n const suffixString = typeof suffix === \"string\" && suffix !== \"\" ? \"-\" + suffix : \"\";\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n return `${prefixString}${randomString}${suffixString}`;\n};\n\n\nconst $65136e012e05e2d7$export$63e7bed68b07a85c = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/gif\",\n \"image/webp\",\n \"image/avif\"\n];\n\n\nvar $068eb37972da8c20$exports = {};\n$068eb37972da8c20$exports = new URL(\"Anton-Regular.e58ab3fe.ttf\", import.meta.url).toString();\n\n\nvar $2db6b38fbc5d48da$exports = {};\n$2db6b38fbc5d48da$exports = new URL(\"Oswald-Regular.89ec7d89.ttf\", import.meta.url).toString();\n\n\nvar $a0b1873abc1b077b$exports = {};\n$a0b1873abc1b077b$exports = new URL(\"Oswald-Bold.0f6a7ca6.ttf\", import.meta.url).toString();\n\n\nvar $df7c7f72fd04e02a$exports = {};\n$df7c7f72fd04e02a$exports = new URL(\"Roboto-Regular.ca197847.ttf\", import.meta.url).toString();\n\n\nvar $e4c2039736f96f5d$exports = {};\n$e4c2039736f96f5d$exports = new URL(\"Roboto-Bold.fdb9b54a.ttf\", import.meta.url).toString();\n\n\nvar $fbff28e47a938944$exports = {};\n$fbff28e47a938944$exports = new URL(\"RobotoCondensed-Regular.d585f5c7.ttf\", import.meta.url).toString();\n\n\nvar $d8f4a375a42d32f4$exports = {};\n$d8f4a375a42d32f4$exports = new URL(\"RobotoCondensed-Bold.e1f96d4b.ttf\", import.meta.url).toString();\n\n\nvar $7cfbda315cbb4209$exports = {};\n$7cfbda315cbb4209$exports = new URL(\"CourierPrime-Regular.3a25a501.ttf\", import.meta.url).toString();\n\n\nvar $6379185b16d8409f$exports = {};\n$6379185b16d8409f$exports = new URL(\"CourierPrime-Bold.3d6bf689.ttf\", import.meta.url).toString();\n\n\nvar $454f2b111c8d0078$exports = {};\n$454f2b111c8d0078$exports = new URL(\"OpenSans-Regular.edf9e01b.ttf\", import.meta.url).toString();\n\n\nvar $c05fcaeb63dbd733$exports = {};\n$c05fcaeb63dbd733$exports = new URL(\"OpenSans-Bold.8fceb72b.ttf\", import.meta.url).toString();\n\n\nconst $56b863c8b6be7003$export$6874249d87f2602a = [\n {\n name: \"Anton\",\n label: \"Anton\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($068eb37972da8c20$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Regular\",\n label: \"Oswald\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($2db6b38fbc5d48da$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Oswald-Bold\",\n label: \"Oswald Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($a0b1873abc1b077b$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"Roboto-Regular\",\n label: \"Roboto\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($df7c7f72fd04e02a$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"Roboto-Bold\",\n label: \"Roboto Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($e4c2039736f96f5d$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"RobotoCondensed-Regular\",\n label: \"Roboto Condensed\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($fbff28e47a938944$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"RobotoCondensed-Bold\",\n label: \"Roboto Condensed Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($d8f4a375a42d32f4$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"CourierPrime-Regular\",\n label: \"Courier Prime\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($7cfbda315cbb4209$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"CourierPrime-Bold\",\n label: \"Courier Prime Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($6379185b16d8409f$exports))),\n style: \"normal\",\n weight: \"700\"\n },\n {\n name: \"OpenSans-Regular\",\n label: \"Open Sans\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($454f2b111c8d0078$exports))),\n style: \"normal\",\n weight: \"400\"\n },\n {\n name: \"OpenSans-Bold\",\n label: \"Open Sans Bold\",\n path: (0, (/*@__PURE__*/$parcel$interopDefault($c05fcaeb63dbd733$exports))),\n style: \"normal\",\n weight: \"400\"\n }\n];\nconst $56b863c8b6be7003$export$59eceaef0c7797b2 = async (name, path, options = {})=>{\n try {\n const font = new FontFace(name, `url(${path})`, {\n ...options\n });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n\n\n\nconst $0374350c629f125f$export$6539e087749cf9d3 = async (options = {})=>{\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || \"\";\n if (!(0, $65136e012e05e2d7$export$63e7bed68b07a85c).includes(mimeType)) throw new Error(`This is not an accepted image format. Accepted MIME types are: ${(0, $65136e012e05e2d7$export$63e7bed68b07a85c).join(\", \")}`);\n return new File([\n blob\n ], options.filename || \"\", blob);\n};\n\n\nconst $3969451ff60cb8d5$var$errorsContainer = document.getElementById(\"errorsContainer\");\nconst $3969451ff60cb8d5$var$hideError = (evt)=>{\n const target = evt.currentTarget;\n target.removeEventListener(\"click\", $3969451ff60cb8d5$var$hideError);\n $3969451ff60cb8d5$var$errorsContainer.removeChild(target.parentNode);\n};\nconst $3969451ff60cb8d5$export$af04143326425dbd = (message = \"\", type = \"info\")=>{\n const types = [\n \"info\",\n \"warning\",\n \"danger\"\n ];\n if (!types.includes(type)) type = \"info\";\n const template = /* html */ `\n ${message}\n \n `;\n const div = document.createElement(\"div\");\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector(\"button\").addEventListener(\"click\", $3969451ff60cb8d5$var$hideError);\n $3969451ff60cb8d5$var$errorsContainer.appendChild(div);\n setTimeout(()=>div.classList.add(\"show\"), 100);\n};\n\n\n\nconst $224fa2388dce65c4$export$293a4b86a6fe2398 = (index, data = {})=>{\n const inputTemplate = /* html */ `\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n const fragment = document.createDocumentFragment();\n const div = document.createElement(\"div\");\n div.className = \"bg-light border shadow-sm mb-3 rounded\";\n div.setAttribute(\"data-section\", \"textBox\");\n div.setAttribute(\"data-index\", index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n return fragment.appendChild(div);\n};\n\n\nconst $64ef5d4149d7e6a5$export$e653a2de0f3a8b89 = (image, canvas, ctx, textOptions = [])=>{\n if (image == null) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n if (typeof image === \"string\") {\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n textOptions.forEach(function(item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n const multiplier = index + 1;\n const lineHeight = ctx.measureText(\"M\").width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split(\"\\n\");\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index)=>ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else textLines.forEach((text, index)=>{\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n ctx.restore();\n });\n};\n\n\nconst $85a5f86b715fe7db$var$videoModal = document.getElementById(\"videoModal\");\nconst $85a5f86b715fe7db$var$downloadModal = document.getElementById(\"downloadModal\");\nconst $85a5f86b715fe7db$var$canvas = document.getElementById(\"canvas\");\nconst $85a5f86b715fe7db$var$dropzoneEl = document.querySelector(\"files-dropzone\");\nconst $85a5f86b715fe7db$var$instructionsEl = document.getElementById(\"instructions\");\nconst $85a5f86b715fe7db$var$ctx = $85a5f86b715fe7db$var$canvas.getContext(\"2d\");\nconst $85a5f86b715fe7db$var$imageUploadMethodSelect = document.getElementById(\"imageUploadMethodSelect\");\nconst $85a5f86b715fe7db$var$fileSelectBtn = document.getElementById(\"fileSelectBtn\");\nconst $85a5f86b715fe7db$var$imageUrlForm = document.getElementById(\"imageUrlForm\");\nconst $85a5f86b715fe7db$var$addTextboxBtn = document.getElementById(\"addTextboxBtn\");\nconst $85a5f86b715fe7db$var$inputsContainer = document.getElementById(\"inputsContainer\");\nconst $85a5f86b715fe7db$var$generateMemeBtn = document.getElementById(\"generateMemeBtn\");\nconst $85a5f86b715fe7db$var$openVideoModalBtn = document.getElementById(\"openVideoModalBtn\");\nconst $85a5f86b715fe7db$var$downloadMemeBtn = document.getElementById(\"downloadMemeBtn\");\nconst $85a5f86b715fe7db$var$downloadMemePreview = document.getElementById(\"downloadMemePreview\");\nconst $85a5f86b715fe7db$var$webShareComponent = document.querySelector(\"web-share\");\nconst $85a5f86b715fe7db$var$galleryEl = document.getElementById(\"gallery\");\nconst $85a5f86b715fe7db$var$gallerySearchEl = document.getElementById(\"gallerySearch\");\nconst $85a5f86b715fe7db$var$galleryNoResultsEl = $85a5f86b715fe7db$var$galleryEl.querySelector(\".gallery__no-results\");\nconst $85a5f86b715fe7db$var$solidColorForm = document.getElementById(\"solidColorForm\");\nconst $85a5f86b715fe7db$var$uploadMethodEls = document.querySelectorAll(\".upload-method\");\nlet $85a5f86b715fe7db$var$selectedImage = null;\nlet $85a5f86b715fe7db$var$reqAnimFrame = null;\nconst $85a5f86b715fe7db$var$defaultTextOptions = {\n _isSettingsOpen: false,\n text: \"\",\n fillColor: \"#ffffff\",\n shadowColor: \"#000000\",\n font: \"Anton\",\n fontSize: 40,\n fontWeight: \"normal\",\n textAlign: \"center\",\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\nlet $85a5f86b715fe7db$var$textOptions = [\n {\n ...$85a5f86b715fe7db$var$defaultTextOptions\n }\n];\nconst $85a5f86b715fe7db$var$generateMeme = async ()=>{\n const dataUrl = $85a5f86b715fe7db$var$canvas.toDataURL(\"image/png\");\n // Prepare download link\n const downloadLink = dataUrl.replace(\"image/png\", \"image/octet-stream\");\n $85a5f86b715fe7db$var$downloadMemeBtn.download = `${(0, $17004b28c97c1306$export$e2a22331486dcca0)(\"meme\")}.png`;\n $85a5f86b715fe7db$var$downloadMemeBtn.href = downloadLink;\n $85a5f86b715fe7db$var$downloadMemePreview.src = downloadLink;\n // Prepare for sharing file\n if ((0, $7a2aca835bb05064$export$c37129e465f64ef0)()) try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: dataUrl,\n filename: `${(0, $17004b28c97c1306$export$e2a22331486dcca0)(\"meme\")}.png`,\n mimeType: \"image/png\"\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file && (0, $7a2aca835bb05064$export$c37129e465f64ef0)({\n files: [\n file\n ]\n })) {\n $85a5f86b715fe7db$var$webShareComponent.shareFiles = [\n file\n ];\n $85a5f86b715fe7db$var$webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n $85a5f86b715fe7db$var$downloadModal.open = true;\n};\nconst $85a5f86b715fe7db$var$onImageLoaded = (evt)=>{\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n $85a5f86b715fe7db$var$canvas.width = width;\n $85a5f86b715fe7db$var$canvas.height = height;\n $85a5f86b715fe7db$var$selectedImage = evt.target;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$generateMemeBtn.disabled = false;\n $85a5f86b715fe7db$var$canvas.hidden = false;\n $85a5f86b715fe7db$var$instructionsEl.hidden = true;\n};\nconst $85a5f86b715fe7db$var$handleSolidColorFormInput = (evt)=>{\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n if (evt.target === $85a5f86b715fe7db$var$solidColorForm[\"canvasColor\"]) $85a5f86b715fe7db$var$selectedImage = evt.target.value;\n if (typeof $85a5f86b715fe7db$var$selectedImage === \"string\") {\n $85a5f86b715fe7db$var$canvas.width = Number($85a5f86b715fe7db$var$solidColorForm[\"canvasWidth\"].value) || DEFAULT_WIDTH;\n $85a5f86b715fe7db$var$canvas.height = Number($85a5f86b715fe7db$var$solidColorForm[\"canvasHeight\"].value) || DEFAULT_HEIGHT;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$generateMemeBtn.disabled = false;\n $85a5f86b715fe7db$var$canvas.hidden = false;\n $85a5f86b715fe7db$var$instructionsEl.hidden = true;\n }\n};\nconst $85a5f86b715fe7db$var$handleFileSelect = (file)=>{\n if (!file) return;\n const image = new Image();\n const reader = new FileReader();\n reader.addEventListener(\"load\", function(evt) {\n const data = evt.target.result;\n image.addEventListener(\"load\", $85a5f86b715fe7db$var$onImageLoaded);\n image.src = data;\n });\n reader.readAsDataURL(file);\n};\nconst $85a5f86b715fe7db$var$handleOpenVideoModalButtonClick = ()=>{\n $85a5f86b715fe7db$var$videoModal.open = true;\n};\nconst $85a5f86b715fe7db$var$handleTextPropChange = (element, index, prop)=>{\n if (element.type === \"checkbox\") $85a5f86b715fe7db$var$textOptions[index][prop] = element.checked;\n else if (element.type === \"number\") $85a5f86b715fe7db$var$textOptions[index][prop] = Number(element.value);\n else $85a5f86b715fe7db$var$textOptions[index][prop] = element.value;\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n};\nconst $85a5f86b715fe7db$var$handleAddTextboxBtnClick = ()=>{\n const textOptionsLength = $85a5f86b715fe7db$var$textOptions.length;\n const newTextBox = (0, $224fa2388dce65c4$export$293a4b86a6fe2398)(textOptionsLength, $85a5f86b715fe7db$var$defaultTextOptions);\n $85a5f86b715fe7db$var$textOptions.push({\n ...$85a5f86b715fe7db$var$defaultTextOptions\n });\n $85a5f86b715fe7db$var$inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\nconst $85a5f86b715fe7db$var$handleImageUploadFromURL = async (evt)=>{\n evt.preventDefault();\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form[\"imageUrl\"].value;\n if (!imageUrl.trim()) return;\n submitButton.disabled = true;\n submitButton.querySelector(\".spinner\").hidden = false;\n submitButton.querySelector(\".label\").hidden = true;\n try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: imageUrl\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n } catch (err) {\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(`Failed to load image from \"${imageUrl}\".`, \"danger\");\n } finally{\n submitButton.disabled = false;\n submitButton.querySelector(\".spinner\").hidden = true;\n submitButton.querySelector(\".label\").hidden = false;\n }\n};\nconst $85a5f86b715fe7db$var$moveText = (offsetDir, sign, index)=>()=>{\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n if (offsetDir === \"offsetY\") {\n if (sign === \"-\") $85a5f86b715fe7db$var$textOptions[index].offsetY -= 1;\n if (sign === \"+\") $85a5f86b715fe7db$var$textOptions[index].offsetY += 1;\n offsetYInput.value = $85a5f86b715fe7db$var$textOptions[index].offsetY;\n }\n if (offsetDir === \"offsetX\") {\n if (sign === \"-\") $85a5f86b715fe7db$var$textOptions[index].offsetX -= 1;\n if (sign === \"+\") $85a5f86b715fe7db$var$textOptions[index].offsetX += 1;\n offsetXInput.value = $85a5f86b715fe7db$var$textOptions[index].offsetX;\n }\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n $85a5f86b715fe7db$var$reqAnimFrame = requestAnimationFrame($85a5f86b715fe7db$var$moveText(offsetDir, sign, index));\n };\nconst $85a5f86b715fe7db$var$handleUploadMethodChange = (evt)=>{\n $85a5f86b715fe7db$var$uploadMethodEls.forEach((el)=>el.hidden = el.id !== evt.target.value);\n};\nconst $85a5f86b715fe7db$var$handleFileSelectClick = ()=>{\n if (typeof $85a5f86b715fe7db$var$dropzoneEl.openFileDialog === \"function\") $85a5f86b715fe7db$var$dropzoneEl.openFileDialog();\n};\nconst $85a5f86b715fe7db$var$handleDropFilesAccepted = (evt)=>{\n const [file] = evt.detail.acceptedFiles;\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerInput = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"text\"]')) prop = \"text\";\n else if (element.matches('[data-input=\"fillColor\"]')) prop = \"fillColor\";\n else if (element.matches('[data-input=\"shadowColor\"]')) prop = \"shadowColor\";\n else if (element.matches('[data-input=\"font\"]')) prop = \"font\";\n else if (element.matches('[data-input=\"fontSize\"]')) prop = \"fontSize\";\n else if (element.matches('[data-input=\"fontWeight\"]')) prop = \"fontWeight\";\n else if (element.matches('[data-input=\"textAlign\"]')) prop = \"textAlign\";\n else if (element.matches('[data-input=\"shadowBlur\"]')) prop = \"shadowBlur\";\n else if (element.matches('[data-input=\"offsetY\"]')) prop = \"offsetY\";\n else if (element.matches('[data-input=\"offsetX\"]')) prop = \"offsetX\";\n else if (element.matches('[data-input=\"rotate\"]')) prop = \"rotate\";\n if (prop) $85a5f86b715fe7db$var$handleTextPropChange(element, index, prop);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerChange = (evt)=>{\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let prop;\n if (element.matches('[data-input=\"allCaps\"]')) prop = \"allCaps\";\n if (prop) $85a5f86b715fe7db$var$handleTextPropChange(element, index, prop);\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerClick = (evt)=>{\n const element = evt.target;\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\");\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n textBoxEls.forEach((el, index)=>{\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n if (el.getAttribute(\"data-index\") === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n $85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen = !$85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n $85a5f86b715fe7db$var$textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n let confirm = true;\n if ($85a5f86b715fe7db$var$textOptions[index].text.trim()) confirm = window.confirm(\"Are you sure you want to remove this text box?\");\n if (confirm) {\n $85a5f86b715fe7db$var$textOptions = (0, $4af3d380d1884504$export$30a014203d0d7e4f)($85a5f86b715fe7db$var$textOptions, index);\n $85a5f86b715fe7db$var$inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach((el)=>el.remove());\n $85a5f86b715fe7db$var$textOptions.forEach((item, index)=>$85a5f86b715fe7db$var$inputsContainer.appendChild((0, $224fa2388dce65c4$export$293a4b86a6fe2398)(index, item)));\n (0, $64ef5d4149d7e6a5$export$e653a2de0f3a8b89)($85a5f86b715fe7db$var$selectedImage, $85a5f86b715fe7db$var$canvas, $85a5f86b715fe7db$var$ctx, $85a5f86b715fe7db$var$textOptions);\n }\n }\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerdown = (evt)=>{\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n if (!textBoxEl) return;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute(\"data-index\"));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n const offsetDir = element.getAttribute(\"data-move\");\n const sign = element.getAttribute(\"data-sign\");\n $85a5f86b715fe7db$var$reqAnimFrame = requestAnimationFrame($85a5f86b715fe7db$var$moveText(offsetDir, sign, index));\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerup = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton) return;\n cancelAnimationFrame($85a5f86b715fe7db$var$reqAnimFrame);\n $85a5f86b715fe7db$var$reqAnimFrame = null;\n};\nconst $85a5f86b715fe7db$var$handleInputsContainerPointerout = (evt)=>{\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n if (!isOffsetYButton && !isOffsetXButton || !$85a5f86b715fe7db$var$reqAnimFrame) return;\n cancelAnimationFrame($85a5f86b715fe7db$var$reqAnimFrame);\n $85a5f86b715fe7db$var$reqAnimFrame = null;\n};\nconst $85a5f86b715fe7db$var$handleGalleryClick = async (evt)=>{\n const button = evt.target.closest(\"button\");\n if (!button) return;\n const img = button.querySelector(\"img\");\n try {\n const file = await (0, $0374350c629f125f$export$6539e087749cf9d3)({\n url: img.src\n }).catch((err)=>(0, $3969451ff60cb8d5$export$af04143326425dbd)(err.message, \"danger\"));\n if (file) $85a5f86b715fe7db$var$handleFileSelect(file);\n } catch (err) {\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(`Failed to load image: \"${img.alt}\".`, \"danger\");\n }\n};\nconst $85a5f86b715fe7db$var$handleGallerySearchInput = (evt)=>{\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = $85a5f86b715fe7db$var$galleryEl.querySelectorAll(\"button\");\n galleryItems.forEach((item)=>{\n const alt = (item.querySelector(\"img\").getAttribute(\"alt\") || \"\").toLowerCase();\n item.hidden = !alt.includes(query);\n });\n $85a5f86b715fe7db$var$galleryNoResultsEl.hidden = !!$85a5f86b715fe7db$var$galleryEl.querySelector(\"button:not([hidden])\");\n};\nconst $85a5f86b715fe7db$var$handleWebShareError = ()=>{\n $85a5f86b715fe7db$var$downloadModal.open = false;\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(\"There was an error while trying to share your meme.\", \"danger\");\n};\nconst $85a5f86b715fe7db$var$handleCapturePhotoError = (evt)=>{\n console.error(evt.detail.error);\n (0, $3969451ff60cb8d5$export$af04143326425dbd)(evt.detail.error.message, \"danger\");\n};\nconst $85a5f86b715fe7db$var$handleCapturePhotoSuccess = (evt)=>{\n $85a5f86b715fe7db$var$videoModal.open = false;\n const image = new Image();\n image.addEventListener(\"load\", $85a5f86b715fe7db$var$onImageLoaded);\n image.src = evt.detail.dataURI;\n};\nconst $85a5f86b715fe7db$var$handleModalOpen = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $85a5f86b715fe7db$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === \"function\") capturePhotoComponent.startVideoStream();\n }\n};\nconst $85a5f86b715fe7db$var$handleModalClose = (evt)=>{\n if (evt.target.id === \"videoModal\") {\n const capturePhotoComponent = $85a5f86b715fe7db$var$videoModal.querySelector(\"capture-photo\");\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === \"function\") capturePhotoComponent.stopVideoStream();\n }\n};\n$85a5f86b715fe7db$var$fileSelectBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleFileSelectClick);\n$85a5f86b715fe7db$var$openVideoModalBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleOpenVideoModalButtonClick);\n$85a5f86b715fe7db$var$addTextboxBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$handleAddTextboxBtnClick);\n$85a5f86b715fe7db$var$generateMemeBtn.addEventListener(\"click\", $85a5f86b715fe7db$var$generateMeme);\n$85a5f86b715fe7db$var$downloadMemeBtn.addEventListener(\"click\", ()=>$85a5f86b715fe7db$var$downloadModal.open = false);\n$85a5f86b715fe7db$var$imageUrlForm.addEventListener(\"submit\", $85a5f86b715fe7db$var$handleImageUploadFromURL);\n$85a5f86b715fe7db$var$dropzoneEl.addEventListener(\"files-dropzone-drop-accepted\", $85a5f86b715fe7db$var$handleDropFilesAccepted);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"input\", $85a5f86b715fe7db$var$handleInputsContainerInput);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"change\", $85a5f86b715fe7db$var$handleInputsContainerChange);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"click\", $85a5f86b715fe7db$var$handleInputsContainerClick);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerdown\", $85a5f86b715fe7db$var$handleInputsContainerPointerdown);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerup\", $85a5f86b715fe7db$var$handleInputsContainerPointerup);\n$85a5f86b715fe7db$var$inputsContainer.addEventListener(\"pointerout\", $85a5f86b715fe7db$var$handleInputsContainerPointerout);\n$85a5f86b715fe7db$var$imageUploadMethodSelect.addEventListener(\"change\", $85a5f86b715fe7db$var$handleUploadMethodChange);\n$85a5f86b715fe7db$var$galleryEl.addEventListener(\"click\", $85a5f86b715fe7db$var$handleGalleryClick);\n$85a5f86b715fe7db$var$gallerySearchEl.addEventListener(\"input\", $85a5f86b715fe7db$var$handleGallerySearchInput);\n$85a5f86b715fe7db$var$solidColorForm.addEventListener(\"input\", $85a5f86b715fe7db$var$handleSolidColorFormInput);\ndocument.addEventListener(\"web-share:error\", $85a5f86b715fe7db$var$handleWebShareError);\ndocument.addEventListener(\"capture-photo:error\", $85a5f86b715fe7db$var$handleCapturePhotoError);\ndocument.addEventListener(\"capture-photo:success\", $85a5f86b715fe7db$var$handleCapturePhotoSuccess);\ndocument.addEventListener(\"me-open\", $85a5f86b715fe7db$var$handleModalOpen);\ndocument.addEventListener(\"me-close\", $85a5f86b715fe7db$var$handleModalClose);\n$85a5f86b715fe7db$var$galleryEl.querySelectorAll(\"button > img\")?.forEach((image)=>{\n image.setAttribute(\"title\", image.getAttribute(\"alt\"));\n});\n$85a5f86b715fe7db$var$textOptions.forEach((item, index)=>{\n $85a5f86b715fe7db$var$inputsContainer.appendChild((0, $224fa2388dce65c4$export$293a4b86a6fe2398)(index, item));\n});\n$85a5f86b715fe7db$var$dropzoneEl.accept = (0, $65136e012e05e2d7$export$63e7bed68b07a85c);\n(0, $56b863c8b6be7003$export$6874249d87f2602a).forEach(({ name: name, path: path, style: style, weight: weight })=>{\n (0, $56b863c8b6be7003$export$59eceaef0c7797b2)(name, path, {\n style: style,\n weight: weight\n });\n});\n\n\n//# sourceMappingURL=index.b9185ed0.js.map\n","\"use strict\";\n\nvar mapping = new Map();\nfunction register(baseUrl, manifest) {\n for (var i = 0; i < manifest.length - 1; i += 2) {\n mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n }\n}\nfunction resolve(id) {\n var resolved = mapping.get(id);\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(new __parcel__URL__(\"\").toString(),JSON.parse(\"[\\\"eq2Ey\\\",\\\"index.b9185ed0.js\\\",\\\"9jzSS\\\",\\\"Anton-Regular.e58ab3fe.ttf\\\",\\\"hr5Pp\\\",\\\"Oswald-Regular.89ec7d89.ttf\\\",\\\"5TebC\\\",\\\"Oswald-Bold.0f6a7ca6.ttf\\\",\\\"3ENF9\\\",\\\"Roboto-Regular.ca197847.ttf\\\",\\\"5yAXK\\\",\\\"Roboto-Bold.fdb9b54a.ttf\\\",\\\"k2KZ9\\\",\\\"RobotoCondensed-Regular.d585f5c7.ttf\\\",\\\"4h4UX\\\",\\\"RobotoCondensed-Bold.e1f96d4b.ttf\\\",\\\"8pomG\\\",\\\"CourierPrime-Regular.3a25a501.ttf\\\",\\\"l2v76\\\",\\\"CourierPrime-Bold.3d6bf689.ttf\\\",\\\"eKMWr\\\",\\\"OpenSans-Regular.edf9e01b.ttf\\\",\\\"dXO1Z\\\",\\\"OpenSans-Bold.8fceb72b.ttf\\\",\\\"9FH7D\\\",\\\"index.58beac5f.css\\\"]\"));","import { isWebShareSupported } from '@georapbox/web-share-element/dist/is-web-share-supported.js';\nimport '@georapbox/web-share-element/dist/web-share-defined.js';\nimport '@georapbox/capture-photo-element/dist/capture-photo-defined.js';\nimport '@georapbox/modal-element/dist/modal-element-defined.js';\nimport '@georapbox/files-dropzone-element/dist/files-dropzone-defined.js';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport '../css/main.css';\nimport { arrayRemove } from './utils/array-remove.js';\nimport { uid } from './utils/uid.js';\nimport { ACCEPTED_MIME_TYPES } from './constants.js';\nimport { customFonts, loadCustomFont } from './custom-fonts.js';\nimport { fileFromUrl } from './file-from-url.js';\nimport { toastAlert } from './toast-alert.js';\nimport { createTextBox } from './create-text-box.js';\nimport { drawCanvas } from './draw-canvas.js';\n\nconst videoModal = document.getElementById('videoModal');\nconst downloadModal = document.getElementById('downloadModal');\nconst canvas = document.getElementById('canvas');\nconst dropzoneEl = document.querySelector('files-dropzone');\nconst instructionsEl = document.getElementById('instructions');\nconst ctx = canvas.getContext('2d');\nconst imageUploadMethodSelect = document.getElementById('imageUploadMethodSelect');\nconst fileSelectBtn = document.getElementById('fileSelectBtn');\nconst imageUrlForm = document.getElementById('imageUrlForm');\nconst addTextboxBtn = document.getElementById('addTextboxBtn');\nconst inputsContainer = document.getElementById('inputsContainer');\nconst generateMemeBtn = document.getElementById('generateMemeBtn');\nconst openVideoModalBtn = document.getElementById('openVideoModalBtn');\nconst downloadMemeBtn = document.getElementById('downloadMemeBtn');\nconst downloadMemePreview = document.getElementById('downloadMemePreview');\nconst webShareComponent = document.querySelector('web-share');\nconst galleryEl = document.getElementById('gallery');\nconst gallerySearchEl = document.getElementById('gallerySearch');\nconst galleryNoResultsEl = galleryEl.querySelector('.gallery__no-results');\nconst solidColorForm = document.getElementById('solidColorForm');\nconst uploadMethodEls = document.querySelectorAll('.upload-method');\nlet selectedImage = null;\nlet reqAnimFrame = null;\n\nconst defaultTextOptions = {\n _isSettingsOpen: false,\n text: '',\n fillColor: '#ffffff',\n shadowColor: '#000000',\n font: 'Anton',\n fontSize: 40,\n fontWeight: 'normal',\n textAlign: 'center',\n shadowBlur: 3,\n offsetY: 0,\n offsetX: 0,\n rotate: 0,\n allCaps: true\n};\n\nlet textOptions = [\n { ...defaultTextOptions }\n];\n\nconst generateMeme = async () => {\n const dataUrl = canvas.toDataURL('image/png');\n\n // Prepare download link\n const downloadLink = dataUrl.replace('image/png', 'image/octet-stream');\n downloadMemeBtn.download = `${uid('meme')}.png`;\n downloadMemeBtn.href = downloadLink;\n downloadMemePreview.src = downloadLink;\n\n // Prepare for sharing file\n if (isWebShareSupported()) {\n try {\n const file = await fileFromUrl({\n url: dataUrl,\n filename: `${uid('meme')}.png`,\n mimeType: 'image/png'\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file && isWebShareSupported({ files: [file] })) {\n webShareComponent.shareFiles = [file];\n webShareComponent.hidden = false;\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n downloadModal.open = true;\n};\n\nconst onImageLoaded = evt => {\n const MAX_WIDTH = 800;\n const MAX_HEIGHT = 600;\n let width = evt.target.width;\n let height = evt.target.height;\n\n if (width > height) {\n if (width > MAX_WIDTH) {\n height *= MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n } else {\n if (height > MAX_HEIGHT) {\n width *= MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n }\n canvas.width = width;\n canvas.height = height;\n\n selectedImage = evt.target;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n};\n\nconst handleSolidColorFormInput = evt => {\n const DEFAULT_WIDTH = 600;\n const DEFAULT_HEIGHT = 400;\n\n if (evt.target === solidColorForm['canvasColor']) {\n selectedImage = evt.target.value;\n }\n\n if (typeof selectedImage === 'string') {\n canvas.width = Number(solidColorForm['canvasWidth'].value) || DEFAULT_WIDTH;\n canvas.height = Number(solidColorForm['canvasHeight'].value) || DEFAULT_HEIGHT;\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n generateMemeBtn.disabled = false;\n canvas.hidden = false;\n instructionsEl.hidden = true;\n }\n};\n\nconst handleFileSelect = file => {\n if (!file) {\n return;\n }\n\n const image = new Image();\n const reader = new FileReader();\n\n reader.addEventListener('load', function (evt) {\n const data = evt.target.result;\n image.addEventListener('load', onImageLoaded);\n image.src = data;\n });\n\n reader.readAsDataURL(file);\n};\n\nconst handleOpenVideoModalButtonClick = () => {\n videoModal.open = true;\n};\n\nconst handleTextPropChange = (element, index, prop) => {\n if (element.type === 'checkbox') {\n textOptions[index][prop] = element.checked;\n } else if (element.type === 'number') {\n textOptions[index][prop] = Number(element.value);\n } else {\n textOptions[index][prop] = element.value;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n};\n\nconst handleAddTextboxBtnClick = () => {\n const textOptionsLength = textOptions.length;\n const newTextBox = createTextBox(textOptionsLength, defaultTextOptions);\n\n textOptions.push({ ...defaultTextOptions });\n inputsContainer.appendChild(newTextBox);\n newTextBox.querySelector('[data-input=\"text\"]').focus();\n};\n\nconst handleImageUploadFromURL = async evt => {\n evt.preventDefault();\n\n const form = evt.target;\n const submitButton = form.querySelector('button[type=\"submit\"]');\n const imageUrl = form['imageUrl'].value;\n\n if (!imageUrl.trim()) {\n return;\n }\n\n submitButton.disabled = true;\n submitButton.querySelector('.spinner').hidden = false;\n submitButton.querySelector('.label').hidden = true;\n\n try {\n const file = await fileFromUrl({\n url: imageUrl\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image from \"${imageUrl}\".`, 'danger');\n } finally {\n submitButton.disabled = false;\n submitButton.querySelector('.spinner').hidden = true;\n submitButton.querySelector('.label').hidden = false;\n }\n};\n\nconst moveText = (offsetDir, sign, index) => () => {\n const textBoxSection = document.querySelectorAll('[data-section=\"textBox\"]')[index];\n const offsetYInput = textBoxSection.querySelector('[data-input=\"offsetY\"]');\n const offsetXInput = textBoxSection.querySelector('[data-input=\"offsetX\"]');\n\n if (offsetDir === 'offsetY') {\n if (sign === '-') {\n textOptions[index].offsetY -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetY += 1;\n }\n\n offsetYInput.value = textOptions[index].offsetY;\n }\n\n if (offsetDir === 'offsetX') {\n if (sign === '-') {\n textOptions[index].offsetX -= 1;\n }\n\n if (sign === '+') {\n textOptions[index].offsetX += 1;\n }\n\n offsetXInput.value = textOptions[index].offsetX;\n }\n\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleUploadMethodChange = evt => {\n uploadMethodEls.forEach(el => el.hidden = el.id !== evt.target.value);\n};\n\nconst handleFileSelectClick = () => {\n if (typeof dropzoneEl.openFileDialog === 'function') {\n dropzoneEl.openFileDialog();\n }\n};\n\nconst handleDropFilesAccepted = evt => {\n const [file] = evt.detail.acceptedFiles;\n\n if (file) {\n handleFileSelect(file);\n }\n};\n\nconst handleInputsContainerInput = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"text\"]')) {\n prop = 'text';\n } else if (element.matches('[data-input=\"fillColor\"]')) {\n prop = 'fillColor';\n } else if (element.matches('[data-input=\"shadowColor\"]')) {\n prop = 'shadowColor';\n } else if (element.matches('[data-input=\"font\"]')) {\n prop = 'font';\n } else if (element.matches('[data-input=\"fontSize\"]')) {\n prop = 'fontSize';\n } else if (element.matches('[data-input=\"fontWeight\"]')) {\n prop = 'fontWeight';\n } else if (element.matches('[data-input=\"textAlign\"]')) {\n prop = 'textAlign';\n } else if (element.matches('[data-input=\"shadowBlur\"]')) {\n prop = 'shadowBlur';\n } else if (element.matches('[data-input=\"offsetY\"]')) {\n prop = 'offsetY';\n } else if (element.matches('[data-input=\"offsetX\"]')) {\n prop = 'offsetX';\n } else if (element.matches('[data-input=\"rotate\"]')) {\n prop = 'rotate';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerChange = evt => {\n const element = evt.target;\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let prop;\n\n if (element.matches('[data-input=\"allCaps\"]')) {\n prop = 'allCaps';\n }\n\n if (prop) {\n handleTextPropChange(element, index, prop);\n }\n};\n\nconst handleInputsContainerClick = evt => {\n const element = evt.target;\n\n if (element.matches('[data-button=\"settings\"]')) {\n const textBoxIndex = element.closest('[data-section=\"textBox\"]').getAttribute('data-index');\n const textBoxEls = document.querySelectorAll('[data-section=\"textBox\"]');\n\n textBoxEls.forEach((el, index) => {\n const settingsEl = el.querySelector('[data-section=\"settings\"]');\n\n if (el.getAttribute('data-index') === textBoxIndex) {\n settingsEl.hidden = !settingsEl.hidden;\n textOptions[index]._isSettingsOpen = !textOptions[index]._isSettingsOpen;\n } else {\n settingsEl.hidden = true;\n textOptions[index]._isSettingsOpen = false;\n }\n });\n }\n\n if (element.matches('[data-button=\"delete-text-box\"]')) {\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n let confirm = true;\n\n if (textOptions[index].text.trim()) {\n confirm = window.confirm('Are you sure you want to remove this text box?');\n }\n\n if (confirm) {\n textOptions = arrayRemove(textOptions, index);\n inputsContainer.querySelectorAll('[data-section=\"textBox\"]').forEach(el => el.remove());\n textOptions.forEach((item, index) => inputsContainer.appendChild(createTextBox(index, item)));\n drawCanvas(selectedImage, canvas, ctx, textOptions);\n }\n }\n};\n\nconst handleInputsContainerPointerdown = evt => {\n const element = evt.target;\n const textBoxEl = element.closest('[data-section=\"textBox\"]');\n\n if (!textBoxEl) {\n return;\n }\n\n const index = Number(element.closest('[data-section=\"textBox\"]').getAttribute('data-index'));\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n const offsetDir = element.getAttribute('data-move');\n const sign = element.getAttribute('data-sign');\n\n reqAnimFrame = requestAnimationFrame(moveText(offsetDir, sign, index));\n};\n\nconst handleInputsContainerPointerup = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleInputsContainerPointerout = evt => {\n const element = evt.target;\n const isOffsetYButton = element.matches('[data-move=\"offsetY\"]');\n const isOffsetXButton = element.matches('[data-move=\"offsetX\"]');\n\n if (!isOffsetYButton && !isOffsetXButton || !reqAnimFrame) {\n return;\n }\n\n cancelAnimationFrame(reqAnimFrame);\n reqAnimFrame = null;\n};\n\nconst handleGalleryClick = async evt => {\n const button = evt.target.closest('button');\n\n if (!button) {\n return;\n }\n\n const img = button.querySelector('img');\n\n try {\n const file = await fileFromUrl({\n url: img.src\n }).catch(err => toastAlert(err.message, 'danger'));\n\n if (file) {\n handleFileSelect(file);\n }\n } catch (err) {\n toastAlert(`Failed to load image: \"${img.alt}\".`, 'danger');\n }\n};\n\nconst handleGallerySearchInput = evt => {\n const query = evt.target.value.toLowerCase().trim();\n const galleryItems = galleryEl.querySelectorAll('button');\n\n galleryItems.forEach(item => {\n const alt = (item.querySelector('img').getAttribute('alt') || '').toLowerCase();\n item.hidden = !alt.includes(query);\n });\n\n galleryNoResultsEl.hidden = !!galleryEl.querySelector('button:not([hidden])');\n};\n\nconst handleWebShareError = () => {\n downloadModal.open = false;\n toastAlert('There was an error while trying to share your meme.', 'danger');\n};\n\nconst handleCapturePhotoError = evt => {\n console.error(evt.detail.error);\n toastAlert(evt.detail.error.message, 'danger');\n};\n\nconst handleCapturePhotoSuccess = evt => {\n videoModal.open = false;\n const image = new Image();\n image.addEventListener('load', onImageLoaded);\n image.src = evt.detail.dataURI;\n};\n\nconst handleModalOpen = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.startVideoStream === 'function') {\n capturePhotoComponent.startVideoStream();\n }\n }\n};\n\nconst handleModalClose = evt => {\n if (evt.target.id === 'videoModal') {\n const capturePhotoComponent = videoModal.querySelector('capture-photo');\n\n if (capturePhotoComponent && typeof capturePhotoComponent.stopVideoStream === 'function') {\n capturePhotoComponent.stopVideoStream();\n }\n }\n};\n\nfileSelectBtn.addEventListener('click', handleFileSelectClick);\nopenVideoModalBtn.addEventListener('click', handleOpenVideoModalButtonClick);\naddTextboxBtn.addEventListener('click', handleAddTextboxBtnClick);\ngenerateMemeBtn.addEventListener('click', generateMeme);\ndownloadMemeBtn.addEventListener('click', () => downloadModal.open = false);\nimageUrlForm.addEventListener('submit', handleImageUploadFromURL);\ndropzoneEl.addEventListener('files-dropzone-drop-accepted', handleDropFilesAccepted);\ninputsContainer.addEventListener('input', handleInputsContainerInput);\ninputsContainer.addEventListener('change', handleInputsContainerChange);\ninputsContainer.addEventListener('click', handleInputsContainerClick);\ninputsContainer.addEventListener('pointerdown', handleInputsContainerPointerdown);\ninputsContainer.addEventListener('pointerup', handleInputsContainerPointerup);\ninputsContainer.addEventListener('pointerout', handleInputsContainerPointerout);\nimageUploadMethodSelect.addEventListener('change', handleUploadMethodChange);\ngalleryEl.addEventListener('click', handleGalleryClick);\ngallerySearchEl.addEventListener('input', handleGallerySearchInput);\nsolidColorForm.addEventListener('input', handleSolidColorFormInput);\ndocument.addEventListener('web-share:error', handleWebShareError);\ndocument.addEventListener('capture-photo:error', handleCapturePhotoError);\ndocument.addEventListener('capture-photo:success', handleCapturePhotoSuccess);\ndocument.addEventListener('me-open', handleModalOpen);\ndocument.addEventListener('me-close', handleModalClose);\n\ngalleryEl.querySelectorAll('button > img')?.forEach(image => {\n image.setAttribute('title', image.getAttribute('alt'));\n});\n\ntextOptions.forEach((item, index) => {\n inputsContainer.appendChild(createTextBox(index, item));\n});\n\ndropzoneEl.accept = ACCEPTED_MIME_TYPES;\n\ncustomFonts.forEach(({ name, path, style, weight }) => {\n loadCustomFont(name, path, { style, weight });\n});\n","function a(a){return null!==a&&\"object\"==typeof a?\"share\"in navigator&&\"canShare\"in navigator&&navigator.canShare(a):\"share\"in navigator}export{a as isWebShareSupported};\n//# sourceMappingURL=is-web-share-supported.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $e179325634270afd$exports = {};\n\n$parcel$export($e179325634270afd$exports, \"WebShare\", function () { return $e179325634270afd$export$30b344bef3e55b67; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */ const $e179325634270afd$var$styles = /* css */ `\n :host {\n display: inline-block;\n }\n`;\nconst $e179325634270afd$var$template = document.createElement(\"template\");\n$e179325634270afd$var$template.innerHTML = /* html */ `\n \n \n`;\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */ class $e179325634270afd$export$30b344bef3e55b67 extends HTMLElement {\n /** @type {Nullable} */ #buttonSlot;\n /** @type {Nullable} */ #buttonEl;\n /** @type {File[]} */ #files = [];\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\",\n delegatesFocus: true\n });\n shadowRoot.appendChild($e179325634270afd$var$template.content.cloneNode(true));\n }\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n static get observedAttributes() {\n return [\n \"disabled\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"disabled\" && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute(\"disabled\", this.disabled);\n this.#buttonEl.setAttribute(\"aria-disabled\", this.disabled.toString());\n if (this.#buttonEl.part && this.#buttonEl.part.contains(\"button\")) this.#buttonEl.part.toggle(\"button--disabled\", this.disabled);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"shareUrl\");\n this.#upgradeProperty(\"shareTitle\");\n this.#upgradeProperty(\"shareText\");\n this.#upgradeProperty(\"shareFiles\");\n this.#upgradeProperty(\"disabled\");\n this.#buttonSlot?.addEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.addEventListener(\"click\", this.#handleClick);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#buttonSlot?.removeEventListener(\"slotchange\", this.#handleSlotChange);\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n }\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */ get shareUrl() {\n return this.getAttribute(\"share-url\") || \"\";\n }\n set shareUrl(value) {\n this.setAttribute(\"share-url\", value);\n }\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */ get shareTitle() {\n return this.getAttribute(\"share-title\") || \"\";\n }\n set shareTitle(value) {\n this.setAttribute(\"share-title\", value);\n }\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */ get shareText() {\n return this.getAttribute(\"share-text\") || \"\";\n }\n set shareText(value) {\n this.setAttribute(\"share-text\", value);\n }\n /**\n * @type {File[]} - The files to share.\n */ get shareFiles() {\n return this.#files;\n }\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) this.#files = value;\n }\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */ async share() {\n if (this.disabled) return;\n try {\n /** @type {ShareData} */ const shareData = {};\n if (this.shareUrl) shareData.url = this.shareUrl;\n if (this.shareTitle) shareData.title = this.shareTitle;\n if (this.shareText) shareData.text = this.shareText;\n if (Array.isArray(this.shareFiles) && this.shareFiles.length > 0 && navigator.canShare && navigator.canShare({\n files: this.shareFiles\n })) shareData.files = this.shareFiles;\n await navigator.share(shareData);\n this.dispatchEvent(new CustomEvent(\"web-share:success\", {\n bubbles: true,\n composed: true,\n detail: {\n shareData: shareData\n }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n this.dispatchEvent(new CustomEvent(\"web-share:abort\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n return;\n }\n this.dispatchEvent(new CustomEvent(\"web-share:error\", {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */ #handleClick = (evt)=>{\n evt.preventDefault();\n if (this.disabled) return;\n this.share();\n };\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */ #handleSlotChange = (evt)=>{\n if (evt.target && evt.target.name === \"button\") {\n this.#buttonEl?.removeEventListener(\"click\", this.#handleClick);\n this.#buttonEl = this.#getButton();\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener(\"click\", this.#handleClick);\n if (this.#buttonEl.nodeName !== \"BUTTON\" && !this.#buttonEl.hasAttribute(\"role\")) this.#buttonEl.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */ #getButton() {\n if (!this.#buttonSlot) return null;\n return this.#buttonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n static defineCustomElement(elementName = \"web-share\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $e179325634270afd$export$30b344bef3e55b67);\n }\n}\n\n\n(0, $e179325634270afd$export$30b344bef3e55b67).defineCustomElement();\n\n\nexport {$e179325634270afd$export$30b344bef3e55b67 as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","// @ts-check\n\n/**\n * Check if Web Share API is supported by the platform.\n *\n * @param {import('./web-share').ShareData} [options]\n * @returns {boolean} Returns `true` if Web Share API is supported; otherwise `false`.\n */\nfunction isWebShareSupported(options) {\n if (options !== null && typeof options === 'object') {\n return 'share' in navigator && 'canShare' in navigator && navigator.canShare(options);\n }\n\n return 'share' in navigator;\n}\n\nexport { isWebShareSupported };\n","Object.defineProperty({},\"WebShare\",{get:function(){return s},set:void 0,enumerable:!0,configurable:!0});let t=`\n :host {\n display: inline-block;\n }\n`,e=document.createElement(\"template\");e.innerHTML=`\n \n \n`;class s extends HTMLElement{#t;#e;#s=[];constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\",delegatesFocus:!0}).appendChild(e.content.cloneNode(!0)),this.#t=this.shadowRoot?.querySelector('slot[name=\"button\"]')||null,this.#e=this.#i()}static get observedAttributes(){return[\"disabled\"]}attributeChangedCallback(t,e,s){\"disabled\"===t&&e!==s&&this.#e&&(this.#e.toggleAttribute(\"disabled\",this.disabled),this.#e.setAttribute(\"aria-disabled\",this.disabled.toString()),this.#e.part&&this.#e.part.contains(\"button\")&&this.#e.part.toggle(\"button--disabled\",this.disabled))}connectedCallback(){this.#r(\"shareUrl\"),this.#r(\"shareTitle\"),this.#r(\"shareText\"),this.#r(\"shareFiles\"),this.#r(\"disabled\"),this.#t?.addEventListener(\"slotchange\",this.#a),this.#e?.addEventListener(\"click\",this.#n)}disconnectedCallback(){this.#t?.removeEventListener(\"slotchange\",this.#a),this.#e?.removeEventListener(\"click\",this.#n)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(t){this.toggleAttribute(\"disabled\",!!t)}get shareUrl(){return this.getAttribute(\"share-url\")||\"\"}set shareUrl(t){this.setAttribute(\"share-url\",t)}get shareTitle(){return this.getAttribute(\"share-title\")||\"\"}set shareTitle(t){this.setAttribute(\"share-title\",t)}get shareText(){return this.getAttribute(\"share-text\")||\"\"}set shareText(t){this.setAttribute(\"share-text\",t)}get shareFiles(){return this.#s}set shareFiles(t){Array.isArray(t)&&t.length>0&&(this.#s=t)}async share(){if(!this.disabled)try{let t={};this.shareUrl&&(t.url=this.shareUrl),this.shareTitle&&(t.title=this.shareTitle),this.shareText&&(t.text=this.shareText),Array.isArray(this.shareFiles)&&this.shareFiles.length>0&&navigator.canShare&&navigator.canShare({files:this.shareFiles})&&(t.files=this.shareFiles),await navigator.share(t),this.dispatchEvent(new CustomEvent(\"web-share:success\",{bubbles:!0,composed:!0,detail:{shareData:t}}))}catch(t){if(t instanceof Error&&\"AbortError\"===t.name){this.dispatchEvent(new CustomEvent(\"web-share:abort\",{bubbles:!0,composed:!0,detail:{error:t}}));return}this.dispatchEvent(new CustomEvent(\"web-share:error\",{bubbles:!0,composed:!0,detail:{error:t}}))}}#n=t=>{t.preventDefault(),this.disabled||this.share()};#a=t=>{t.target&&\"button\"===t.target.name&&(this.#e?.removeEventListener(\"click\",this.#n),this.#e=this.#i(),this.#e&&(this.#e.addEventListener(\"click\",this.#n),\"BUTTON\"===this.#e.nodeName||this.#e.hasAttribute(\"role\")||this.#e.setAttribute(\"role\",\"button\")))};#i(){return this.#t&&this.#t.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"button\"===t.getAttribute(\"slot\"))||null}#r(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}static defineCustomElement(t=\"web-share\"){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,s)}}s.defineCustomElement();export{s as WebShare};\n//# sourceMappingURL=web-share-defined.js.map\n","import { WebShare } from './web-share.js';\n\nWebShare.defineCustomElement();\n\nexport { WebShare };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * Represents the data to share.\n *\n * @typedef {Object} ShareData\n * @property {string} [url] - The URL to share.\n * @property {string} [title] - The title to share.\n * @property {string} [text] - The text to share.\n * @property {File[]} [files] - The files to share.\n */\n\nconst styles = /* css */`\n :host {\n display: inline-block;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */ `\n \n \n`;\n\n/**\n * @summary A custom element that provides a button to share content.\n * @documentation https://github.com/georapbox/web-share-element\n *\n * @tagname web-share - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {boolean} disabled - Indicates whether the button is disabled.\n * @property {string} shareUrl - The URL to share.\n * @property {string} shareTitle - The title to share.\n * @property {string} shareText - The text to share.\n * @property {File[]} shareFiles - The files to share.\n *\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {string} share-url - Reflects the shareUrl property.\n * @attribute {string} share-title - Reflects the shareTitle property.\n * @attribute {string} share-text - Reflects the shareText property.\n *\n * @slot button - The button to share content.\n * @slot button-content - The content of the button to share content.\n *\n * @csspart button - The button to share content.\n * @csspart button--disabled - The button to share content when disabled.\n *\n * @event web-share:success - Fired when the share operation is successful.\n * @event web-share:abort - Fired when the share operation is aborted.\n * @event web-share:error - Fired when the share operation fails.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method share - Instance method. Shares the shareable data taken from the element's properties.\n */\nclass WebShare extends HTMLElement {\n /** @type {Nullable} */\n #buttonSlot;\n\n /** @type {Nullable} */\n #buttonEl;\n\n /** @type {File[]} */\n #files = [];\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open', delegatesFocus: true });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n this.#buttonSlot = this.shadowRoot?.querySelector('slot[name=\"button\"]') || null;\n this.#buttonEl = this.#getButton();\n }\n\n static get observedAttributes() {\n return ['disabled'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'disabled' && oldValue !== newValue && this.#buttonEl) {\n this.#buttonEl.toggleAttribute('disabled', this.disabled);\n this.#buttonEl.setAttribute('aria-disabled', this.disabled.toString());\n\n if (this.#buttonEl.part && this.#buttonEl.part.contains('button')) {\n this.#buttonEl.part.toggle('button--disabled', this.disabled);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('shareUrl');\n this.#upgradeProperty('shareTitle');\n this.#upgradeProperty('shareText');\n this.#upgradeProperty('shareFiles');\n this.#upgradeProperty('disabled');\n\n this.#buttonSlot?.addEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.addEventListener('click', this.#handleClick);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#buttonSlot?.removeEventListener('slotchange', this.#handleSlotChange);\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n }\n\n /**\n * @type {boolean} - Indicates whether the button is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {string} - The URL to share.\n * @attribute share-url - Reflects the shareUrl property.\n */\n get shareUrl() {\n return this.getAttribute('share-url') || '';\n }\n\n set shareUrl(value) {\n this.setAttribute('share-url', value);\n }\n\n /**\n * @type {string} - The title to share.\n * @attribute share-title - Reflects the shareTitle property.\n */\n get shareTitle() {\n return this.getAttribute('share-title') || '';\n }\n\n set shareTitle(value) {\n this.setAttribute('share-title', value);\n }\n\n /**\n * @type {string} - The text to share.\n * @attribute share-text - Reflects the shareText property.\n */\n get shareText() {\n return this.getAttribute('share-text') || '';\n }\n\n set shareText(value) {\n this.setAttribute('share-text', value);\n }\n\n /**\n * @type {File[]} - The files to share.\n */\n get shareFiles() {\n return this.#files;\n }\n\n set shareFiles(value) {\n if (Array.isArray(value) && value.length > 0) {\n this.#files = value;\n }\n }\n\n /**\n * Shares the shareable data taken from the element's properties.\n *\n * @returns {Promise} - A promise that resolves when the share operation is complete.\n */\n async share() {\n if (this.disabled) {\n return;\n }\n\n try {\n /** @type {ShareData} */\n const shareData = {};\n\n if (this.shareUrl) {\n shareData.url = this.shareUrl;\n }\n\n if (this.shareTitle) {\n shareData.title = this.shareTitle;\n }\n\n if (this.shareText) {\n shareData.text = this.shareText;\n }\n\n if (\n Array.isArray(this.shareFiles)\n && this.shareFiles.length > 0\n && navigator.canShare\n && navigator.canShare({ files: this.shareFiles })\n ) {\n shareData.files = this.shareFiles;\n }\n\n await navigator.share(shareData);\n\n this.dispatchEvent(new CustomEvent('web-share:success', {\n bubbles: true,\n composed: true,\n detail: { shareData }\n }));\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.dispatchEvent(new CustomEvent('web-share:abort', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n\n return;\n }\n\n this.dispatchEvent(new CustomEvent('web-share:error', {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Handles the click event on the button.\n *\n * @param {any} evt - The event object.\n */\n #handleClick = evt => {\n evt.preventDefault();\n\n if (this.disabled) {\n return;\n }\n\n this.share();\n };\n\n /**\n * Handles the slotchange event on the button slot.\n *\n * @param {any} evt - The event object.\n */\n #handleSlotChange = evt => {\n if (evt.target && evt.target.name === 'button') {\n this.#buttonEl?.removeEventListener('click', this.#handleClick);\n this.#buttonEl = this.#getButton();\n\n if (this.#buttonEl) {\n this.#buttonEl.addEventListener('click', this.#handleClick);\n\n if (this.#buttonEl.nodeName !== 'BUTTON' && !this.#buttonEl.hasAttribute('role')) {\n this.#buttonEl.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the button element from the button slot.\n *\n * @returns {Nullable} - The button element.\n */\n #getButton() {\n if (!this.#buttonSlot) {\n return null;\n }\n\n return this.#buttonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'shareUrl' | 'shareTitle' | 'shareText' | 'shareFiles' | 'disabled'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n static defineCustomElement(elementName = 'web-share') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, WebShare);\n }\n }\n}\n\nexport { WebShare };\n","Object.defineProperty({},\"CapturePhoto\",{get:function(){return n},set:void 0,enumerable:!0,configurable:!0});let t=(t,e,i)=>(Number.isNaN(e)&&(e=0),Number.isNaN(i)&&(i=0),Math.min(Math.max(t,Math.min(e,i)),Math.max(e,i))),e=\"capture-photo\",i=`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`,o=document.createElement(\"template\");o.innerHTML=`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;class n extends HTMLElement{#t={};#e=null;#i=null;#o=null;#n=null;#a=null;#s=null;#r=null;#l=null;constructor(){super(),this.#t=this.getSupportedConstraints(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(o.content.cloneNode(!0))}static get observedAttributes(){return[\"no-image\",\"facing-mode\",\"camera-resolution\",\"pan\",\"tilt\",\"zoom\"]}attributeChangedCallback(t,e,i){if(!this.isConnected)return;let o=this.getTrackCapabilities(),n=this.getTrackSettings();if(\"no-image\"===t&&e!==i&&this.#u(),\"facing-mode\"===t&&e!==i&&\"facingMode\"in this.#t){let t=[\"user\",\"environment\"].includes(this.facingMode||\"\");\"facingMode\"in n&&t&&(this.stopVideoStream(),this.startVideoStream())}if(\"camera-resolution\"===t&&e!==i&&\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[t=0,e=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));if(t>0&&e>0&&\"width\"in o&&\"height\"in o){let i=!!(o.width?.min&&o.width?.max)&&t>=o?.width?.min&&t<=o?.width?.max,a=!!(o.height?.min&&o.height?.max)&&e>=o?.height?.min&&e<=o?.height?.max;\"width\"in n&&\"height\"in n&&i&&a&&(this.stopVideoStream(),this.startVideoStream())}}if(\"pan\"===t&&e!==i&&\"pan\"in this.#t){let t=!!(\"pan\"in o&&o.pan?.min&&o.pan?.max)&&this.pan>=o.pan.min&&this.pan<=o.pan.max;\"pan\"in n&&\"number\"==typeof this.pan&&t&&this.#h(\"pan\",this.pan)}if(\"tilt\"===t&&e!==i&&\"tilt\"in this.#t){let t=!!(\"tilt\"in o&&o.tilt?.min&&o.tilt?.max)&&this.tilt>=o.tilt.min&&this.tilt<=o.tilt.max;\"tilt\"in n&&\"number\"==typeof this.tilt&&t&&this.#h(\"tilt\",this.tilt)}if(\"zoom\"===t&&e!==i&&\"zoom\"in this.#t){let t=!!(\"zoom\"in o&&o.zoom?.min&&o.zoom?.max)&&this.zoom>=o.zoom.min&&this.zoom<=o.zoom.max;\"zoom\"in n&&\"number\"==typeof this.zoom&&t&&this.#h(\"zoom\",this.zoom)}}connectedCallback(){if(this.#d(\"autpoPlay\"),this.#d(\"noImage\"),this.#d(\"facingMode\"),this.#d(\"cameraResolution\"),this.#d(\"pan\"),this.#d(\"tilt\"),this.#d(\"zoom\"),this.#d(\"calculateFileSize\"),this.#i=this.shadowRoot?.querySelector(\"canvas\")||null,this.#o=this.shadowRoot?.getElementById(\"output\")||null,this.#n=this.shadowRoot?.querySelector(\"video\")||null,this.#a=this.shadowRoot?.querySelector('slot[name=\"capture-button\"]')||null,this.#s=this.#c(),this.#r=this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]')||null,this.#l=this.#m(),this.#n?.addEventListener(\"loadedmetadata\",this.#p),this.#a?.addEventListener(\"slotchange\",this.#g),this.#s?.addEventListener(\"click\",this.#b),this.#r?.addEventListener(\"slotchange\",this.#f),this.#l?.addEventListener(\"click\",this.#v),!n.isSupported())return this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:{name:\"NotSupportedError\",message:\"Not supported\"}}}));this.autoPlay&&this.startVideoStream()}disconnectedCallback(){this.stopVideoStream(),this.#l?.removeEventListener(\"click\",this.#v),this.#s?.removeEventListener(\"click\",this.#b),this.#n?.removeEventListener(\"canplay\",this.#p),this.#a?.removeEventListener(\"slotchange\",this.#g),this.#r?.removeEventListener(\"slotchange\",this.#f)}get autoPlay(){return this.hasAttribute(\"auto-play\")}set autoPlay(t){this.toggleAttribute(\"auto-play\",!!t)}get noImage(){return this.hasAttribute(\"no-image\")}set noImage(t){this.toggleAttribute(\"no-image\",!!t)}get facingMode(){return this.getAttribute(\"facing-mode\")||\"user\"}set facingMode(t){this.setAttribute(\"facing-mode\",t)}get cameraResolution(){return this.getAttribute(\"camera-resolution\")||\"\"}set cameraResolution(t){this.setAttribute(\"camera-resolution\",t)}get pan(){return Number(this.getAttribute(\"pan\"))||0}set pan(t){this.setAttribute(\"pan\",null!=t?t.toString():t)}get tilt(){return Number(this.getAttribute(\"tilt\"))||0}set tilt(t){this.setAttribute(\"tilt\",null!=t?t.toString():t)}get zoom(){return Number(this.getAttribute(\"zoom\"))||1}set zoom(t){this.setAttribute(\"zoom\",null!=t?t.toString():t)}get loading(){return this.hasAttribute(\"loading\")}get calculateFileSize(){return this.hasAttribute(\"calculate-file-size\")}set calculateFileSize(t){this.toggleAttribute(\"calculate-file-size\",!!t)}#v=t=>{t.preventDefault(),this.loading||(this.facingMode=\"user\"!==this.facingMode&&this.facingMode?\"user\":\"environment\")};#b=t=>{t.preventDefault(),this.capture()};#p=t=>{let i=t.target;i.play().then(()=>{this.dispatchEvent(new CustomEvent(`${e}:video-play`,{bubbles:!0,composed:!0,detail:{video:i}}))}).catch(t=>{this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}).finally(()=>{this.removeAttribute(\"loading\")})};#u(){this.#o&&Array.from(this.#o.childNodes).forEach(t=>t.remove())}#h(e,i){if(!this.#e||!e||!i)return;let[o]=this.#e.getVideoTracks(),n=this.getTrackCapabilities();e in this.getTrackSettings()&&o.applyConstraints({advanced:[{[e]:t(Number(i),n[e]?.min||1,n[e]?.max||1)}]})}#g=t=>{t.target?.name===\"capture-button\"&&(this.#s?.removeEventListener(\"click\",this.#b),this.#s=this.#c(),this.#s&&(this.#s.addEventListener(\"click\",this.#b),\"BUTTON\"===this.#s.nodeName||this.#s.hasAttribute(\"role\")||this.#s.setAttribute(\"role\",\"button\")))};#f=t=>{t.target?.name===\"facing-mode-button\"&&(this.#l?.removeEventListener(\"click\",this.#v),this.#l=this.#m(),this.#l&&(this.#l.addEventListener(\"click\",this.#v),\"BUTTON\"===this.#l.nodeName||this.#l.hasAttribute(\"role\")||this.#l.setAttribute(\"role\",\"button\")))};#m(){return this.#r&&this.#r.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"facing-mode-button\"===t.getAttribute(\"slot\"))||null}#c(){return this.#a&&this.#a.assignedElements({flatten:!0}).find(t=>\"BUTTON\"===t.nodeName||\"capture-button\"===t.getAttribute(\"slot\"))||null}#d(t){if(Object.prototype.hasOwnProperty.call(this,t)){let e=this[t];delete this[t],this[t]=e}}async startVideoStream(){if(!n.isSupported()||this.#e)return;this.setAttribute(\"loading\",\"\");let t={video:{facingMode:{ideal:this.facingMode||\"user\"},pan:!0,tilt:!0,zoom:!0},audio:!1};if(\"string\"==typeof this.cameraResolution&&this.cameraResolution.trim().length>0){let[e=0,i=0]=this.cameraResolution.split(\"x\").map(t=>Number(t));e>0&&i>0&&(t.video.width=e,t.video.height=i)}try{this.#e=await navigator.mediaDevices.getUserMedia(t),this.#n&&(this.#n.srcObject=this.#e),this.#h(\"pan\",this.pan),this.#h(\"tilt\",this.tilt),this.#h(\"zoom\",this.zoom);let e=this.getTrackSettings();\"facingMode\"in e&&this.#r&&(this.#r.hidden=!1)}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}finally{this.removeAttribute(\"loading\")}}stopVideoStream(){if(!this.#n||!this.#e)return;let[t]=this.#e.getVideoTracks();t?.stop(),this.#n.srcObject=null,this.#e=null}async capture(){if(!this.loading&&this.#i&&this.#n)try{let t=this.#i.getContext(\"2d\"),i=this.#n.videoWidth,o=this.#n.videoHeight;this.#i.width=i,this.#i.height=o,t?.drawImage(this.#n,0,0,i,o);let n=this.#i.toDataURL(\"image/png\");if(\"string\"==typeof n&&n.includes(\"data:image\")){if(!this.noImage){let t=new Image;t.src=n,t.width=i,t.height=o,t.setAttribute(\"part\",\"output-image\"),this.#u(),this.#o?.appendChild(t)}let t={dataURI:n,width:i,height:o};if(this.calculateFileSize)try{let e=await fetch(n),i=(await e.blob()).size;i&&(t.size=i)}catch(t){}this.dispatchEvent(new CustomEvent(`${e}:success`,{bubbles:!0,composed:!0,detail:t}))}}catch(t){this.dispatchEvent(new CustomEvent(`${e}:error`,{bubbles:!0,composed:!0,detail:{error:t}}))}}getSupportedConstraints(){return n.isSupported()&&navigator.mediaDevices.getSupportedConstraints()||{}}getTrackCapabilities(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getCapabilities&&t.getCapabilities()||{}}getTrackSettings(){if(!this.#e)return{};let[t]=this.#e.getVideoTracks();return t&&\"function\"==typeof t.getSettings&&t.getSettings()||{}}static isSupported(){return!!navigator.mediaDevices?.getUserMedia}static defineCustomElement(t=e){\"undefined\"==typeof window||window.customElements.get(t)||window.customElements.define(t,n)}}n.defineCustomElement();export{n as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $c290816263f90981$exports = {};\n\n$parcel$export($c290816263f90981$exports, \"CapturePhoto\", function () { return $c290816263f90981$export$cc30a98fe3890794; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ /**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */ /**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */ // @ts-check\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */ const $02ad8beec419df62$export$7d15b64cf5a3a4c4 = (value, lower, upper)=>{\n if (Number.isNaN(lower)) lower = 0;\n if (Number.isNaN(upper)) upper = 0;\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n\n\nconst $c290816263f90981$var$COMPONENT_NAME = \"capture-photo\";\nconst $c290816263f90981$var$styles = /* css */ `\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\nconst $c290816263f90981$var$template = document.createElement(\"template\");\n$c290816263f90981$var$template.innerHTML = /* html */ `\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */ class $c290816263f90981$export$cc30a98fe3890794 extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/ #supportedConstraints = {};\n /** @type {Nullable} */ #stream = null;\n /** @type {Nullable} */ #canvasElement = null;\n /** @type {Nullable} */ #outputElement = null;\n /** @type {Nullable} */ #videoElement = null;\n /** @type {Nullable} */ #captureButtonSlot = null;\n /** @type {Nullable} */ #captureButton = null;\n /** @type {Nullable} */ #facingModeButtonSlot = null;\n /** @type {Nullable} */ #facingModeButton = null;\n constructor(){\n super();\n this.#supportedConstraints = this.getSupportedConstraints();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($c290816263f90981$var$template.content.cloneNode(true));\n }\n }\n static get observedAttributes() {\n return [\n \"no-image\",\n \"facing-mode\",\n \"camera-resolution\",\n \"pan\",\n \"tilt\",\n \"zoom\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) return;\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (name === \"no-image\" && oldValue !== newValue) this.#emptyOutputElement();\n if (name === \"facing-mode\" && oldValue !== newValue && \"facingMode\" in this.#supportedConstraints) {\n const isValidFacingMode = [\n \"user\",\n \"environment\"\n ].includes(this.facingMode || \"\");\n if (\"facingMode\" in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n if (name === \"camera-resolution\" && oldValue !== newValue) {\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0 && \"width\" in trackCapabilities && \"height\" in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max : false;\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max : false;\n if (\"width\" in trackSettings && \"height\" in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n if (name === \"pan\" && oldValue !== newValue && \"pan\" in this.#supportedConstraints) {\n const panInAllowedRange = \"pan\" in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max : false;\n if (\"pan\" in trackSettings && typeof this.pan === \"number\" && panInAllowedRange) this.#applyPTZ(\"pan\", this.pan);\n }\n if (name === \"tilt\" && oldValue !== newValue && \"tilt\" in this.#supportedConstraints) {\n const tiltInAllowedRange = \"tilt\" in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max : false;\n if (\"tilt\" in trackSettings && typeof this.tilt === \"number\" && tiltInAllowedRange) this.#applyPTZ(\"tilt\", this.tilt);\n }\n if (name === \"zoom\" && oldValue !== newValue && \"zoom\" in this.#supportedConstraints) {\n const zoomInAllowedRange = \"zoom\" in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max : false;\n if (\"zoom\" in trackSettings && typeof this.zoom === \"number\" && zoomInAllowedRange) this.#applyPTZ(\"zoom\", this.zoom);\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"autpoPlay\");\n this.#upgradeProperty(\"noImage\");\n this.#upgradeProperty(\"facingMode\");\n this.#upgradeProperty(\"cameraResolution\");\n this.#upgradeProperty(\"pan\");\n this.#upgradeProperty(\"tilt\");\n this.#upgradeProperty(\"zoom\");\n this.#upgradeProperty(\"calculateFileSize\");\n this.#canvasElement = this.shadowRoot?.querySelector(\"canvas\") || null;\n this.#outputElement = this.shadowRoot?.getElementById(\"output\") || null;\n this.#videoElement = this.shadowRoot?.querySelector(\"video\") || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n this.#videoElement?.addEventListener(\"loadedmetadata\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: \"NotSupportedError\",\n message: \"Not supported\"\n }\n }\n }));\n if (this.autoPlay) this.startVideoStream();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener(\"canplay\", this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener(\"slotchange\", this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener(\"slotchange\", this.#onFacingModeButtonSlotChange);\n }\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */ get autoPlay() {\n return this.hasAttribute(\"auto-play\");\n }\n set autoPlay(value) {\n this.toggleAttribute(\"auto-play\", !!value);\n }\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */ get noImage() {\n return this.hasAttribute(\"no-image\");\n }\n set noImage(value) {\n this.toggleAttribute(\"no-image\", !!value);\n }\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */ get facingMode() {\n return this.getAttribute(\"facing-mode\") || \"user\";\n }\n set facingMode(value) {\n this.setAttribute(\"facing-mode\", value);\n }\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */ get cameraResolution() {\n return this.getAttribute(\"camera-resolution\") || \"\";\n }\n set cameraResolution(value) {\n this.setAttribute(\"camera-resolution\", value);\n }\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */ get pan() {\n return Number(this.getAttribute(\"pan\")) || 0;\n }\n set pan(value) {\n this.setAttribute(\"pan\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */ get tilt() {\n return Number(this.getAttribute(\"tilt\")) || 0;\n }\n set tilt(value) {\n this.setAttribute(\"tilt\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */ get zoom() {\n return Number(this.getAttribute(\"zoom\")) || 1;\n }\n set zoom(value) {\n this.setAttribute(\"zoom\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */ get loading() {\n return this.hasAttribute(\"loading\");\n }\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */ get calculateFileSize() {\n return this.hasAttribute(\"calculate-file-size\");\n }\n set calculateFileSize(value) {\n this.toggleAttribute(\"calculate-file-size\", !!value);\n }\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */ #onFacingModeButtonClick = (evt)=>{\n evt.preventDefault();\n if (this.loading) return;\n this.facingMode = this.facingMode === \"user\" || !this.facingMode ? \"environment\" : \"user\";\n };\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */ #onCapturePhotoButtonClick = (evt)=>{\n evt.preventDefault();\n this.capture();\n };\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */ #onVideoLoadedMetaData = (evt)=>{\n const video = evt.target;\n video.play().then(()=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: {\n video: video\n }\n }));\n }).catch(/** @param {Error} error */ (error)=>{\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }).finally(()=>{\n this.removeAttribute(\"loading\");\n });\n };\n /**\n * Removes all child nodes from the output element.\n */ #emptyOutputElement() {\n if (!this.#outputElement) return;\n Array.from(this.#outputElement.childNodes).forEach((node)=>node.remove());\n }\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */ #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) return;\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */ const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n if (constraintName in trackSettings) track.applyConstraints({\n advanced: [\n {\n [constraintName]: (0, $02ad8beec419df62$export$7d15b64cf5a3a4c4)(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }\n ]\n });\n }\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onCaptureButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"capture-button\") {\n this.#captureButton?.removeEventListener(\"click\", this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n if (this.#captureButton) {\n this.#captureButton.addEventListener(\"click\", this.#onCapturePhotoButtonClick);\n if (this.#captureButton.nodeName !== \"BUTTON\" && !this.#captureButton.hasAttribute(\"role\")) this.#captureButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */ #onFacingModeButtonSlotChange = (evt)=>{\n if (evt.target?.name === \"facing-mode-button\") {\n this.#facingModeButton?.removeEventListener(\"click\", this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener(\"click\", this.#onFacingModeButtonClick);\n if (this.#facingModeButton.nodeName !== \"BUTTON\" && !this.#facingModeButton.hasAttribute(\"role\")) this.#facingModeButton.setAttribute(\"role\", \"button\");\n }\n }\n };\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */ #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) return null;\n return this.#facingModeButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"facing-mode-button\";\n }) || null;\n }\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */ #getCaptureButton() {\n if (!this.#captureButtonSlot) return null;\n return this.#captureButtonSlot.assignedElements({\n flatten: true\n }).find((el)=>{\n return el.nodeName === \"BUTTON\" || el.getAttribute(\"slot\") === \"capture-button\";\n }) || null;\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */ async startVideoStream() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported() || this.#stream) return;\n this.setAttribute(\"loading\", \"\");\n /** @type {ExtendedMediaTrackConstraints} */ const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || \"user\"\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n if (typeof this.cameraResolution === \"string\" && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split(\"x\").map((x)=>Number(x));\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n if (this.#videoElement) this.#videoElement.srcObject = this.#stream;\n this.#applyPTZ(\"pan\", this.pan);\n this.#applyPTZ(\"tilt\", this.tilt);\n this.#applyPTZ(\"zoom\", this.zoom);\n const trackSettings = this.getTrackSettings();\n if (\"facingMode\" in trackSettings && this.#facingModeButtonSlot) this.#facingModeButtonSlot.hidden = false;\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n } finally{\n this.removeAttribute(\"loading\");\n }\n }\n /**\n * Stops the video stream.\n */ stopVideoStream() {\n if (!this.#videoElement || !this.#stream) return;\n const [track] = this.#stream.getVideoTracks();\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */ async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) return;\n try {\n const ctx = this.#canvasElement.getContext(\"2d\");\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL(\"image/png\");\n if (typeof dataURI === \"string\" && dataURI.includes(\"data:image\")) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute(\"part\", \"output-image\");\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */ const eventDetail = {\n dataURI: dataURI,\n width: width,\n height: height\n };\n if (this.calculateFileSize) try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n if (size) eventDetail.size = size;\n } catch (err) {\n // Fail silently...\n }\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$c290816263f90981$var$COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n }\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */ getSupportedConstraints() {\n if (!$c290816263f90981$export$cc30a98fe3890794.isSupported()) return {};\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */ getTrackCapabilities() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getCapabilities === \"function\") return track.getCapabilities() || {};\n return {};\n }\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */ getTrackSettings() {\n if (!this.#stream) return {};\n const [track] = this.#stream.getVideoTracks();\n if (track && typeof track.getSettings === \"function\") return track.getSettings() || {};\n return {};\n }\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */ static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */ static defineCustomElement(elementName = $c290816263f90981$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $c290816263f90981$export$cc30a98fe3890794);\n }\n}\n\n\n(0, $c290816263f90981$export$cc30a98fe3890794).defineCustomElement();\n\n\nexport {$c290816263f90981$export$cc30a98fe3890794 as CapturePhoto};\n//# sourceMappingURL=capture-photo-defined.js.map\n","import { CapturePhoto } from './capture-photo.js';\n\nCapturePhoto.defineCustomElement();\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackCapabilities\n * @property {ULongRange} [width] - The width of the video track.\n * @property {ULongRange} [height] - The height of the video track.\n * @property {ULongRange} [pan] - The pan level of the camera.\n * @property {ULongRange} [tilt] - The tilt level of the camera.\n * @property {ULongRange} [zoom] - The zoom level of the camera.\n * @property {MediaTrackCapabilities} [nativeMediaTrackCapabilities] - The native track capabilities.\n */\n\n/**\n * @typedef {Object} ExtendedMediaTrackConstraints\n * @property {MediaTrackConstraints & {pan: boolean, tilt: boolean, zoom: boolean}} video - The video constraints.\n * @property {MediaTrackConstraints | boolean} audio - The audio constraints.\n */\n\nimport { clamp } from './utils/clamp.js';\n\nconst COMPONENT_NAME = 'capture-photo';\n\nconst styles = /* css */`\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n :host([hidden]),\n [hidden],\n ::slotted([hidden]) {\n display: none;\n }\n\n video {\n display: block;\n }\n\n #output:empty {\n display: none;\n }\n`;\n\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n \n\n
\n \n \n \n\n \n\n \n
\n\n \n\n
\n`;\n\n/**\n * @summary A custom element that implements the MediaDevices.getUserMedia() method of the MediaDevices interface to capture a photo in the browser.\n * @documentation https://github.com/georapbox/capture-photo-element\n *\n * @tagname capture-photo This is the default tag name, unless overridden by the `defineCustomElement` method.\n * @extends HTMLElement\n *\n * @property {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @property {boolean} noImage - Whether or not to show the captured image.\n * @property {string} facingMode - The facing mode of the camera.\n * @property {string} cameraResolution - The resolution of the camera.\n * @property {number} pan - The pan value of the camera.\n * @property {number} tilt - The tilt value of the camera.\n * @property {number} zoom - The zoom value of the camera.\n * @property {boolean} loading - Whether or not the video stream is loading.\n * @property {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n *\n * @atttribute {boolean} auto-play - Reflects the autoPlay property.\n * @atttribute {boolean} no-image - Reflects the noImage property.\n * @atttribute {string} facing-mode - Reflects the facingMode property.\n * @atttribute {string} camera-resolution - Reflects the cameraResolution property.\n * @atttribute {number} pan - Reflects the pan property.\n * @atttribute {number} tilt - Reflects the tilt property.\n * @atttribute {number} zoom - Reflects the zoom property.\n * @atttribute {boolean} loading - Reflects the loading property.\n * @atttribute {boolean} calculate-file-size - Reflects the calculateFileSize property.\n *\n * @slot capture-button - The capture button.\n * @slot capture-button-content - The capture button content.\n * @slot facing-mode-button - The facing mode button.\n * @slot facing-mode-button-content - The facing mode button content.\n * @slot actions - The actions container.\n * @slot - A default un-named slot to add content inside the component.\n *\n * @csspart video - The video element.\n * @csspart actions-container - The actions container.\n * @csspart capture-button - The capture button.\n * @csspart facing-mode-button - The facing mode button.\n * @csspart output-container - The output container.\n * @csspart output-image - The output image.\n *\n * @event capture-photo:video-play - Fires when the video stream is successfully playing.\n * @event capture-photo:success - Fires when the photo is successfully captured.\n * @event capture-photo:error - Fires when an error occurs.\n *\n * @method defineCustomElement - Static method. Defines the custom element with the given name.\n * @method isSupported - Static method. Checks if the MediaDevices.getUserMedia() method is supported.\n * @method startVideoStream - Instance method. Starts the video stream.\n * @method stopVideoStream - Instance method. Stops the video stream.\n * @method capture - Instance method. Captures a photo.\n * @method getSupportedConstraints - Instance method. Gets the supported constraints.\n * @method getTrackCapabilities - Instance method. Gets the track capabilities.\n * @method getTrackSettings - Instance method. Gets the track settings.\n */\nclass CapturePhoto extends HTMLElement {\n /** @type {MediaTrackSupportedConstraints | {}}*/\n #supportedConstraints = {};\n\n /** @type {Nullable} */\n #stream = null;\n\n /** @type {Nullable} */\n #canvasElement = null;\n\n /** @type {Nullable} */\n #outputElement = null;\n\n /** @type {Nullable} */\n #videoElement = null;\n\n /** @type {Nullable} */\n #captureButtonSlot = null;\n\n /** @type {Nullable} */\n #captureButton = null;\n\n /** @type {Nullable} */\n #facingModeButtonSlot = null;\n\n /** @type {Nullable} */\n #facingModeButton = null;\n\n constructor() {\n super();\n\n this.#supportedConstraints = this.getSupportedConstraints();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n }\n\n static get observedAttributes() {\n return ['no-image', 'facing-mode', 'camera-resolution', 'pan', 'tilt', 'zoom'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (!this.isConnected) {\n return;\n }\n\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (name === 'no-image' && oldValue !== newValue) {\n this.#emptyOutputElement();\n }\n\n if (name === 'facing-mode' && oldValue !== newValue && 'facingMode' in this.#supportedConstraints) {\n const isValidFacingMode = ['user', 'environment'].includes(this.facingMode || '');\n\n if ('facingMode' in trackSettings && isValidFacingMode) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n\n if (name === 'camera-resolution' && oldValue !== newValue) {\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0 && 'width' in trackCapabilities && 'height' in trackCapabilities) {\n const widthInAllowedRange = trackCapabilities.width?.min && trackCapabilities.width?.max\n ? width >= trackCapabilities?.width?.min && width <= trackCapabilities?.width?.max\n : false;\n\n const heightInAllowedRange = trackCapabilities.height?.min && trackCapabilities.height?.max\n ? height >= trackCapabilities?.height?.min && height <= trackCapabilities?.height?.max\n : false;\n\n if ('width' in trackSettings && 'height' in trackSettings && widthInAllowedRange && heightInAllowedRange) {\n this.stopVideoStream();\n this.startVideoStream();\n }\n }\n }\n }\n\n if (name === 'pan' && oldValue !== newValue && 'pan' in this.#supportedConstraints) {\n const panInAllowedRange = 'pan' in trackCapabilities && trackCapabilities.pan?.min && trackCapabilities.pan?.max\n ? this.pan >= trackCapabilities.pan.min && this.pan <= trackCapabilities.pan.max\n : false;\n\n if ('pan' in trackSettings && typeof this.pan === 'number' && panInAllowedRange) {\n this.#applyPTZ('pan', this.pan);\n }\n }\n\n if (name === 'tilt' && oldValue !== newValue && 'tilt' in this.#supportedConstraints) {\n const tiltInAllowedRange = 'tilt' in trackCapabilities && trackCapabilities.tilt?.min && trackCapabilities.tilt?.max\n ? this.tilt >= trackCapabilities.tilt.min && this.tilt <= trackCapabilities.tilt.max\n : false;\n\n if ('tilt' in trackSettings && typeof this.tilt === 'number' && tiltInAllowedRange) {\n this.#applyPTZ('tilt', this.tilt);\n }\n }\n\n if (name === 'zoom' && oldValue !== newValue && 'zoom' in this.#supportedConstraints) {\n const zoomInAllowedRange = 'zoom' in trackCapabilities && trackCapabilities.zoom?.min && trackCapabilities.zoom?.max\n ? this.zoom >= trackCapabilities.zoom.min && this.zoom <= trackCapabilities.zoom.max\n : false;\n\n if ('zoom' in trackSettings && typeof this.zoom === 'number' && zoomInAllowedRange) {\n this.#applyPTZ('zoom', this.zoom);\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('autpoPlay');\n this.#upgradeProperty('noImage');\n this.#upgradeProperty('facingMode');\n this.#upgradeProperty('cameraResolution');\n this.#upgradeProperty('pan');\n this.#upgradeProperty('tilt');\n this.#upgradeProperty('zoom');\n this.#upgradeProperty('calculateFileSize');\n\n this.#canvasElement = this.shadowRoot?.querySelector('canvas') || null;\n this.#outputElement = this.shadowRoot?.getElementById('output') || null;\n this.#videoElement = this.shadowRoot?.querySelector('video') || null;\n this.#captureButtonSlot = this.shadowRoot?.querySelector('slot[name=\"capture-button\"]') || null;\n this.#captureButton = this.#getCaptureButton();\n this.#facingModeButtonSlot = this.shadowRoot?.querySelector('slot[name=\"facing-mode-button\"]') || null;\n this.#facingModeButton = this.#getFacingModeButton();\n\n this.#videoElement?.addEventListener('loadedmetadata', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.addEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#captureButton?.addEventListener('click', this.#onCapturePhotoButtonClick);\n this.#facingModeButtonSlot?.addEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n this.#facingModeButton?.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (!CapturePhoto.isSupported()) {\n return this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: {\n name: 'NotSupportedError',\n message: 'Not supported'\n }\n }\n }));\n }\n\n if (this.autoPlay) {\n this.startVideoStream();\n }\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.stopVideoStream();\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#videoElement?.removeEventListener('canplay', this.#onVideoLoadedMetaData);\n this.#captureButtonSlot?.removeEventListener('slotchange', this.#onCaptureButtonSlotChange);\n this.#facingModeButtonSlot?.removeEventListener('slotchange', this.#onFacingModeButtonSlotChange);\n }\n\n /**\n * @type {boolean} autoPlay - Whether or not to start the video stream automatically.\n * @attribute auto-play - Reflects the autoPlay attribute.\n */\n get autoPlay() {\n return this.hasAttribute('auto-play');\n }\n\n set autoPlay(value) {\n this.toggleAttribute('auto-play', !!value);\n }\n\n /**\n * @type {boolean} noImage - Whether or not to show the captured image.\n * @attribute no-image - Reflects the noImage attribute.\n */\n get noImage() {\n return this.hasAttribute('no-image');\n }\n\n set noImage(value) {\n this.toggleAttribute('no-image', !!value);\n }\n\n /**\n * @type {string} facingMode - The facing mode of the camera.\n * @attribute facing-mode - Reflects the facingMode attribute.\n */\n get facingMode() {\n return this.getAttribute('facing-mode') || 'user';\n }\n\n set facingMode(value) {\n this.setAttribute('facing-mode', value);\n }\n\n /**\n * @type {string} cameraResolution - The resolution of the camera.\n * @attribute camera-resolution - Reflects the cameraResolution attribute.\n */\n get cameraResolution() {\n return this.getAttribute('camera-resolution') || '';\n }\n\n set cameraResolution(value) {\n this.setAttribute('camera-resolution', value);\n }\n\n /**\n * @type {number} pan - The pan value of the camera.\n * @attribute pan - Reflects the pan attribute.\n */\n get pan() {\n return Number(this.getAttribute('pan')) || 0;\n }\n\n set pan(value) {\n this.setAttribute('pan', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} tilt - The tilt value of the camera.\n * @attribute tilt - Reflects the tilt attribute.\n */\n get tilt() {\n return Number(this.getAttribute('tilt')) || 0;\n }\n\n set tilt(value) {\n this.setAttribute('tilt', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} zoom - The zoom value of the camera.\n * @attribute zoom - Reflects the zoom attribute.\n */\n get zoom() {\n return Number(this.getAttribute('zoom')) || 1;\n }\n\n set zoom(value) {\n this.setAttribute('zoom', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} loading - Whether or not the video stream is loading.\n * @attribute loading - Reflects the loading attribute.\n */\n get loading() {\n return this.hasAttribute('loading');\n }\n\n /**\n * @type {boolean} calculateFileSize - Whether or not to calculate the file size of the captured image.\n * @attribute calculate-file-size - Reflects the calculateFileSize attribute.\n */\n get calculateFileSize() {\n return this.hasAttribute('calculate-file-size');\n }\n\n set calculateFileSize(value) {\n this.toggleAttribute('calculate-file-size', !!value);\n }\n\n /**\n * Handles the click event of the facing mode button.\n *\n * @param {*} evt - The click event.\n */\n #onFacingModeButtonClick = evt => {\n evt.preventDefault();\n\n if (this.loading) {\n return;\n }\n\n this.facingMode = this.facingMode === 'user' || !this.facingMode ? 'environment' : 'user';\n };\n\n /**\n * Handles the click event of the capture button.\n *\n * @param {*} evt - The click event.\n */\n #onCapturePhotoButtonClick = evt => {\n evt.preventDefault();\n this.capture();\n };\n\n /**\n * Handles the loadedmetadata event of the video element.\n *\n * @param {*} evt - The loadedmetadata event.\n */\n #onVideoLoadedMetaData = evt => {\n const video = evt.target;\n\n video.play().then(() => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:video-play`, {\n bubbles: true,\n composed: true,\n detail: { video }\n }));\n }).catch(/** @param {Error} error */error => {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }).finally(() => {\n this.removeAttribute('loading');\n });\n };\n\n /**\n * Removes all child nodes from the output element.\n */\n #emptyOutputElement() {\n if (!this.#outputElement) {\n return;\n }\n\n Array.from(this.#outputElement.childNodes).forEach(node => node.remove());\n }\n\n /**\n * Applies the pan, tilt or zoom constraint.\n *\n * @param {'pan' | 'tilt' | 'zoom'} constraintName - The name of the constraint.\n * @param {number} constraintValue - The value of the constraint.\n */\n #applyPTZ(constraintName, constraintValue) {\n if (!this.#stream || !constraintName || !constraintValue) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n /** @type {ExtendedMediaTrackCapabilities} */\n const trackCapabilities = this.getTrackCapabilities();\n const trackSettings = this.getTrackSettings();\n\n if (constraintName in trackSettings) {\n track.applyConstraints({\n advanced: [{\n [constraintName]: clamp(Number(constraintValue), trackCapabilities[constraintName]?.min || 1, trackCapabilities[constraintName]?.max || 1)\n }]\n });\n }\n }\n\n /**\n * Handles the slotchange event of the capture button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onCaptureButtonSlotChange = evt => {\n if (evt.target?.name === 'capture-button') {\n this.#captureButton?.removeEventListener('click', this.#onCapturePhotoButtonClick);\n this.#captureButton = this.#getCaptureButton();\n\n if (this.#captureButton) {\n this.#captureButton.addEventListener('click', this.#onCapturePhotoButtonClick);\n\n if (this.#captureButton.nodeName !== 'BUTTON' && !this.#captureButton.hasAttribute('role')) {\n this.#captureButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Handles the slotchange event of the facing mode button slot.\n *\n * @param {*} evt - The slotchange event.\n */\n #onFacingModeButtonSlotChange = evt => {\n if (evt.target?.name === 'facing-mode-button') {\n this.#facingModeButton?.removeEventListener('click', this.#onFacingModeButtonClick);\n this.#facingModeButton = this.#getFacingModeButton();\n\n if (this.#facingModeButton) {\n this.#facingModeButton.addEventListener('click', this.#onFacingModeButtonClick);\n\n if (this.#facingModeButton.nodeName !== 'BUTTON' && !this.#facingModeButton.hasAttribute('role')) {\n this.#facingModeButton.setAttribute('role', 'button');\n }\n }\n }\n };\n\n /**\n * Returns the facing mode button.\n *\n * @returns {Nullable}\n */\n #getFacingModeButton() {\n if (!this.#facingModeButtonSlot) {\n return null;\n }\n\n return this.#facingModeButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'facing-mode-button';\n }) || null;\n }\n\n /**\n * Returns the capture button.\n *\n * @returns {Nullable}\n */\n #getCaptureButton() {\n if (!this.#captureButtonSlot) {\n return null;\n }\n\n return this.#captureButtonSlot.assignedElements({ flatten: true }).find(el => {\n return el.nodeName === 'BUTTON' || el.getAttribute('slot') === 'capture-button';\n }) || null;\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and\n * set a value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would\n * miss that property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'autpoPlay' | 'noImage' | 'facingMode' | 'cameraResolution' | 'pan' | 'tilt' | 'zoom' | 'calculateFileSize'} prop\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Starts the video stream.\n *\n * @returns Promise\n */\n async startVideoStream() {\n if (!CapturePhoto.isSupported() || this.#stream) {\n return;\n }\n\n this.setAttribute('loading', '');\n\n /** @type {ExtendedMediaTrackConstraints} */\n const constraints = {\n video: {\n facingMode: {\n ideal: this.facingMode || 'user'\n },\n pan: true,\n tilt: true,\n zoom: true\n },\n audio: false\n };\n\n if (typeof this.cameraResolution === 'string' && this.cameraResolution.trim().length > 0) {\n const [width = 0, height = 0] = this.cameraResolution.split('x').map(x => Number(x));\n\n if (width > 0 && height > 0) {\n constraints.video.width = width;\n constraints.video.height = height;\n }\n }\n\n try {\n this.#stream = await navigator.mediaDevices.getUserMedia(constraints);\n\n if (this.#videoElement) {\n this.#videoElement.srcObject = this.#stream;\n }\n\n this.#applyPTZ('pan', this.pan);\n this.#applyPTZ('tilt', this.tilt);\n this.#applyPTZ('zoom', this.zoom);\n\n const trackSettings = this.getTrackSettings();\n\n if ('facingMode' in trackSettings && this.#facingModeButtonSlot) {\n this.#facingModeButtonSlot.hidden = false;\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n } finally {\n this.removeAttribute('loading');\n }\n }\n\n /**\n * Stops the video stream.\n */\n stopVideoStream() {\n if (!this.#videoElement || !this.#stream) {\n return;\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n track?.stop();\n this.#videoElement.srcObject = null;\n this.#stream = null;\n }\n\n /**\n * Captures a photo using the element's properties.\n *\n * @returns Promise\n */\n async capture() {\n if (this.loading || !this.#canvasElement || !this.#videoElement) {\n return;\n }\n\n try {\n const ctx = this.#canvasElement.getContext('2d');\n const width = this.#videoElement.videoWidth;\n const height = this.#videoElement.videoHeight;\n this.#canvasElement.width = width;\n this.#canvasElement.height = height;\n ctx?.drawImage(this.#videoElement, 0, 0, width, height);\n const dataURI = this.#canvasElement.toDataURL('image/png');\n\n if (typeof dataURI === 'string' && dataURI.includes('data:image')) {\n if (!this.noImage) {\n const image = new Image();\n image.src = dataURI;\n image.width = width;\n image.height = height;\n image.setAttribute('part', 'output-image');\n this.#emptyOutputElement();\n this.#outputElement?.appendChild(image);\n }\n\n /** @type {{ dataURI: string, width: number, height: number, size?: number }} */\n const eventDetail = { dataURI, width, height };\n\n if (this.calculateFileSize) {\n try {\n const file = await fetch(dataURI);\n const blob = await file.blob();\n const size = blob.size;\n\n if (size) {\n eventDetail.size = size;\n }\n } catch (err) {\n // Fail silently...\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:success`, {\n bubbles: true,\n composed: true,\n detail: eventDetail\n }));\n }\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}:error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n }\n\n /**\n * Returns an object based on the `MediaTrackSupportedConstraints` dictionary,\n * whose member fields each specify one ofthe constrainable properties the user agent understands.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints\n * @returns {MediaTrackSupportedConstraints | {}}\n */\n getSupportedConstraints() {\n if (!CapturePhoto.isSupported()) {\n return {};\n }\n\n return navigator.mediaDevices.getSupportedConstraints() || {};\n }\n\n /**\n * Returns a `MediaTrackCapabilities` object which specifies the values or range of values\n * which each constrainable property, based upon the platform and user agent.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities\n * @returns {MediaTrackCapabilities | {}}\n */\n getTrackCapabilities() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getCapabilities === 'function') {\n return track.getCapabilities() || {};\n }\n\n return {};\n }\n\n /**\n * Returns a `MediaTrackSettings` object containing the current values of each of\n * the constrainable properties for the current MediaStreamTrack.\n *\n * @see https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings\n * @returns {MediaTrackSettings | {}}\n */\n getTrackSettings() {\n if (!this.#stream) {\n return {};\n }\n\n const [track] = this.#stream.getVideoTracks();\n\n if (track && typeof track.getSettings === 'function') {\n return track.getSettings() || {};\n }\n\n return {};\n }\n\n /**\n * Checks if the `MediaDevices.getUserMedia()` method is supported.\n *\n * @returns {boolean}\n */\n static isSupported() {\n return Boolean(navigator.mediaDevices?.getUserMedia);\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='capture-photo'] - The name of the custom element.\n * @example\n *\n * CapturePhoto.defineCustomElement('my-capture-photo');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, CapturePhoto);\n }\n }\n}\n\nexport { CapturePhoto };\n","// @ts-check\n\n/**\n * Clamps number within the inclusive `min` and `max` bounds,\n * making sure it does not go beyond them on either side.\n * If `min` is greater than `max` the parameters are swapped to support inverted ranges.\n *\n * @param {number} value - The number to clamp.\n * @param {number} lower - The lower bound.\n * @param {number} upper - The upper bound.\n * @throws {TypeError} - If one or more of the arguments passed is not a number.\n * @returns {number} - The clamped number.\n * @example\n *\n * clamp(10, -5, 5);\n * // => 5\n *\n * clamp(-10, -5, 5);\n * // => -5\n *\n * clamp(-15, 0, 100);\n * // => 0\n *\n * clamp(120, 0, 100);\n * // => 100\n *\n * clamp(-5, NaN, 5); // If any of lower or upper bound are `NaN`, they will be converted to `0`.\n * // => 0\n *\n * clamp(120, 100, 0); // The order of lower and upper bounds is reversed (100 > 0)\n * // => 100\n */\nexport const clamp = (value, lower, upper) => {\n if (Number.isNaN(lower)) {\n lower = 0;\n }\n\n if (Number.isNaN(upper)) {\n upper = 0;\n }\n\n return Math.min(Math.max(value, Math.min(lower, upper)), Math.max(lower, upper));\n};\n","Object.defineProperty({},\"ModalElement\",{get:function(){return t},set:void 0,enumerable:!0,configurable:!0});let e=document.createElement(\"template\");e.innerHTML=/* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */class t extends HTMLElement{/** @type {Nullable} */#e=null;/** @type {Nullable} */#t=null;/** @type {ReturnType | undefined} */#o=void 0;constructor(){if(super(),!this.shadowRoot){let t=this.attachShadow({mode:\"open\"});t.appendChild(e.content.cloneNode(!0))}this.shadowRoot&&(this.#e=this.shadowRoot.querySelector(\"dialog\"),this.#t=this.shadowRoot.querySelector('slot[name=\"footer\"]'))}static get observedAttributes(){return[\"open\",\"no-header\",\"no-animations\",\"no-close-button\"]}/**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */attributeChangedCallback(e,t,o){if(null!==this.#e){if(\"open\"===e&&t!==o&&(this.open?(this.#e.showModal(),document.body&&(document.body.style.overflowY=\"hidden\"),this.dispatchEvent(new CustomEvent(\"me-open\",{bubbles:!0,composed:!0,detail:{element:this}}))):this.#e.close()),\"no-header\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__header\");null!==e&&(e.hidden=this.noHeader)}if(\"no-animations\"===e&&t!==o&&this.#e.classList.toggle(\"dialog--no-animations\",this.noAnimations),\"no-close-button\"===e&&t!==o){/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__close\");null!==e&&(e.hidden=this.noCloseButton)}}}/**\n * Lifecycle method that is called when the element is added to the DOM.\n */connectedCallback(){this.#i(\"open\"),this.#i(\"staticBackdrop\"),this.#i(\"noHeader\"),this.#i(\"noAnimations\"),this.#i(\"noCloseButton\"),this.#i(\"fullscreen\"),this.#e?.addEventListener(\"click\",this.#a),this.#e?.addEventListener(\"close\",this.#l),this.#e?.addEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\",this.#n),this.#t?.addEventListener(\"slotchange\",this.#r)}/**\n * Lifecycle method that is called when the element is removed from the DOM.\n */disconnectedCallback(){this.#o&&clearTimeout(this.#o),this.#e?.addEventListener(\"click\",this.#a),this.#e?.removeEventListener(\"close\",this.#l),this.#e?.removeEventListener(\"cancel\",this.#s),this.#e?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\",this.#n),this.#t?.removeEventListener(\"slotchange\",this.#r)}/**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */get open(){return this.hasAttribute(\"open\")}set open(e){e?this.setAttribute(\"open\",\"\"):this.removeAttribute(\"open\")}/**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */get staticBackdrop(){return this.hasAttribute(\"static-backdrop\")}set staticBackdrop(e){e?this.setAttribute(\"static-backdrop\",\"\"):this.removeAttribute(\"static-backdrop\")}/**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */get noHeader(){return this.hasAttribute(\"no-header\")}set noHeader(e){e?this.setAttribute(\"no-header\",\"\"):this.removeAttribute(\"no-header\")}/**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */get noAnimations(){return this.hasAttribute(\"no-animations\")}set noAnimations(e){e?this.setAttribute(\"no-animations\",\"\"):this.removeAttribute(\"no-animations\")}/**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */get noCloseButton(){return this.hasAttribute(\"no-close-button\")}set noCloseButton(e){e?this.setAttribute(\"no-close-button\",\"\"):this.removeAttribute(\"no-close-button\")}/**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */get fullscreen(){return this.hasAttribute(\"fullscreen\")}set fullscreen(e){e?this.setAttribute(\"fullscreen\",\"\"):this.removeAttribute(\"fullscreen\")}/**\n * Applies a pulse effect on the dialog.\n */#d(){this.#o||(this.#e?.classList.add(\"dialog--pulse\"),this.#o=setTimeout(()=>{this.#e?.classList.remove(\"dialog--pulse\"),clearTimeout(this.#o),this.#o=void 0},300))}/**\n * Handles the close event of the dialog.\n */#l=()=>{// This is needed because the dialog element does not reset\n// the open property when the dialog is closed by the user.\nthis.open=!1,document.body&&(document.body.style.overflowY=\"\"),this.dispatchEvent(new CustomEvent(\"me-close\",{bubbles:!0,composed:!0,detail:{element:this}}))};/**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */#s=e=>{let t=this.#c(\"escape-key\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */#n=e=>{let t=this.#c(\"close-button\");this.dispatchEvent(t),t.defaultPrevented&&(e.preventDefault(),this.noAnimations||this.#d())};/**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */#a=e=>{if(e.target!==e.currentTarget)return;let t=this.#c(\"backdrop-click\");if(this.dispatchEvent(t),t.defaultPrevented||this.staticBackdrop){this.noAnimations||this.#d();return}this.#e?.close()};/**\n * Handles the slotchange event of the footer slot.\n */#r=()=>{if(null===this.#e)return;/** @type {Nullable} */let e=this.#e.querySelector(\".dialog__footer\");if(null===e)return;let t=this.#t?.assignedNodes(),o=!!t&&t.length>0;e.hidden=!o};/**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */#c(e){return new CustomEvent(\"me-request-close\",{bubbles:!0,composed:!0,cancelable:!0,detail:{reason:e,element:this}})}/**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */#i(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}/**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */show(){this.open||(this.open=!0)}/**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */hide(){this.open&&(this.open=!1)}/**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */static defineCustomElement(e=\"modal-element\"){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,t)}}t.defineCustomElement();export{t as ModalElement};//# sourceMappingURL=modal-element-defined.js.map\n\n//# sourceMappingURL=modal-element-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $180b6dcf923bafc7$exports = {};\n\n$parcel$export($180b6dcf923bafc7$exports, \"ModalElement\", function () { return $180b6dcf923bafc7$export$32589115725b904b; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ const $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION = 300;\nconst $180b6dcf923bafc7$var$template = document.createElement(\"template\");\n$180b6dcf923bafc7$var$template.innerHTML = /* html */ `\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */ class $180b6dcf923bafc7$export$32589115725b904b extends HTMLElement {\n /** @type {Nullable} */ #dialogEl = null;\n /** @type {Nullable} */ #footerSlotEl = null;\n /** @type {ReturnType | undefined} */ #pulseAnimationTimeout = void 0;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($180b6dcf923bafc7$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector(\"dialog\");\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n static get observedAttributes() {\n return [\n \"open\",\n \"no-header\",\n \"no-animations\",\n \"no-close-button\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) return;\n if (name === \"open\" && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n if (document.body) document.body.style.overflowY = \"hidden\";\n this.dispatchEvent(new CustomEvent(\"me-open\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n } else this.#dialogEl.close();\n }\n if (name === \"no-header\" && oldValue !== newValue) {\n /** @type {Nullable} */ const headerEl = this.#dialogEl.querySelector(\".dialog__header\");\n if (headerEl !== null) headerEl.hidden = this.noHeader;\n }\n if (name === \"no-animations\" && oldValue !== newValue) this.#dialogEl.classList.toggle(\"dialog--no-animations\", this.noAnimations);\n if (name === \"no-close-button\" && oldValue !== newValue) {\n /** @type {Nullable} */ const closeBtnEl = this.#dialogEl.querySelector(\".dialog__close\");\n if (closeBtnEl !== null) closeBtnEl.hidden = this.noCloseButton;\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"open\");\n this.#upgradeProperty(\"staticBackdrop\");\n this.#upgradeProperty(\"noHeader\");\n this.#upgradeProperty(\"noAnimations\");\n this.#upgradeProperty(\"noCloseButton\");\n this.#upgradeProperty(\"fullscreen\");\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.addEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.addEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener(\"click\", this.#handleDialogClick);\n this.#dialogEl?.removeEventListener(\"close\", this.#handleDialogClose);\n this.#dialogEl?.removeEventListener(\"cancel\", this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener(\"submit\", this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener(\"slotchange\", this.#handleFooterSlotChange);\n }\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */ get open() {\n return this.hasAttribute(\"open\");\n }\n set open(value) {\n if (value) this.setAttribute(\"open\", \"\");\n else this.removeAttribute(\"open\");\n }\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */ get staticBackdrop() {\n return this.hasAttribute(\"static-backdrop\");\n }\n set staticBackdrop(value) {\n if (value) this.setAttribute(\"static-backdrop\", \"\");\n else this.removeAttribute(\"static-backdrop\");\n }\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */ get noHeader() {\n return this.hasAttribute(\"no-header\");\n }\n set noHeader(value) {\n if (value) this.setAttribute(\"no-header\", \"\");\n else this.removeAttribute(\"no-header\");\n }\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */ get noAnimations() {\n return this.hasAttribute(\"no-animations\");\n }\n set noAnimations(value) {\n if (value) this.setAttribute(\"no-animations\", \"\");\n else this.removeAttribute(\"no-animations\");\n }\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */ get noCloseButton() {\n return this.hasAttribute(\"no-close-button\");\n }\n set noCloseButton(value) {\n if (value) this.setAttribute(\"no-close-button\", \"\");\n else this.removeAttribute(\"no-close-button\");\n }\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */ get fullscreen() {\n return this.hasAttribute(\"fullscreen\");\n }\n set fullscreen(value) {\n if (value) this.setAttribute(\"fullscreen\", \"\");\n else this.removeAttribute(\"fullscreen\");\n }\n /**\n * Applies a pulse effect on the dialog.\n */ #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) return;\n this.#dialogEl?.classList.add(\"dialog--pulse\");\n this.#pulseAnimationTimeout = setTimeout(()=>{\n this.#dialogEl?.classList.remove(\"dialog--pulse\");\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, $180b6dcf923bafc7$var$PULSE_ANIMATION_DURATION);\n }\n /**\n * Handles the close event of the dialog.\n */ #handleDialogClose = ()=>{\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n if (document.body) document.body.style.overflowY = \"\";\n this.dispatchEvent(new CustomEvent(\"me-close\", {\n bubbles: true,\n composed: true,\n detail: {\n element: this\n }\n }));\n };\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */ #handleDialogCancel = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"escape-key\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */ #handleCloseButtonClick = (evt)=>{\n const requestCloseEvent = this.#createRequestCloseEvent(\"close-button\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */ #handleDialogClick = (evt)=>{\n if (evt.target !== evt.currentTarget) return;\n const requestCloseEvent = this.#createRequestCloseEvent(\"backdrop-click\");\n this.dispatchEvent(requestCloseEvent);\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n this.#dialogEl?.close();\n };\n /**\n * Handles the slotchange event of the footer slot.\n */ #handleFooterSlotChange = ()=>{\n if (this.#dialogEl === null) return;\n /** @type {Nullable} */ const footerEl = this.#dialogEl.querySelector(\".dialog__footer\");\n if (footerEl === null) return;\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n footerEl.hidden = !hasFooterSlotNodes;\n };\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */ #createRequestCloseEvent(reason) {\n return new CustomEvent(\"me-request-close\", {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason: reason,\n element: this\n }\n });\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */ show() {\n if (this.open) return;\n this.open = true;\n }\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */ hide() {\n if (!this.open) return;\n this.open = false;\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */ static defineCustomElement(elementName = \"modal-element\") {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $180b6dcf923bafc7$export$32589115725b904b);\n }\n}\n\n\n(0, $180b6dcf923bafc7$export$32589115725b904b).defineCustomElement();\n\n\nexport {$180b6dcf923bafc7$export$32589115725b904b as ModalElement};\n//# sourceMappingURL=modal-element-defined.js.map\n","import { ModalElement } from './modal-element.js';\n\nModalElement.defineCustomElement();\n\nexport { ModalElement };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nconst PULSE_ANIMATION_DURATION = 300;\nconst template = document.createElement('template');\n\ntemplate.innerHTML = /* html */`\n \n\n \n
\n
\n \n\n
\n \n
\n
\n\n \n\n
\n \n
\n
\n
\n`;\n\n/**\n * @summary A custom element that renders a modal dialog.\n * @extends HTMLElement\n *\n * @property {boolean} open - Determines if the modal is open or not.\n * @property {boolean} staticBackdrop - Determines if the modal should close when the backdrop is clicked.\n * @property {boolean} noHeader - Determines if the modal should have a header or not.\n * @property {boolean} noAnimations - Determines if the modal should have animations or not when opening and closing.\n * @property {boolean} noCloseButton - Determines if the modal should have a default close button or not.\n * @property {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @attribute {boolean} open - Determines if the modal is open or not.\n * @attribute {boolean} static-backdrop - Determines if the modal should close when the backdrop is clicked.\n * @attribute {boolean} no-header - Determines if the modal should have a header or not.\n * @attribute {boolean} no-animations - Determines if the modal should have animations or not when opening and closing.\n * @attribute {boolean} no-close-button - Determines if the modal should have a default close button or not.\n * @attribute {boolean} fullscreen - Determines if the modal should be fullscreen or not.\n *\n * @slot - The modal's main content (default/unnamed slot).\n * @slot header - The modal's header content, usually a title.\n * @slot footer - The modals' footer content. Usually used for buttons or other actions.\n * @slot close - The content of the close button that appears in the modal's header.\n *\n * @cssproperty --me-width - The width of the modal. Default is 32rem.\n * @cssproperty --me-height - The height of the modal. Default is fit-content.\n * @cssproperty --me-border-color - The border color of the modal. Default is initial.\n * @cssproperty --me-border-style - The border style of the modal. Default is solid.\n * @cssproperty --me-border-width - The border width of the modal. Default is initial.\n * @cssproperty --me-border-radius - The border radius of the modal. Default is 0.\n * @cssproperty --me-box-shadow - The box shadow of the modal. Default is none.\n * @cssproperty --me-background-color - The background color of the modal. Default is canvas.\n * @cssproperty --me-header-spacing - The spacing of the header. Default is 1rem.\n * @cssproperty --me-body-spacing - The spacing of the body. Default is 1rem.\n * @cssproperty --me-footer-spacing - The spacing of the footer. Default is 1rem.\n * @cssproperty --me-header-background-color - The background color of the header. Default is transparent.\n * @cssproperty --me-body-background-color - The background color of the body. Default is transparent.\n * @cssproperty --me-footer-background-color - The background color of the footer. Default is transparent.\n * @cssproperty --me-close-border-radius - The border radius of the close button. Default is 0.\n * @cssproperty --me-close-background-color - The background color of the close button. Default is transparent.\n * @cssproperty --me-backdrop-background - The background shorthand property of the backdrop. Default is rgba(0, 0, 0, 0.5).\n * @cssproperty --me-backdrop-filter - The backdrop filter property of the backdrop. Default is none.\n *\n * @csspart base - The base wrapper of the modal.\n * @csspart panel - The panel wrapper of the modal.\n * @csspart header - The header wrapper of the modal.\n * @csspart title - The title wrapper of the modal.\n * @csspart body - The body wrapper of the modal.\n * @csspart footer - The footer wrapper of the modal.\n * @csspart close - The close button of the modal.\n *\n * @fires me-open - Dispatched when the modal is opened.\n * @fires me-close - Dispatched when the modal is closed.\n * @fires me-request-close - Dispatched when the modal is about to close.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method show - Instance method. Opens the modal if it is closed, otherwise does nothing.\n * @method hide - Instance method. Closes the modal if it is open, otherwise does nothing.\n *\n * @tagname modal-element - This is the default tag name, unless overridden by the `defineCustomElement` method.\n */\nclass ModalElement extends HTMLElement {\n /** @type {Nullable} */\n #dialogEl = null;\n\n /** @type {Nullable} */\n #footerSlotEl = null;\n\n /** @type {ReturnType | undefined} */\n #pulseAnimationTimeout = void 0;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#dialogEl = this.shadowRoot.querySelector('dialog');\n this.#footerSlotEl = this.shadowRoot.querySelector('slot[name=\"footer\"]');\n }\n }\n\n static get observedAttributes() {\n return ['open', 'no-header', 'no-animations', 'no-close-button'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.#dialogEl === null) {\n return;\n }\n\n if (name === 'open' && oldValue !== newValue) {\n if (this.open) {\n this.#dialogEl.showModal();\n\n if (document.body) {\n document.body.style.overflowY = 'hidden';\n }\n\n this.dispatchEvent(new CustomEvent('me-open', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n } else {\n this.#dialogEl.close();\n }\n }\n\n if (name === 'no-header' && oldValue !== newValue) {\n /** @type {Nullable} */\n const headerEl = this.#dialogEl.querySelector('.dialog__header');\n\n if (headerEl !== null) {\n headerEl.hidden = this.noHeader;\n }\n }\n\n if (name === 'no-animations' && oldValue !== newValue) {\n this.#dialogEl.classList.toggle('dialog--no-animations', this.noAnimations);\n }\n\n if (name === 'no-close-button' && oldValue !== newValue) {\n /** @type {Nullable} */\n const closeBtnEl = this.#dialogEl.querySelector('.dialog__close');\n\n if (closeBtnEl !== null) {\n closeBtnEl.hidden = this.noCloseButton;\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('open');\n this.#upgradeProperty('staticBackdrop');\n this.#upgradeProperty('noHeader');\n this.#upgradeProperty('noAnimations');\n this.#upgradeProperty('noCloseButton');\n this.#upgradeProperty('fullscreen');\n\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.addEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.addEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.addEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.addEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#pulseAnimationTimeout && clearTimeout(this.#pulseAnimationTimeout);\n this.#dialogEl?.addEventListener('click', this.#handleDialogClick);\n this.#dialogEl?.removeEventListener('close', this.#handleDialogClose);\n this.#dialogEl?.removeEventListener('cancel', this.#handleDialogCancel);\n this.#dialogEl?.querySelector('form[method=\"dialog\"]')?.removeEventListener('submit', this.#handleCloseButtonClick);\n this.#footerSlotEl?.removeEventListener('slotchange', this.#handleFooterSlotChange);\n }\n\n /**\n * Deternimes if the modal is open or not.\n *\n * @type {boolean} - True if the modal is open, otherwise false.\n * @default false\n * @attribute open - Reflects the open property.\n */\n get open() {\n return this.hasAttribute('open');\n }\n\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n } else {\n this.removeAttribute('open');\n }\n }\n\n /**\n * Determines if the modal should close when the backdrop is clicked.\n *\n * @type {boolean} - True if the modal should close when the backdrop is clicked, otherwise false.\n * @default false\n * @attribute static-backdrop - Reflects the staticBackdrop property.\n */\n get staticBackdrop() {\n return this.hasAttribute('static-backdrop');\n }\n\n set staticBackdrop(value) {\n if (value) {\n this.setAttribute('static-backdrop', '');\n } else {\n this.removeAttribute('static-backdrop');\n }\n }\n\n /**\n * Determines if the modal should have a header or not.\n *\n * @type {boolean} - True if the modal should have a header, otherwise false.\n * @default false\n * @attribute no-header - Reflects the noHeader property.\n */\n get noHeader() {\n return this.hasAttribute('no-header');\n }\n\n set noHeader(value) {\n if (value) {\n this.setAttribute('no-header', '');\n } else {\n this.removeAttribute('no-header');\n }\n }\n\n /**\n * Determines if the modal should have animations or not when opening and closing.\n *\n * @type {boolean} - True if the modal should have animations, otherwise false.\n * @default false\n * @attribute no-animations - Reflects the noAnimations property.\n */\n get noAnimations() {\n return this.hasAttribute('no-animations');\n }\n\n set noAnimations(value) {\n if (value) {\n this.setAttribute('no-animations', '');\n } else {\n this.removeAttribute('no-animations');\n }\n }\n\n /**\n * Determines if the modal should have a default close button or not.\n *\n * @type {boolean} - True if the modal should have a close button, otherwise false.\n * @default false\n * @attribute no-close-button - Reflects the noCloseButton property.\n */\n get noCloseButton() {\n return this.hasAttribute('no-close-button');\n }\n\n set noCloseButton(value) {\n if (value) {\n this.setAttribute('no-close-button', '');\n } else {\n this.removeAttribute('no-close-button');\n }\n }\n\n /**\n * Determines if the modal should be fullscreen or not.\n *\n * @type {boolean} - True if the modal should be fullscreen, otherwise false.\n * @default false\n * @attribute fullscreen - Reflects the fullscreen property.\n */\n get fullscreen() {\n return this.hasAttribute('fullscreen');\n }\n\n set fullscreen(value) {\n if (value) {\n this.setAttribute('fullscreen', '');\n } else {\n this.removeAttribute('fullscreen');\n }\n }\n\n /**\n * Applies a pulse effect on the dialog.\n */\n #applyPulseEffectOnDialog() {\n if (this.#pulseAnimationTimeout) {\n return;\n }\n\n this.#dialogEl?.classList.add('dialog--pulse');\n\n this.#pulseAnimationTimeout = setTimeout(() => {\n this.#dialogEl?.classList.remove('dialog--pulse');\n clearTimeout(this.#pulseAnimationTimeout);\n this.#pulseAnimationTimeout = void 0;\n }, PULSE_ANIMATION_DURATION);\n }\n\n /**\n * Handles the close event of the dialog.\n */\n #handleDialogClose = () => {\n // This is needed because the dialog element does not reset\n // the open property when the dialog is closed by the user.\n this.open = false;\n\n if (document.body) {\n document.body.style.overflowY = '';\n }\n\n this.dispatchEvent(new CustomEvent('me-close', {\n bubbles: true,\n composed: true,\n detail: { element: this }\n }));\n };\n\n /**\n * Handles the cancel event of the dialog.\n * This event is fired when the user presses the escape key.\n *\n * @param {Event} evt - The cancel event.\n */\n #handleDialogCancel = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('escape-key');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the close button.\n *\n * @param {Event} evt - The click event.\n */\n #handleCloseButtonClick = evt => {\n const requestCloseEvent = this.#createRequestCloseEvent('close-button');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented) {\n evt.preventDefault();\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n }\n };\n\n /**\n * Handles the click event of the dialog.\n *\n * @param {MouseEvent} evt - The click event.\n */\n #handleDialogClick = evt => {\n if (evt.target !== evt.currentTarget) {\n return;\n }\n\n const requestCloseEvent = this.#createRequestCloseEvent('backdrop-click');\n\n this.dispatchEvent(requestCloseEvent);\n\n if (requestCloseEvent.defaultPrevented || this.staticBackdrop) {\n !this.noAnimations && this.#applyPulseEffectOnDialog();\n return;\n }\n\n this.#dialogEl?.close();\n };\n\n /**\n * Handles the slotchange event of the footer slot.\n */\n #handleFooterSlotChange = () => {\n if (this.#dialogEl === null) {\n return;\n }\n\n /** @type {Nullable} */\n const footerEl = this.#dialogEl.querySelector('.dialog__footer');\n\n if (footerEl === null) {\n return;\n }\n\n const footerSlotNodes = this.#footerSlotEl?.assignedNodes();\n const hasFooterSlotNodes = footerSlotNodes ? footerSlotNodes.length > 0 : false;\n\n footerEl.hidden = !hasFooterSlotNodes;\n };\n\n /**\n * Creates a request close event.\n *\n * @param {'close-button' | 'escape-key' | 'backdrop-click'} reason - The reason that the modal is about to close.\n */\n #createRequestCloseEvent(reason) {\n return new CustomEvent('me-request-close', {\n bubbles: true,\n composed: true,\n cancelable: true,\n detail: {\n reason,\n element: this\n }\n });\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'open' | 'staticBackdrop' | 'noHeader' | 'noAnimations' | 'noCloseButton' | 'fullscreen'} prop - The property to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Opens the modal if it is closed, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.show();\n */\n show() {\n if (this.open) {\n return;\n }\n\n this.open = true;\n }\n\n /**\n * Closes the modal if it is open, otherwise does nothing.\n * Make sure that the custom element is defined before calling this method.\n *\n * @example\n * const modal = document.querySelector('modal-element');\n * modal.hide();\n */\n hide() {\n if (!this.open) {\n return;\n }\n\n this.open = false;\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='modal-element']\n * @example\n * ModalElement.defineCustomElement('my-modal');\n */\n static defineCustomElement(elementName = 'modal-element') {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, ModalElement);\n }\n }\n}\n\nexport { ModalElement };\n","Object.defineProperty({},\"FilesDropzone\",{get:function(){return m},set:void 0,enumerable:!0,configurable:!0});let e=new Map([[\"aac\",\"audio/aac\"],[\"abw\",\"application/x-abiword\"],[\"arc\",\"application/x-freearc\"],[\"avif\",\"image/avif\"],[\"avi\",\"video/x-msvideo\"],[\"azw\",\"application/vnd.amazon.ebook\"],[\"bin\",\"application/octet-stream\"],[\"bmp\",\"image/bmp\"],[\"bz\",\"application/x-bzip\"],[\"bz2\",\"application/x-bzip2\"],[\"cda\",\"application/x-cdf\"],[\"csh\",\"application/x-csh\"],[\"css\",\"text/css\"],[\"csv\",\"text/csv\"],[\"doc\",\"application/msword\"],[\"docx\",\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"],[\"eot\",\"application/vnd.ms-fontobject\"],[\"epub\",\"application/epub+zip\"],[\"gz\",\"application/gzip\"],[\"gif\",\"image/gif\"],[\"heic\",\"image/heic\"],[\"heif\",\"image/heif\"],[\"htm\",\"text/html\"],[\"html\",\"text/html\"],[\"ico\",\"image/vnd.microsoft.icon\"],[\"ics\",\"text/calendar\"],[\"jar\",\"application/java-archive\"],[\"jpeg\",\"image/jpeg\"],[\"jpg\",\"image/jpeg\"],[\"jxl\",\"image/jxl\"],[\"js\",\"text/javascript\"],[\"json\",\"application/json\"],[\"jsonld\",\"application/ld+json\"],[\"markdown\",\"text/markdown\"],[\"md\",\"text/markdown\"],[\"mid\",\"audio/midi\"],[\"midi\",\"audio/midi\"],[\"mjs\",\"text/javascript\"],[\"mp3\",\"audio/mpeg\"],[\"mp4\",\"video/mp4\"],[\"mpeg\",\"video/mpeg\"],[\"mpkg\",\"application/vnd.apple.installer+xml\"],[\"odp\",\"application/vnd.oasis.opendocument.presentation\"],[\"ods\",\"application/vnd.oasis.opendocument.spreadsheet\"],[\"odt\",\"application/vnd.oasis.opendocument.text\"],[\"oga\",\"audio/ogg\"],[\"ogv\",\"video/ogg\"],[\"ogx\",\"application/ogg\"],[\"opus\",\"audio/opus\"],[\"otf\",\"font/otf\"],[\"png\",\"image/png\"],[\"pdf\",\"application/pdf\"],[\"php\",\"application/x-httpd-php\"],[\"ppt\",\"application/vnd.ms-powerpoint\"],[\"pptx\",\"application/vnd.openxmlformats-officedocument.presentationml.presentation\"],[\"rar\",\"application/vnd.rar\"],[\"rtf\",\"application/rtf\"],[\"sh\",\"application/x-sh\"],[\"svg\",\"image/svg+xml\"],[\"swf\",\"application/x-shockwave-flash\"],[\"tar\",\"application/x-tar\"],[\"tif\",\"image/tiff\"],[\"tiff\",\"image/tiff\"],[\"ts\",\"video/mp2t\"],[\"ttf\",\"font/ttf\"],[\"txt\",\"text/plain\"],[\"vsd\",\"application/vnd.visio\"],[\"wav\",\"audio/wav\"],[\"weba\",\"audio/webm\"],[\"webm\",\"video/webm\"],[\"webp\",\"image/webp\"],[\"woff\",\"font/woff\"],[\"woff2\",\"font/woff2\"],[\"xhtml\",\"application/xhtml+xml\"],[\"xls\",\"application/vnd.ms-excel\"],[\"xlsx\",\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"],[\"xml\",\"application/xml\"],[\"xul\",\"application/vnd.mozilla.xul+xml\"],[\"zip\",\"application/zip\"],[\"7z\",\"application/x-7z-compressed\"],[\"mkv\",\"video/x-matroska\"],[\"mov\",\"video/quicktime\"],[\"msg\",\"application/vnd.ms-outlook\"]]),t=[\".DS_Store\",\"Thumbs.db\"],o=t=>{let{name:o}=t;if(o&&-1!==o.lastIndexOf(\".\")&&!t.type){let i=(o.split(\".\").pop()||\"\").toLowerCase(),r=e.get(i);r&&Object.defineProperty(t,\"type\",{value:r,writable:!1,configurable:!1,enumerable:!0})}return t},i=(e,t)=>{let i=o(e);if(\"string\"!=typeof i.path){let{webkitRelativePath:o}=e;Object.defineProperty(i,\"path\",{value:\"string\"==typeof t?t:o||e.name,writable:!1,configurable:!1,enumerable:!0})}return i},r=async e=>await new Promise((t,o)=>{e.readEntries(t,o)}),a=async e=>{let t=[],o=await r(e);for(;o.length>0;)t.push(...o),o=await r(e);return t},n=e=>new Promise((t,o)=>{e.file(o=>t(i(o,e.fullPath)),o)}),s=async e=>{let o=[],i=[];for(let t of e){if(\"file\"!==t.kind)continue;let e=t.getAsEntry?t.getAsEntry():t.webkitGetAsEntry();i.push(e)}for(;i.length>0;){let e=i.shift();if(e){if(e.isFile){let i=await n(e);-1===t.indexOf(i.name)&&o.push(i)}else e.isDirectory&&i.push(...await a(e.createReader()))}}return o},d=async e=>{let o=[];for(let r of e)-1===t.indexOf(r.name)&&o.push(i(r));return o},l=async e=>e.dataTransfer?e.dataTransfer.items?await s(e.dataTransfer.items):await d(e.dataTransfer.files):await d(e.target.files),p=\"files-dropzone\",c=\"TOO_MANY_FILES\",h=document.createElement(\"template\"),u=`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;h.innerHTML=`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;class m extends HTMLElement{#e=null;#t=null;constructor(){super(),this.shadowRoot||this.attachShadow({mode:\"open\"}).appendChild(h.content.cloneNode(!0)),this.shadowRoot&&(this.#e=this.shadowRoot.getElementById(\"fileInput\"),this.#t=this.shadowRoot.getElementById(\"dropzoneEl\"))}static get observedAttributes(){return[\"accept\",\"disabled\",\"multiple\",\"no-keyboard\"]}attributeChangedCallback(e,t,o){\"accept\"===e&&t!==o&&this.#e&&(this.#e.accept=this.accept),\"disabled\"===e&&t!==o&&this.#e&&(this.#e.disabled=this.disabled,this.disabled?this.#t?.removeAttribute(\"tabindex\"):this.#t?.setAttribute(\"tabindex\",\"0\")),\"multiple\"===e&&t!==o&&this.#e&&(this.#e.multiple=this.multiple),\"no-keyboard\"===e&&t!==o&&this.#t&&(this.noKeyboard?this.#t.removeAttribute(\"tabindex\"):this.#t.setAttribute(\"tabindex\",\"0\"))}connectedCallback(){this.#o(\"accept\"),this.#o(\"disabled\"),this.#o(\"maxFiles\"),this.#o(\"maxSize\"),this.#o(\"minSize\"),this.#o(\"multiple\"),this.#o(\"noClick\"),this.#o(\"noDrag\"),this.#o(\"noKeyboard\"),this.#o(\"autoFocus\"),this.#o(\"noStyle\"),this.#e?.addEventListener(\"change\",this.#i),this.#t?.addEventListener(\"dragenter\",this.#r),this.#t?.addEventListener(\"dragover\",this.#a),this.#t?.addEventListener(\"dragleave\",this.#n),this.#t?.addEventListener(\"drop\",this.#s),this.#t?.addEventListener(\"click\",this.#d),this.#t?.addEventListener(\"keyup\",this.#l),this.autoFocus&&this.#t?.focus()}disconnectedCallback(){this.#e?.removeEventListener(\"change\",this.#i),this.#t?.removeEventListener(\"dragenter\",this.#r),this.#t?.removeEventListener(\"dragover\",this.#a),this.#t?.removeEventListener(\"dragleave\",this.#n),this.#t?.removeEventListener(\"drop\",this.#s),this.#t?.removeEventListener(\"click\",this.#d),this.#t?.removeEventListener(\"keyup\",this.#l)}get accept(){return this.getAttribute(\"accept\")||\"\"}set accept(e){this.setAttribute(\"accept\",null!=e?e.toString():e)}get disabled(){return this.hasAttribute(\"disabled\")}set disabled(e){this.toggleAttribute(\"disabled\",!!e)}get maxFiles(){let e=Number(this.getAttribute(\"max-files\"))||0;return e<=0?1/0:Math.floor(Math.abs(e))}set maxFiles(e){this.setAttribute(\"max-files\",null!=e?e.toString():e)}get maxSize(){let e=this.getAttribute(\"max-size\");if(null===e)return 1/0;let t=Number(e);return Number.isNaN(t)?1/0:t}set maxSize(e){this.setAttribute(\"max-size\",null!=e?e.toString():e)}get minSize(){let e=this.getAttribute(\"min-size\");if(null===e)return 0;let t=Number(e);return Number.isNaN(t)?0:t}set minSize(e){this.setAttribute(\"min-size\",null!=e?e.toString():e)}get multiple(){return this.hasAttribute(\"multiple\")}set multiple(e){this.toggleAttribute(\"multiple\",!!e)}get noClick(){return this.hasAttribute(\"no-click\")}set noClick(e){this.toggleAttribute(\"no-click\",!!e)}get noDrag(){return this.hasAttribute(\"no-drag\")}set noDrag(e){this.toggleAttribute(\"no-drag\",!!e)}get noKeyboard(){return this.hasAttribute(\"no-keyboard\")}set noKeyboard(e){this.toggleAttribute(\"no-keyboard\",!!e)}get autoFocus(){return this.hasAttribute(\"auto-focus\")}set autoFocus(e){this.toggleAttribute(\"auto-focus\",!!e)}get noStyle(){return this.hasAttribute(\"no-style\")}set noStyle(e){this.toggleAttribute(\"no-style\",!!e)}#i=async e=>{try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}};#r=()=>{this.disabled||this.noDrag||this.dispatchEvent(new Event(`${p}-dragenter`,{bubbles:!0,composed:!0}))};#a=e=>{if(e.preventDefault(),this.disabled||this.noDrag){e.dataTransfer.dropEffect=\"none\";return}e.dataTransfer.dropEffect=\"copy\",this.#t&&(this.#t.classList.add(\"dropzone--dragover\"),this.#t.part.add(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragover`,{bubbles:!0,composed:!0}))};#n=()=>{this.disabled||this.noDrag||(this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\")),this.dispatchEvent(new Event(`${p}-dragleave`,{bubbles:!0,composed:!0})))};#s=async e=>{if(!this.disabled&&!this.noDrag){e.preventDefault(),this.#t&&(this.#t.classList.remove(\"dropzone--dragover\"),this.#t.part.remove(\"dropzone--dragover\"));try{this.#p(await l(e))}catch(e){this.dispatchEvent(new CustomEvent(`${p}-error`,{bubbles:!0,composed:!0,detail:{error:e}}))}}};#d=()=>{this.disabled||this.noClick||this.#e?.click()};#l=e=>{this.disabled||this.noKeyboard||\" \"!==e.key&&\"Enter\"!==e.key||this.#e?.click()};#p(e){if(!Array.isArray(e)||!e.length)return;let t=[],o=[],i=e.length;if(!this.multiple&&i>1)for(let t of e)o.push({file:t,errors:[{code:c,message:\"Too many files selected. Only 1 file is allowed.\"}]});else if(this.multiple&&i>this.maxFiles)for(let t of e)o.push({file:t,errors:[{code:c,message:`Too many files selected. Only ${this.maxFiles} ${this.maxFiles>1?\"files are\":\"file is\"} allowed.`}]});else for(let i of e){let e=function(e,t=\"\"){if(!t)return!0;let o=[...new Set(t.split(\",\").map(e=>e.trim()).filter(Boolean))],i=e.type,r=i.replace(/\\/.*$/,\"\");for(let t of o)if(\".\"===t.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(t.toLowerCase(),e.name.length-t.length))return!0}else if(/\\/\\*$/.test(t)){if(r===t.replace(/\\/.*$/,\"\"))return!0}else if(i===t)return!0;return!1}(i,this.accept),r=i.size>this.maxSize,a=i.size0&&this.dispatchEvent(new CustomEvent(`${p}-drop-accepted`,{bubbles:!0,composed:!0,detail:{acceptedFiles:t}})),o.length>0&&this.dispatchEvent(new CustomEvent(`${p}-drop-rejected`,{bubbles:!0,composed:!0,detail:{rejectedFiles:o}})),this.#e&&(this.#e.value=this.#e.defaultValue)}openFileDialog(){this.disabled||this.#e?.click()}#o(e){if(Object.prototype.hasOwnProperty.call(this,e)){let t=this[e];delete this[e],this[e]=t}}static defineCustomElement(e=p){\"undefined\"==typeof window||window.customElements.get(e)||window.customElements.define(e,m)}}m.defineCustomElement();export{m as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","function $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $862aa3736b0514bc$exports = {};\n\n$parcel$export($862aa3736b0514bc$exports, \"FilesDropzone\", function () { return $862aa3736b0514bc$export$6ccd1735166caad9; });\n// @ts-check\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */ // @ts-check\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */ function $38f222170fd4d21a$export$7c47054fed488f80(file, acceptedTypeSpecifiers = \"\") {\n if (!acceptedTypeSpecifiers) return true;\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(\",\").map((v)=>v.trim()).filter(Boolean))\n ];\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, \"\");\n for (const validType of acceptedMimeTypesList){\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (fileMimeType === validType) return true;\n }\n }\n return false;\n}\n\n\n// @ts-check\n/**\n * A map of common file extensions and their associated MIME types.\n */ const $f31161edf38949e9$var$COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n [\n \"aac\",\n \"audio/aac\"\n ],\n [\n \"abw\",\n \"application/x-abiword\"\n ],\n [\n \"arc\",\n \"application/x-freearc\"\n ],\n [\n \"avif\",\n \"image/avif\"\n ],\n [\n \"avi\",\n \"video/x-msvideo\"\n ],\n [\n \"azw\",\n \"application/vnd.amazon.ebook\"\n ],\n [\n \"bin\",\n \"application/octet-stream\"\n ],\n [\n \"bmp\",\n \"image/bmp\"\n ],\n [\n \"bz\",\n \"application/x-bzip\"\n ],\n [\n \"bz2\",\n \"application/x-bzip2\"\n ],\n [\n \"cda\",\n \"application/x-cdf\"\n ],\n [\n \"csh\",\n \"application/x-csh\"\n ],\n [\n \"css\",\n \"text/css\"\n ],\n [\n \"csv\",\n \"text/csv\"\n ],\n [\n \"doc\",\n \"application/msword\"\n ],\n [\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \"eot\",\n \"application/vnd.ms-fontobject\"\n ],\n [\n \"epub\",\n \"application/epub+zip\"\n ],\n [\n \"gz\",\n \"application/gzip\"\n ],\n [\n \"gif\",\n \"image/gif\"\n ],\n [\n \"heic\",\n \"image/heic\"\n ],\n [\n \"heif\",\n \"image/heif\"\n ],\n [\n \"htm\",\n \"text/html\"\n ],\n [\n \"html\",\n \"text/html\"\n ],\n [\n \"ico\",\n \"image/vnd.microsoft.icon\"\n ],\n [\n \"ics\",\n \"text/calendar\"\n ],\n [\n \"jar\",\n \"application/java-archive\"\n ],\n [\n \"jpeg\",\n \"image/jpeg\"\n ],\n [\n \"jpg\",\n \"image/jpeg\"\n ],\n [\n \"jxl\",\n \"image/jxl\"\n ],\n [\n \"js\",\n \"text/javascript\"\n ],\n [\n \"json\",\n \"application/json\"\n ],\n [\n \"jsonld\",\n \"application/ld+json\"\n ],\n [\n \"markdown\",\n \"text/markdown\"\n ],\n [\n \"md\",\n \"text/markdown\"\n ],\n [\n \"mid\",\n \"audio/midi\"\n ],\n [\n \"midi\",\n \"audio/midi\"\n ],\n [\n \"mjs\",\n \"text/javascript\"\n ],\n [\n \"mp3\",\n \"audio/mpeg\"\n ],\n [\n \"mp4\",\n \"video/mp4\"\n ],\n [\n \"mpeg\",\n \"video/mpeg\"\n ],\n [\n \"mpkg\",\n \"application/vnd.apple.installer+xml\"\n ],\n [\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\"\n ],\n [\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\"\n ],\n [\n \"odt\",\n \"application/vnd.oasis.opendocument.text\"\n ],\n [\n \"oga\",\n \"audio/ogg\"\n ],\n [\n \"ogv\",\n \"video/ogg\"\n ],\n [\n \"ogx\",\n \"application/ogg\"\n ],\n [\n \"opus\",\n \"audio/opus\"\n ],\n [\n \"otf\",\n \"font/otf\"\n ],\n [\n \"png\",\n \"image/png\"\n ],\n [\n \"pdf\",\n \"application/pdf\"\n ],\n [\n \"php\",\n \"application/x-httpd-php\"\n ],\n [\n \"ppt\",\n \"application/vnd.ms-powerpoint\"\n ],\n [\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \"rar\",\n \"application/vnd.rar\"\n ],\n [\n \"rtf\",\n \"application/rtf\"\n ],\n [\n \"sh\",\n \"application/x-sh\"\n ],\n [\n \"svg\",\n \"image/svg+xml\"\n ],\n [\n \"swf\",\n \"application/x-shockwave-flash\"\n ],\n [\n \"tar\",\n \"application/x-tar\"\n ],\n [\n \"tif\",\n \"image/tiff\"\n ],\n [\n \"tiff\",\n \"image/tiff\"\n ],\n [\n \"ts\",\n \"video/mp2t\"\n ],\n [\n \"ttf\",\n \"font/ttf\"\n ],\n [\n \"txt\",\n \"text/plain\"\n ],\n [\n \"vsd\",\n \"application/vnd.visio\"\n ],\n [\n \"wav\",\n \"audio/wav\"\n ],\n [\n \"weba\",\n \"audio/webm\"\n ],\n [\n \"webm\",\n \"video/webm\"\n ],\n [\n \"webp\",\n \"image/webp\"\n ],\n [\n \"woff\",\n \"font/woff\"\n ],\n [\n \"woff2\",\n \"font/woff2\"\n ],\n [\n \"xhtml\",\n \"application/xhtml+xml\"\n ],\n [\n \"xls\",\n \"application/vnd.ms-excel\"\n ],\n [\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \"xml\",\n \"application/xml\"\n ],\n [\n \"xul\",\n \"application/vnd.mozilla.xul+xml\"\n ],\n [\n \"zip\",\n \"application/zip\"\n ],\n [\n \"7z\",\n \"application/x-7z-compressed\"\n ],\n // Others\n [\n \"mkv\",\n \"video/x-matroska\"\n ],\n [\n \"mov\",\n \"video/quicktime\"\n ],\n [\n \"msg\",\n \"application/vnd.ms-outlook\"\n ]\n]);\nconst $f31161edf38949e9$var$FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n \".DS_Store\",\n \"Thumbs.db\" // Windows\n];\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */ const $f31161edf38949e9$var$toFileWithMimeType = (file)=>{\n const { name: name } = file;\n const hasExtension = name && name.lastIndexOf(\".\") !== -1;\n if (hasExtension && !file.type) {\n const extension = (name.split(\".\").pop() || \"\").toLowerCase();\n const type = $f31161edf38949e9$var$COMMON_MIME_TYPES.get(extension);\n if (type) Object.defineProperty(file, \"type\", {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return file;\n};\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */ const $f31161edf38949e9$var$toFileWithPath = (file, path)=>{\n const fileWithMimeType = $f31161edf38949e9$var$toFileWithMimeType(file);\n // @ts-ignore\n if (typeof fileWithMimeType.path !== \"string\") {\n const { webkitRelativePath: webkitRelativePath } = file;\n Object.defineProperty(fileWithMimeType, \"path\", {\n value: typeof path === \"string\" ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return fileWithMimeType;\n};\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readEntriesPromise = async (directoryReader)=>{\n return await new Promise((resolve, reject)=>{\n directoryReader.readEntries(resolve, reject);\n });\n};\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */ const $f31161edf38949e9$var$readAllDirectoryEntries = async (directoryReader)=>{\n const entries = [];\n let readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n while(readEntries.length > 0){\n entries.push(...readEntries);\n readEntries = await $f31161edf38949e9$var$readEntriesPromise(directoryReader);\n }\n return entries;\n};\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */ const $f31161edf38949e9$var$getFileFromFileEntry = (fileEntry)=>{\n return new Promise((resolve, reject)=>{\n fileEntry.file((file)=>resolve($f31161edf38949e9$var$toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromDataTransferItemList = async (dataTransferItemList)=>{\n const files = [];\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n for (const item of dataTransferItemList){\n if (item.kind !== \"file\") continue;\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n queue.push(entry);\n }\n while(queue.length > 0){\n const entry = queue.shift();\n if (!entry) continue;\n else if (entry.isFile) {\n const file = await $f31161edf38949e9$var$getFileFromFileEntry(entry);\n if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push(file);\n } else if (entry.isDirectory) queue.push(...await $f31161edf38949e9$var$readAllDirectoryEntries(entry.createReader()));\n }\n return files;\n};\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */ const $f31161edf38949e9$var$getFilesFromFileList = async (fileList)=>{\n const files = [];\n for (const file of fileList)if ($f31161edf38949e9$var$FILES_TO_IGNORE.indexOf(file.name) === -1) files.push($f31161edf38949e9$var$toFileWithPath(file));\n return files;\n};\nconst $f31161edf38949e9$export$6d52664cd15c442 = async (evt)=>{\n if (evt.dataTransfer) return evt.dataTransfer.items ? await $f31161edf38949e9$var$getFilesFromDataTransferItemList(evt.dataTransfer.items) : await $f31161edf38949e9$var$getFilesFromFileList(evt.dataTransfer.files);\n return await $f31161edf38949e9$var$getFilesFromFileList(evt.target.files);\n};\n\n\nconst $862aa3736b0514bc$var$COMPONENT_NAME = \"files-dropzone\";\nconst $862aa3736b0514bc$var$TOO_MANY_FILES = \"TOO_MANY_FILES\";\nconst $862aa3736b0514bc$var$FILE_TOO_LARGE = \"FILE_TOO_LARGE\";\nconst $862aa3736b0514bc$var$FILE_TOO_SMALL = \"FILE_TOO_SMALL\";\nconst $862aa3736b0514bc$var$INVALID_MIME_TYPE = \"INVALID_MIME_TYPE\";\nconst $862aa3736b0514bc$var$template = document.createElement(\"template\");\nconst $862aa3736b0514bc$var$styles = /* css */ `\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n$862aa3736b0514bc$var$template.innerHTML = /* html */ `\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */ class $862aa3736b0514bc$export$6ccd1735166caad9 extends HTMLElement {\n /** @type {Nullable} */ #fileInput = null;\n /** @type {Nullable} */ #dropzoneEl = null;\n constructor(){\n super();\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({\n mode: \"open\"\n });\n shadowRoot.appendChild($862aa3736b0514bc$var$template.content.cloneNode(true));\n }\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */ this.shadowRoot.getElementById(\"fileInput\");\n this.#dropzoneEl = this.shadowRoot.getElementById(\"dropzoneEl\");\n }\n }\n static get observedAttributes() {\n return [\n \"accept\",\n \"disabled\",\n \"multiple\",\n \"no-keyboard\"\n ];\n }\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */ attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"accept\" && oldValue !== newValue && this.#fileInput) this.#fileInput.accept = this.accept;\n if (name === \"disabled\" && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n if (this.disabled) this.#dropzoneEl?.removeAttribute(\"tabindex\");\n else this.#dropzoneEl?.setAttribute(\"tabindex\", \"0\");\n }\n if (name === \"multiple\" && oldValue !== newValue && this.#fileInput) this.#fileInput.multiple = this.multiple;\n if (name === \"no-keyboard\" && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) this.#dropzoneEl.removeAttribute(\"tabindex\");\n else this.#dropzoneEl.setAttribute(\"tabindex\", \"0\");\n }\n }\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */ connectedCallback() {\n this.#upgradeProperty(\"accept\");\n this.#upgradeProperty(\"disabled\");\n this.#upgradeProperty(\"maxFiles\");\n this.#upgradeProperty(\"maxSize\");\n this.#upgradeProperty(\"minSize\");\n this.#upgradeProperty(\"multiple\");\n this.#upgradeProperty(\"noClick\");\n this.#upgradeProperty(\"noDrag\");\n this.#upgradeProperty(\"noKeyboard\");\n this.#upgradeProperty(\"autoFocus\");\n this.#upgradeProperty(\"noStyle\");\n this.#fileInput?.addEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.addEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.addEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.addEventListener(\"keyup\", this.#handleKeyUp);\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */ disconnectedCallback() {\n this.#fileInput?.removeEventListener(\"change\", this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener(\"dragenter\", this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener(\"dragover\", this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener(\"dragleave\", this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener(\"drop\", this.#handleDrop);\n this.#dropzoneEl?.removeEventListener(\"click\", this.#handleClick);\n this.#dropzoneEl?.removeEventListener(\"keyup\", this.#handleKeyUp);\n }\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */ get accept() {\n return this.getAttribute(\"accept\") || \"\";\n }\n set accept(value) {\n this.setAttribute(\"accept\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */ get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n this.toggleAttribute(\"disabled\", !!value);\n }\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */ get maxFiles() {\n const num = Number(this.getAttribute(\"max-files\")) || 0;\n if (num <= 0) return Infinity;\n return Math.floor(Math.abs(num));\n }\n set maxFiles(value) {\n this.setAttribute(\"max-files\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */ get maxSize() {\n const value = this.getAttribute(\"max-size\");\n if (value === null) return Infinity;\n const num = Number(value);\n return Number.isNaN(num) ? Infinity : num;\n }\n set maxSize(value) {\n this.setAttribute(\"max-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */ get minSize() {\n const value = this.getAttribute(\"min-size\");\n if (value === null) return 0;\n const num = Number(value);\n return Number.isNaN(num) ? 0 : num;\n }\n set minSize(value) {\n this.setAttribute(\"min-size\", value != null ? value.toString() : value);\n }\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */ get multiple() {\n return this.hasAttribute(\"multiple\");\n }\n set multiple(value) {\n this.toggleAttribute(\"multiple\", !!value);\n }\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */ get noClick() {\n return this.hasAttribute(\"no-click\");\n }\n set noClick(value) {\n this.toggleAttribute(\"no-click\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */ get noDrag() {\n return this.hasAttribute(\"no-drag\");\n }\n set noDrag(value) {\n this.toggleAttribute(\"no-drag\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */ get noKeyboard() {\n return this.hasAttribute(\"no-keyboard\");\n }\n set noKeyboard(value) {\n this.toggleAttribute(\"no-keyboard\", !!value);\n }\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */ get autoFocus() {\n return this.hasAttribute(\"auto-focus\");\n }\n set autoFocus(value) {\n this.toggleAttribute(\"auto-focus\", !!value);\n }\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */ get noStyle() {\n return this.hasAttribute(\"no-style\");\n }\n set noStyle(value) {\n this.toggleAttribute(\"no-style\", !!value);\n }\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */ #handleFileInputChange = async (evt)=>{\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the dragenter event of the dropzone.\n */ #handleDragEnter = ()=>{\n if (this.disabled || this.noDrag) return;\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDragOver = (evt)=>{\n evt.preventDefault();\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = \"none\";\n return;\n }\n evt.dataTransfer.dropEffect = \"copy\";\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add(\"dropzone--dragover\");\n this.#dropzoneEl.part.add(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the dragleave event of the dropzone.\n */ #handleDragLeave = ()=>{\n if (this.disabled || this.noDrag) return;\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n this.dispatchEvent(new Event(`${$862aa3736b0514bc$var$COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleDrop = async (evt)=>{\n if (this.disabled || this.noDrag) return;\n evt.preventDefault();\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove(\"dropzone--dragover\");\n this.#dropzoneEl.part.remove(\"dropzone--dragover\");\n }\n try {\n this.#handleFilesSelect(await (0, $f31161edf38949e9$export$6d52664cd15c442)(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: {\n error: error\n }\n }));\n }\n };\n /**\n * Handles the click event of the dropzone.\n */ #handleClick = ()=>{\n if (this.disabled || this.noClick) return;\n this.#fileInput?.click();\n };\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */ #handleKeyUp = (evt)=>{\n if (this.disabled || this.noKeyboard) return;\n if (evt.key === \" \" || evt.key === \"Enter\") this.#fileInput?.click();\n };\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */ #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) return;\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }\n ]\n });\n else if (this.multiple && filesLength > this.maxFiles) // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files)rejectedFiles.push({\n file: file,\n errors: [\n {\n code: $862aa3736b0514bc$var$TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? \"files are\" : \"file is\"} allowed.`\n }\n ]\n });\n else // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files){\n const fileHasValidType = (0, $38f222170fd4d21a$export$7c47054fed488f80)(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) acceptedFiles.push(file);\n else {\n const errors = [];\n if (!fileHasValidType) errors.push({\n code: $862aa3736b0514bc$var$INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n if (fileExceedsMaxSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n if (fileIsSmallerThanMinSize) errors.push({\n code: $862aa3736b0514bc$var$FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n rejectedFiles.push({\n file: file,\n errors: errors\n });\n }\n }\n this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles,\n rejectedFiles: rejectedFiles\n }\n }));\n if (acceptedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles: acceptedFiles\n }\n }));\n if (rejectedFiles.length > 0) this.dispatchEvent(new CustomEvent(`${$862aa3736b0514bc$var$COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles: rejectedFiles\n }\n }));\n if (this.#fileInput) this.#fileInput.value = this.#fileInput.defaultValue;\n }\n /**\n * Opens the file dialog programmatically.\n */ openFileDialog() {\n if (this.disabled) return;\n this.#fileInput?.click();\n }\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */ #upgradeProperty(prop) {\n /** @type {any} */ const instance = this;\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */ static defineCustomElement(elementName = $862aa3736b0514bc$var$COMPONENT_NAME) {\n if (typeof window !== \"undefined\" && !window.customElements.get(elementName)) window.customElements.define(elementName, $862aa3736b0514bc$export$6ccd1735166caad9);\n }\n}\n\n\n(0, $862aa3736b0514bc$export$6ccd1735166caad9).defineCustomElement();\n\n\nexport {$862aa3736b0514bc$export$6ccd1735166caad9 as FilesDropzone};\n//# sourceMappingURL=files-dropzone-defined.js.map\n","import { FilesDropzone } from './files-dropzone.js';\n\nFilesDropzone.defineCustomElement();\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Represents a value that may be of type T, or null.\n *\n * @template T\n * @typedef {T | null} Nullable\n */\n\nimport { isValidFile } from './utils/is-valid-file.js';\nimport { getFilesFromEvent } from './utils/files-selector.js';\n\nconst COMPONENT_NAME = 'files-dropzone';\nconst TOO_MANY_FILES = 'TOO_MANY_FILES';\nconst FILE_TOO_LARGE = 'FILE_TOO_LARGE';\nconst FILE_TOO_SMALL = 'FILE_TOO_SMALL';\nconst INVALID_MIME_TYPE = 'INVALID_MIME_TYPE';\nconst template = document.createElement('template');\n\nconst styles = /* css */`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host([hidden]),\n [hidden] {\n display: none !important;\n }\n\n :host {\n --dropzone-border-width: 2px;\n --dropzone-border-style: dashed;\n --dropzone-border-radius: 0.25rem;\n --dropzone-border-color: #6c757d;\n --dropzone-border-color-dragover: #0d6efd;\n --dropzone-border-color-hover: var(--dropzone-border-color-dragover);\n --dropzone-background-color: #ffffff;\n --dropzone-background-color-dragover: #f4f4f5;\n --dropzone-background-color-hover: var(--dropzone-background-color-dragover);\n --dropzone-body-color: #3f3f46;\n --dropzone-body-color-dragover: var(--dropzone-body-color);\n --dropzone-body-color-hover: var(--dropzone-body-color-dragover);\n --dropzone-focus-shadow-rgb: 49,132,253;\n --dropzone-focus-box-shadow: 0 0 0 0.25rem rgba(var(--dropzone-focus-shadow-rgb), 0.5);\n --transition-duration: 0.2s; /* for backwards compatibility */\n --dropzone-transition-duration: var(--transition-duration);\n\n display: block;\n }\n\n :host(:not([no-style])) .dropzone {\n border: var(--dropzone-border-width) var(--dropzone-border-style) var(--dropzone-border-color);\n border-radius: var(--dropzone-border-radius);\n padding: 3rem 1rem;\n overflow: hidden;\n background-color: var(--dropzone-background-color);\n color: var(--dropzone-body-color);\n text-align: center;\n cursor: pointer;\n transition: border var(--dropzone-transition-duration) ease-in-out, background-color var(--dropzone-transition-duration) ease-in-out, color var(--dropzone-transition-duration) ease-in-out, box-shadow var(--dropzone-transition-duration) ease-in-out;\n }\n\n :host(:not([no-style])[no-click]) .dropzone {\n cursor: default;\n }\n\n :host(:not([no-style])[disabled]) .dropzone {\n opacity: 0.8;\n cursor: not-allowed;\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone--dragover {\n border-color: var(--dropzone-border-color-dragover);\n background-color: var(--dropzone-background-color-dragover);\n color: var(--dropzone-body-color-dragover);\n }\n\n :host(:not([no-style]):not([disabled])) .dropzone:focus-visible {\n outline: none;\n box-shadow: var(--dropzone-focus-box-shadow);\n }\n\n @media (hover: hover) {\n :host(:not([no-style]):not([disabled])) .dropzone:not(.dropzone--dragover):hover {\n border-color: var(--dropzone-border-color-hover);\n background-color: var(--dropzone-background-color-hover);\n color: var(--dropzone-body-color-hover);\n }\n }\n`;\n\ntemplate.innerHTML = /* html */`\n \n\n \n\n
\n Drag 'n' drop files here, or click to select files\n
\n`;\n\n/**\n * @summary A custom element that allows users to drag and drop files into it.\n * @documentation https://github.com/georapbox/files-dropzone-element\n *\n * @tagname files-dropzone - This is the default tag name, unless overridden by the `defineCustomElement` method.\n *\n * @property {string} accept - A comma-separated list of unique file type specifiers describing file types to allow.\n * @property {boolean} disabled - Determines whether the dropzone is disabled.\n * @property {number} maxFiles - The maximum number of files allowed to be dropped.\n * @property {number} maxSize - The maximum file size allowed in bytes.\n * @property {number} minSize - The minimum file size allowed in bytes.\n * @property {boolean} multiple - Allows multiple files to be dropped.\n * @property {boolean} noClick - Prevents the file dialog from opening when the dropzone is clicked.\n * @property {boolean} noDrag - Prevents the dropzone from reacting to drag events.\n * @property {boolean} noKeyboard - Prevents the dropzone from reacting to keyboard events.\n * @property {boolean} autoFocus - Automatically focuses the dropzone when it's connected to the DOM.\n * @property {boolean} noStyle - Prevents the dropzone from applying any styling.\n *\n * @attribute {string} accept - Reflects the accept property.\n * @attribute {boolean} disabled - Reflects the disabled property.\n * @attribute {number} max-files - Reflects the maxFiles property.\n * @attribute {number} max-size - Reflects the maxSize property.\n * @attribute {number} min-size - Reflects the minSize property.\n * @attribute {boolean} multiple - Reflects the multiple property.\n * @attribute {boolean} no-click - Reflects the noClick property.\n * @attribute {boolean} no-drag - Reflects the noDrag property.\n * @attribute {boolean} no-keyboard - Reflects the noKeyboard property.\n * @attribute {boolean} auto-focus - Reflects the autoFocus property.\n * @attribute {boolean} no-style - Reflects the noStyle property.\n *\n * @slot - The default slot content of the dropzone.\n *\n * @csspart dropzone - The dropzone element.\n * @csspart dropzone--dragover - The state of the dropzone when dragging over it.\n *\n * @cssproperty --dropzone-border-width - The border width of the dropzone.\n * @cssproperty --dropzone-border-style - The border style of the dropzone.\n * @cssproperty --dropzone-border-radius - The border radius of the dropzone.\n * @cssproperty --dropzone-border-color - The border color of the dropzone.\n * @cssproperty --dropzone-border-color-dragover - The border color of the dropzone when dragging over it.\n * @cssproperty --dropzone-border-color-hover - The border color of the dropzone when hovering over it.\n * @cssproperty --dropzone-background-color - The background color of the dropzone.\n * @cssproperty --dropzone-background-color-dragover - The background color of the dropzone when dragging over it.\n * @cssproperty --dropzone-background-color-hover - The background color of the dropzone when hovering over it.\n * @cssproperty --dropzone-body-color - The text color of the dropzone.\n * @cssproperty --dropzone-body-color-dragover - The text color of the dropzone when dragging over it.\n * @cssproperty --dropzone-body-color-hover - The text color of the dropzone when hovering over it.\n * @cssproperty --dropzone-focus-shadow-rgb - The RGB value of the dropzone's focus shadow.\n * @cssproperty --dropzone-focus-box-shadow - The box shadow of the dropzone when focused.\n * @cssproperty --dropzone-transition-duration - The transition's duration for the dropzone area.\n *\n * @event files-dropzone-drop - Fired when files are dropped.\n * @event files-dropzone-drop-accepted - Fired when files dropped files are accepted.\n * @event files-dropzone-drop-rejected - Fired when files dropped files are rejected.\n * @event files-dropzone-dragenter - Fired when files are dragged into the dropzone.\n * @event files-dropzone-dragover - Fired when files are dragged over the dropzone.\n * @event files-dropzone-dragleave - Fired when files are dragged out of the dropzone.\n * @event files-dropzone-error - Fired when there is any error in the process of reading dropped files or directories.\n *\n * @method defineCustomElement - Static method. Defines a custom element with the given name.\n * @method openFileDialog - Instance method. Opens the file dialog programmatically.\n */\nclass FilesDropzone extends HTMLElement {\n /** @type {Nullable} */\n #fileInput = null;\n\n /** @type {Nullable} */\n #dropzoneEl = null;\n\n constructor() {\n super();\n\n if (!this.shadowRoot) {\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.appendChild(template.content.cloneNode(true));\n }\n\n if (this.shadowRoot) {\n this.#fileInput = /** @type {Nullable} */(this.shadowRoot.getElementById('fileInput'));\n this.#dropzoneEl = this.shadowRoot.getElementById('dropzoneEl');\n }\n }\n\n static get observedAttributes() {\n return ['accept', 'disabled', 'multiple', 'no-keyboard'];\n }\n\n /**\n * Lifecycle method that is called when attributes are changed, added, removed, or replaced.\n *\n * @param {string} name - The name of the attribute.\n * @param {string} oldValue - The old value of the attribute.\n * @param {string} newValue - The new value of the attribute.\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'accept' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.accept = this.accept;\n }\n\n if (name === 'disabled' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.disabled = this.disabled;\n\n if (this.disabled) {\n this.#dropzoneEl?.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl?.setAttribute('tabindex', '0');\n }\n }\n\n if (name === 'multiple' && oldValue !== newValue && this.#fileInput) {\n this.#fileInput.multiple = this.multiple;\n }\n\n if (name === 'no-keyboard' && oldValue !== newValue && this.#dropzoneEl) {\n if (this.noKeyboard) {\n this.#dropzoneEl.removeAttribute('tabindex');\n } else {\n this.#dropzoneEl.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Lifecycle method that is called when the element is added to the DOM.\n */\n connectedCallback() {\n this.#upgradeProperty('accept');\n this.#upgradeProperty('disabled');\n this.#upgradeProperty('maxFiles');\n this.#upgradeProperty('maxSize');\n this.#upgradeProperty('minSize');\n this.#upgradeProperty('multiple');\n this.#upgradeProperty('noClick');\n this.#upgradeProperty('noDrag');\n this.#upgradeProperty('noKeyboard');\n this.#upgradeProperty('autoFocus');\n this.#upgradeProperty('noStyle');\n\n this.#fileInput?.addEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.addEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.addEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.addEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.addEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.addEventListener('click', this.#handleClick);\n this.#dropzoneEl?.addEventListener('keyup', this.#handleKeyUp);\n\n this.autoFocus && this.#dropzoneEl?.focus();\n }\n\n /**\n * Lifecycle method that is called when the element is removed from the DOM.\n */\n disconnectedCallback() {\n this.#fileInput?.removeEventListener('change', this.#handleFileInputChange);\n this.#dropzoneEl?.removeEventListener('dragenter', this.#handleDragEnter);\n this.#dropzoneEl?.removeEventListener('dragover', this.#handleDragOver);\n this.#dropzoneEl?.removeEventListener('dragleave', this.#handleDragLeave);\n this.#dropzoneEl?.removeEventListener('drop', this.#handleDrop);\n this.#dropzoneEl?.removeEventListener('click', this.#handleClick);\n this.#dropzoneEl?.removeEventListener('keyup', this.#handleKeyUp);\n }\n\n /**\n * @type {string} - A comma-separated list of unique file type specifiers describing file types to allow.\n * @attribute accept - Reflects the accept property.\n */\n get accept() {\n return this.getAttribute('accept') || '';\n }\n\n set accept(value) {\n this.setAttribute('accept', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Determines whether the dropzone is disabled.\n * @default false\n * @attribute disabled - Reflects the disabled property.\n */\n get disabled() {\n return this.hasAttribute('disabled');\n }\n\n set disabled(value) {\n this.toggleAttribute('disabled', !!value);\n }\n\n /**\n * @type {number} - The maximum number of files allowed to be dropped.\n * @default Infinity\n * @attribute max-files - Reflects the maxFiles property.\n */\n get maxFiles() {\n const num = Number(this.getAttribute('max-files')) || 0;\n\n if (num <= 0) {\n return Infinity;\n }\n\n return Math.floor(Math.abs(num));\n }\n\n set maxFiles(value) {\n this.setAttribute('max-files', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The maximum file size allowed in bytes.\n * @default Infinity\n * @attribute max-size - Reflects the maxSize property.\n */\n get maxSize() {\n const value = this.getAttribute('max-size');\n\n if (value === null) {\n return Infinity;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? Infinity : num;\n }\n\n set maxSize(value) {\n this.setAttribute('max-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {number} - The minimum file size allowed in bytes.\n * @default 0\n * @attribute min-size - Reflects the minSize property.\n */\n get minSize() {\n const value = this.getAttribute('min-size');\n\n if (value === null) {\n return 0;\n }\n\n const num = Number(value);\n\n return Number.isNaN(num) ? 0 : num;\n }\n\n set minSize(value) {\n this.setAttribute('min-size', value != null ? value.toString() : value);\n }\n\n /**\n * @type {boolean} - Allows multiple files to be dropped.\n * @default false\n * @attribute multiple - Reflects the multiple property.\n */\n get multiple() {\n return this.hasAttribute('multiple');\n }\n\n set multiple(value) {\n this.toggleAttribute('multiple', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the file dialog from opening when the dropzone is clicked.\n * @default false\n * @attribute no-click - Reflects the noClick property.\n */\n get noClick() {\n return this.hasAttribute('no-click');\n }\n\n set noClick(value) {\n this.toggleAttribute('no-click', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to drag events.\n * @default false\n * @attribute no-drag - Reflects the noDrag property.\n */\n get noDrag() {\n return this.hasAttribute('no-drag');\n }\n\n set noDrag(value) {\n this.toggleAttribute('no-drag', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from reacting to keyboard events.\n * @default false\n * @attribute no-keyboard - Reflects the noKeyboard property.\n */\n get noKeyboard() {\n return this.hasAttribute('no-keyboard');\n }\n\n set noKeyboard(value) {\n this.toggleAttribute('no-keyboard', !!value);\n }\n\n /**\n * @type {boolean} - Automatically focuses the dropzone when it's connected to the DOM.\n * @default false\n * @attribute auto-focus - Reflects the autoFocus property.\n */\n get autoFocus() {\n return this.hasAttribute('auto-focus');\n }\n\n set autoFocus(value) {\n this.toggleAttribute('auto-focus', !!value);\n }\n\n /**\n * @type {boolean} - Prevents the dropzone from applying any styling.\n * @default false\n * @attribute no-style - Reflects the noStyle property.\n */\n get noStyle() {\n return this.hasAttribute('no-style');\n }\n\n set noStyle(value) {\n this.toggleAttribute('no-style', !!value);\n }\n\n /**\n * Handles the change event of the file input.\n *\n * @param {*} evt - The event object.\n */\n #handleFileInputChange = async evt => {\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the dragenter event of the dropzone.\n */\n #handleDragEnter = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragenter`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragover event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDragOver = evt => {\n evt.preventDefault();\n\n if (this.disabled || this.noDrag) {\n evt.dataTransfer.dropEffect = 'none';\n return;\n }\n\n evt.dataTransfer.dropEffect = 'copy';\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.add('dropzone--dragover');\n this.#dropzoneEl.part.add('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragover`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the dragleave event of the dropzone.\n */\n #handleDragLeave = () => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n this.dispatchEvent(new Event(`${COMPONENT_NAME}-dragleave`, {\n bubbles: true,\n composed: true\n }));\n };\n\n /**\n * Handles the drop event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleDrop = async evt => {\n if (this.disabled || this.noDrag) {\n return;\n }\n\n evt.preventDefault();\n\n if (this.#dropzoneEl) {\n this.#dropzoneEl.classList.remove('dropzone--dragover');\n this.#dropzoneEl.part.remove('dropzone--dragover');\n }\n\n try {\n this.#handleFilesSelect(await getFilesFromEvent(evt));\n } catch (error) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-error`, {\n bubbles: true,\n composed: true,\n detail: { error }\n }));\n }\n };\n\n /**\n * Handles the click event of the dropzone.\n */\n #handleClick = () => {\n if (this.disabled || this.noClick) {\n return;\n }\n\n this.#fileInput?.click();\n };\n\n /**\n * Handles the keyup event of the dropzone.\n *\n * @param {*} evt - The event object.\n */\n #handleKeyUp = evt => {\n if (this.disabled || this.noKeyboard) {\n return;\n }\n\n if (evt.key === ' ' || evt.key === 'Enter') {\n this.#fileInput?.click();\n }\n };\n\n /**\n * Handles the selection of files.\n *\n * @param {File[]} files - The files to handle.\n */\n #handleFilesSelect(files) {\n if (!Array.isArray(files) || !files.length) {\n return;\n }\n\n const acceptedFiles = [];\n const rejectedFiles = [];\n const filesLength = files.length;\n\n // If the component is not in multiple mode, reject all files.\n if (!this.multiple && filesLength > 1) {\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only 1 file is allowed.`\n }]\n });\n }\n } else if (this.multiple && filesLength > this.maxFiles) {\n // If the component is in multiple mode, but the number of files exceeds\n // the maxFiles attribute, reject all files.\n for (const file of files) {\n rejectedFiles.push({\n file,\n errors: [{\n code: TOO_MANY_FILES,\n message: `Too many files selected. Only ${this.maxFiles} ${this.maxFiles > 1 ? 'files are' : 'file is'} allowed.`\n }]\n });\n }\n } else {\n // Validate each file. If it's valid, add it to the accepted files array,\n // otherwise add it to the rejected files array.\n for (const file of files) {\n const fileHasValidType = isValidFile(file, this.accept);\n const fileExceedsMaxSize = file.size > this.maxSize;\n const fileIsSmallerThanMinSize = file.size < this.minSize;\n\n if (fileHasValidType && !fileExceedsMaxSize && !fileIsSmallerThanMinSize) {\n acceptedFiles.push(file);\n } else {\n const errors = [];\n\n if (!fileHasValidType) {\n errors.push({\n code: INVALID_MIME_TYPE,\n message: `File type \"${file.type}\" is not accepted.`\n });\n }\n\n if (fileExceedsMaxSize) {\n errors.push({\n code: FILE_TOO_LARGE,\n message: `File size ${file.size} exceeds the maximum size of ${this.maxSize}.`\n });\n }\n\n if (fileIsSmallerThanMinSize) {\n errors.push({\n code: FILE_TOO_SMALL,\n message: `File size ${file.size} is smaller than the minimum size of ${this.minSize}.`\n });\n }\n\n rejectedFiles.push({ file, errors });\n }\n }\n }\n\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles,\n rejectedFiles\n }\n }));\n\n if (acceptedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-accepted`, {\n bubbles: true,\n composed: true,\n detail: {\n acceptedFiles\n }\n }));\n }\n\n if (rejectedFiles.length > 0) {\n this.dispatchEvent(new CustomEvent(`${COMPONENT_NAME}-drop-rejected`, {\n bubbles: true,\n composed: true,\n detail: {\n rejectedFiles\n }\n }));\n }\n\n if (this.#fileInput) {\n this.#fileInput.value = this.#fileInput.defaultValue;\n }\n }\n\n /**\n * Opens the file dialog programmatically.\n */\n openFileDialog() {\n if (this.disabled) {\n return;\n }\n\n this.#fileInput?.click();\n }\n\n /**\n * This is to safe guard against cases where, for instance, a framework may have added the element to the page and set a\n * value on one of its properties, but lazy loaded its definition. Without this guard, the upgraded element would miss that\n * property and the instance property would prevent the class property setter from ever being called.\n *\n * https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n *\n * @param {'accept' | 'disabled' | 'maxFiles' | 'maxSize' | 'minSize' | 'multiple' | 'noClick' | 'noDrag' | 'noKeyboard' | 'autoFocus' | 'noStyle'} prop - The property name to upgrade.\n */\n #upgradeProperty(prop) {\n /** @type {any} */\n const instance = this;\n\n if (Object.prototype.hasOwnProperty.call(instance, prop)) {\n const value = instance[prop];\n delete instance[prop];\n instance[prop] = value;\n }\n }\n\n /**\n * Defines a custom element with the given name.\n * The name must contain a dash (-).\n *\n * @param {string} [elementName='files-dropzone'] - The name of the custom element.\n * @example\n *\n * FilesDropzone.defineCustomElement('my-dropzone');\n */\n static defineCustomElement(elementName = COMPONENT_NAME) {\n if (typeof window !== 'undefined' && !window.customElements.get(elementName)) {\n window.customElements.define(elementName, FilesDropzone);\n }\n }\n}\n\nexport { FilesDropzone };\n","// @ts-check\n\n/**\n * Checks if a file is valid based on the accepted file type specifiers.\n *\n * @param {File} file - The File object to validate.\n * @param {string} [acceptedTypeSpecifiers=''] - The accepted file type specifiers.\n * @returns {boolean} - True if the file is valid, false otherwise.\n */\nexport function isValidFile(file, acceptedTypeSpecifiers = '') {\n if (!acceptedTypeSpecifiers) {\n return true;\n }\n\n const acceptedMimeTypesList = [\n ...new Set(acceptedTypeSpecifiers.split(',').map(v => v.trim()).filter(Boolean))\n ];\n\n const fileMimeType = file.type;\n const baseMimeType = fileMimeType.replace(/\\/.*$/, '');\n\n for (const validType of acceptedMimeTypesList) {\n if (validType.charAt(0) === '.') {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // Check for mime type that looks like \"image/*\" or similar.\n if (baseMimeType === validType.replace(/\\/.*$/, '')) {\n return true;\n }\n } else {\n if (fileMimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n}\n","// @ts-check\n\n/**\n * A map of common file extensions and their associated MIME types.\n */\nconst COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['jxl', 'image/jxl'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['markdown', 'text/markdown'],\n ['md', 'text/markdown'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n/**\n * Adds a `type` property to the file object if it doesn't have one and the file has an extension.\n * This is needed because Firefox doesn't add a type property to files dragged from the desktop.\n * @bug https://bugzilla.mozilla.org/show_bug.cgi?id=1424689\n *\n * @param {File} file - The file object to add the type property to.\n * @returns {File} - The file object with the type property added.\n */\nconst toFileWithMimeType = file => {\n const { name } = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const extension = (name.split('.').pop() || '').toLowerCase();\n const type = COMMON_MIME_TYPES.get(extension);\n\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n};\n\n/**\n * Adds a `path` property to the file object if it doesn't have one.\n * If `path` is not provided, the `webkitRelativePath` property of the file will be used\n * or the file's name if `webkitRelativePath` is not available.\n *\n * @param {File} file - The file object to add the path property to.\n * @param {string} [path] - The path to set on the file object.\n * @returns {File} - The file object with the path property added.\n */\nconst toFileWithPath = (file, path) => {\n const fileWithMimeType = toFileWithMimeType(file);\n\n // @ts-ignore\n if (typeof fileWithMimeType.path !== 'string') {\n const { webkitRelativePath } = file;\n\n Object.defineProperty(fileWithMimeType, 'path', {\n value: typeof path === 'string' ? path : webkitRelativePath || file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return fileWithMimeType;\n};\n\n/**\n * Wrap `FileSystemDirectoryReader.readEntries` in a promise to make working with read entries easier.\n * https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readEntriesPromise = async directoryReader => {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n};\n\n/**\n * Read all entries in a directory or sub-directory\n * by calling `readEntries` until it returns an empty array.\n *\n * @param {FileSystemDirectoryReader} directoryReader - The directory reader to read entries from.\n * @returns {Promise} - A promise that resolves with an array of `FileSystemEntry` objects.\n */\nconst readAllDirectoryEntries = async directoryReader => {\n const entries = [];\n let readEntries = await readEntriesPromise(directoryReader);\n\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n\n return entries;\n};\n\n/**\n * Get a `File` object from a `FileSystemFileEntry` object.\n *\n * @param {FileSystemFileEntry} fileEntry - The file entry to get a `File` object from.\n * @returns {Promise} - A promise that resolves with a `File` object.\n */\nconst getFileFromFileEntry = fileEntry => {\n return new Promise((resolve, reject) => {\n fileEntry.file(file => resolve(toFileWithPath(file, fileEntry.fullPath)), reject);\n });\n};\n\n/**\n * Get an array of `File` objects from a `DataTransferItemList` object.\n *\n * @param {DataTransferItemList} dataTransferItemList - The item list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromDataTransferItemList = async dataTransferItemList => {\n const files = [];\n\n // Chromium browsers read only 100 files at a time as per the spec, so we need to use\n // BFS (Breadth-first search) to traverse the entire directory/file structure.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry#javascript_content\n const queue = [];\n\n for (const item of dataTransferItemList) {\n if (item.kind !== 'file') {\n // Ignore non-file items, such as links.\n continue;\n }\n\n // https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry\n // This function is implemented as `webkitGetAsEntry()` in non-WebKit browsers\n // including Firefox at this time but it may be renamed to `getAsEntry()` in the future.\n // @ts-ignore\n const entry = item.getAsEntry ? item.getAsEntry() : item.webkitGetAsEntry();\n\n queue.push(entry);\n }\n\n while (queue.length > 0) {\n const entry = queue.shift();\n\n if (!entry) {\n continue;\n } else if (entry.isFile) {\n const file = await getFileFromFileEntry(entry);\n\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(file);\n }\n } else if (entry.isDirectory) {\n queue.push(...await readAllDirectoryEntries(entry.createReader()));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from a `FileList` object.\n *\n * @param {FileList} fileList - The file list to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nconst getFilesFromFileList = async fileList => {\n const files = [];\n\n for (const file of fileList) {\n if (FILES_TO_IGNORE.indexOf(file.name) === -1) {\n files.push(toFileWithPath(file));\n }\n }\n\n return files;\n};\n\n/**\n * Get an array of `File` objects from an event.\n * This function supports both `drop` and `change` events.\n *\n * @param {*} evt - The event to get an array of `File` objects from.\n * @returns {Promise} - A promise that resolves with an array of `File` objects.\n */\nexport const getFilesFromEvent = async evt => {\n if (evt.dataTransfer) {\n return evt.dataTransfer.items\n ? await getFilesFromDataTransferItemList(evt.dataTransfer.items)\n : await getFilesFromFileList(evt.dataTransfer.files);\n }\n\n return await getFilesFromFileList(evt.target.files);\n};\n","/**\n * Removes one or more elements from an array at the specified index(es).\n *\n * @param {Array} array The initial array to remove elements from.\n * @param {Number} ...indexes The index(es) of the elements to be removed. Non numbers are ignored.\n * @throws {TypeError} If `array` is not array.\n * @returns {Array} The result array with the elements specified removed.\n * @example\n *\n * const arr = [1, 2, 3, 4, 5];\n *\n * remove(arr, 0);\n * // => [2, 3, 4, 5]\n *\n * remove(arr, 0, 1);\n * // => [3, 4, 5]\n *\n * remove(arr, 0, 4);\n * // => [2, 3, 4]\n *\n * remove(arr);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length);\n * // => [1, 2, 3, 4, 5]\n *\n * remove(arr, arr.length - 1);\n * // => [1, 2, 3, 4]\n *\n * remove(arr, NaN);\n * // => [1, 2, 3, 4, 5]\n */\nexport const arrayRemove = (array, ...indexes) => {\n if (!Array.isArray(array)) {\n throw new TypeError('Expected an array for first argument');\n }\n\n return array.filter((_, i) => indexes.indexOf(i) === -1);\n};\n","/**\n * Generates a unique id of the form `${prefix}-${randomString}-${suffix}`.\n *\n * @param {string} [prefix=''] - The prefix to use for the id.\n * @param {string} [suffix=''] - The suffix to use for the id.\n * @returns {string} - The unique id.\n */\nconst uid = (prefix = '', suffix = '') => {\n const prefixString = typeof prefix === 'string' && prefix !== '' ? prefix + '-' : '';\n const suffixString = typeof suffix === 'string' && suffix !== '' ? '-' + suffix : '';\n const randomString = Math.random().toString(36).substring(2, 8); // Pseudo-random string of six alphanumeric characters.\n\n return `${prefixString}${randomString}${suffixString}`;\n};\n\nexport { uid };\n","export const ACCEPTED_MIME_TYPES = ['image/jpg', 'image/jpeg', 'image/png', 'image/apng', 'image/gif', 'image/webp', 'image/avif'];\n","import AntonRegular from 'url:../assets/fonts/Anton/Anton-Regular.ttf';\nimport OswaldRegular from 'url:../assets/fonts/Oswald/Oswald-Regular.ttf';\nimport OswaldBold from 'url:../assets/fonts/Oswald/Oswald-Bold.ttf';\nimport RobotoRegular from 'url:../assets/fonts/Roboto/Roboto-Regular.ttf';\nimport RobotoBold from 'url:../assets/fonts/Roboto/Roboto-Bold.ttf';\nimport RobotoCondensedRegular from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Regular.ttf';\nimport RobotoCondensedBold from 'url:../assets/fonts/RobotoCondensed/RobotoCondensed-Bold.ttf';\nimport CourierPrimeRegular from 'url:../assets/fonts/CourierPrime/CourierPrime-Regular.ttf';\nimport CourierPrimeBold from 'url:../assets/fonts/CourierPrime/CourierPrime-Bold.ttf';\nimport OpenSansRegular from 'url:../assets/fonts/OpenSans/OpenSans-Regular.ttf';\nimport OpenSansBold from 'url:../assets/fonts/OpenSans/OpenSans-Bold.ttf';\n\nexport const customFonts = [\n { name: 'Anton', label: 'Anton', path: AntonRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Regular', label: 'Oswald', path: OswaldRegular, style: 'normal', weight: '400' },\n { name: 'Oswald-Bold', label: 'Oswald Bold', path: OswaldBold, style: 'normal', weight: '700' },\n { name: 'Roboto-Regular', label: 'Roboto', path: RobotoRegular, style: 'normal', weight: '400' },\n { name: 'Roboto-Bold', label: 'Roboto Bold', path: RobotoBold, style: 'normal', weight: '700' },\n { name: 'RobotoCondensed-Regular', label: 'Roboto Condensed', path: RobotoCondensedRegular, style: 'normal', weight: '400' },\n { name: 'RobotoCondensed-Bold', label: 'Roboto Condensed Bold', path: RobotoCondensedBold, style: 'normal', weight: '700' },\n { name: 'CourierPrime-Regular', label: 'Courier Prime', path: CourierPrimeRegular, style: 'normal', weight: '400' },\n { name: 'CourierPrime-Bold', label: 'Courier Prime Bold', path: CourierPrimeBold, style: 'normal', weight: '700' },\n { name: 'OpenSans-Regular', label: 'Open Sans', path: OpenSansRegular, style: 'normal', weight: '400' },\n { name: 'OpenSans-Bold', label: 'Open Sans Bold', path: OpenSansBold, style: 'normal', weight: '400' }\n];\n\nexport const loadCustomFont = async (name, path, options = {}) => {\n try {\n const font = new FontFace(name, `url(${path})`, { ...options });\n await font.load();\n document.fonts.add(font);\n } catch (err) {\n console.error(err);\n }\n};\n","module.exports = new __parcel__URL__(\"Anton-Regular.e58ab3fe.ttf\").toString();","module.exports = new __parcel__URL__(\"Oswald-Regular.89ec7d89.ttf\").toString();","module.exports = new __parcel__URL__(\"Oswald-Bold.0f6a7ca6.ttf\").toString();","module.exports = new __parcel__URL__(\"Roboto-Regular.ca197847.ttf\").toString();","module.exports = new __parcel__URL__(\"Roboto-Bold.fdb9b54a.ttf\").toString();","module.exports = new __parcel__URL__(\"RobotoCondensed-Regular.d585f5c7.ttf\").toString();","module.exports = new __parcel__URL__(\"RobotoCondensed-Bold.e1f96d4b.ttf\").toString();","module.exports = new __parcel__URL__(\"CourierPrime-Regular.3a25a501.ttf\").toString();","module.exports = new __parcel__URL__(\"CourierPrime-Bold.3d6bf689.ttf\").toString();","module.exports = new __parcel__URL__(\"OpenSans-Regular.edf9e01b.ttf\").toString();","module.exports = new __parcel__URL__(\"OpenSans-Bold.8fceb72b.ttf\").toString();","import { ACCEPTED_MIME_TYPES } from './constants.js';\n\nexport const fileFromUrl = async (options = {}) => {\n const res = await fetch(options.url);\n const blob = await res.blob();\n const mimeType = options.mimeType || blob.type || '';\n\n if (!ACCEPTED_MIME_TYPES.includes(mimeType)) {\n throw new Error(`This is not an accepted image format. Accepted MIME types are: ${ACCEPTED_MIME_TYPES.join(', ')}`);\n }\n\n return new File([blob], options.filename || '', blob);\n};\n","const errorsContainer = document.getElementById('errorsContainer');\n\nconst hideError = evt => {\n const target = evt.currentTarget;\n target.removeEventListener('click', hideError);\n errorsContainer.removeChild(target.parentNode);\n};\n\nexport const toastAlert = (message = '', type = 'info') => {\n const types = ['info', 'warning', 'danger'];\n\n if (!types.includes(type)) {\n type = 'info';\n }\n\n const template = /* html */`\n ${message}\n \n `;\n\n const div = document.createElement('div');\n div.className = `alert alert-${type} alert-dismissible text-break mb-2 fade`;\n div.innerHTML = template;\n div.querySelector('button').addEventListener('click', hideError);\n errorsContainer.appendChild(div);\n setTimeout(() => div.classList.add('show'), 100);\n};\n","import { customFonts } from './custom-fonts.js';\n\nexport const createTextBox = (index, data = {}) => {\n const inputTemplate = /* html */`\n
\n \n\n \n\n
\n \n \n \n
\n
\n\n
\n
\n
\n \n\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n \n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n `;\n\n const fragment = document.createDocumentFragment();\n const div = document.createElement('div');\n\n div.className = 'bg-light border shadow-sm mb-3 rounded';\n div.setAttribute('data-section', 'textBox');\n div.setAttribute('data-index', index);\n div.innerHTML = inputTemplate;\n div.querySelector('[data-input=\"font\"]').value = data.font;\n div.querySelector('[data-input=\"textAlign\"]').value = data.textAlign;\n div.querySelector('[data-input=\"allCaps\"]').checked = data.allCaps;\n\n return fragment.appendChild(div);\n};\n","export const drawCanvas = (image, canvas, ctx, textOptions = []) => {\n if (image == null) {\n return;\n }\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (typeof image === 'string') { // Assume it's a color\n ctx.fillStyle = image;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n }\n\n textOptions.forEach(function (item, index) {\n ctx.font = `${item.fontWeight} ${item.fontSize}px ${item.font}`;\n\n const multiplier = index + 1;\n const lineHeight = ctx.measureText('M').width + item.fontSize / 2;\n const xPos = canvas.width / 2;\n const shadowBlur = item.shadowBlur;\n const text = item.allCaps === true ? item.text.toUpperCase() : item.text;\n const textLines = text.split('\\n');\n\n ctx.fillStyle = item.fillColor;\n ctx.textAlign = item.textAlign;\n ctx.save();\n\n if (shadowBlur !== 0) {\n ctx.shadowOffsetX = 0;\n ctx.shadowOffsetY = 0;\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = item.shadowColor;\n }\n\n if (item.rotate) {\n ctx.translate(xPos + item.offsetX, lineHeight * multiplier + item.offsetY);\n ctx.rotate(item.rotate * Math.PI / 180);\n textLines.forEach((text, index) => ctx.fillText(text, 0, index * lineHeight));\n ctx.rotate(-(item.rotate * Math.PI / 180));\n ctx.translate(-(xPos + item.offsetX), -(lineHeight * multiplier + item.offsetY));\n } else {\n textLines.forEach((text, index) => {\n ctx.fillText(text, xPos + item.offsetX, index * lineHeight + lineHeight * multiplier + item.offsetY);\n });\n }\n\n ctx.restore();\n });\n};"],"names":["$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","self","window","global","$parcel$modules","$parcel$inits","parcelRequire","$7a2aca835bb05064$export$c37129e465f64ef0","navigator","canShare","id","exports","init","module","call","err","Error","code","register","parcelRegister","Object","defineProperty","get","$ef7689007096c8a0$export$6503ec6e8aabbaf","set","v","enumerable","configurable","$ef7689007096c8a0$var$mapping","Map","baseUrl","manifest","i","length","path","URL","url","toString","JSON","parse","$cd62c5572235e737$export$30b344bef3e55b67","$cd62c5572235e737$var$t","$cd62c5572235e737$var$e","document","createElement","innerHTML","HTMLElement","t","e","s","constructor","shadowRoot","attachShadow","mode","delegatesFocus","appendChild","content","cloneNode","querySelector","observedAttributes","attributeChangedCallback","toggleAttribute","disabled","setAttribute","part","contains","toggle","connectedCallback","r","addEventListener","n","disconnectedCallback","removeEventListener","hasAttribute","shareUrl","getAttribute","shareTitle","shareText","shareFiles","Array","isArray","share","title","text","files","dispatchEvent","CustomEvent","bubbles","composed","detail","shareData","name","error","preventDefault","target","nodeName","assignedElements","flatten","find","prototype","hasOwnProperty","defineCustomElement","customElements","define","$dced0d224c6d876e$export$cc30a98fe3890794","$dced0d224c6d876e$var$t","Number","isNaN","Math","min","max","$dced0d224c6d876e$var$e","$dced0d224c6d876e$var$i","$dced0d224c6d876e$var$o","o","l","getSupportedConstraints","isConnected","getTrackCapabilities","getTrackSettings","u","includes","facingMode","stopVideoStream","startVideoStream","cameraResolution","trim","split","map","width","height","pan","h","tilt","zoom","d","getElementById","c","m","p","g","b","f","isSupported","message","autoPlay","noImage","loading","calculateFileSize","capture","play","then","video","catch","finally","removeAttribute","from","childNodes","forEach","remove","getVideoTracks","applyConstraints","advanced","ideal","audio","mediaDevices","getUserMedia","srcObject","hidden","stop","getContext","videoWidth","videoHeight","drawImage","toDataURL","Image","src","dataURI","fetch","blob","size","getCapabilities","getSettings","$d9c5053bade2d3f8$export$32589115725b904b","$d9c5053bade2d3f8$var$e","open","showModal","body","style","overflowY","element","close","noHeader","classList","noAnimations","noCloseButton","clearTimeout","staticBackdrop","fullscreen","add","setTimeout","defaultPrevented","currentTarget","assignedNodes","cancelable","reason","show","hide","$9351176e8d763a78$export$6ccd1735166caad9","$9351176e8d763a78$var$e","$9351176e8d763a78$var$t","$9351176e8d763a78$var$o","lastIndexOf","type","pop","toLowerCase","value","writable","$9351176e8d763a78$var$i","webkitRelativePath","$9351176e8d763a78$var$r","Promise","readEntries","$9351176e8d763a78$var$a","push","$9351176e8d763a78$var$n","file","fullPath","$9351176e8d763a78$var$s","kind","getAsEntry","webkitGetAsEntry","shift","isFile","indexOf","isDirectory","createReader","$9351176e8d763a78$var$d","$9351176e8d763a78$var$l","dataTransfer","items","$9351176e8d763a78$var$p","$9351176e8d763a78$var$c","$9351176e8d763a78$var$h","$9351176e8d763a78$var$u","accept","multiple","noKeyboard","autoFocus","focus","maxFiles","floor","abs","maxSize","minSize","noClick","noDrag","noStyle","Event","dropEffect","click","key","errors","Set","filter","Boolean","replace","charAt","test","acceptedFiles","rejectedFiles","defaultValue","openFileDialog","$4af3d380d1884504$export$30a014203d0d7e4f","array","indexes","TypeError","_","$17004b28c97c1306$export$e2a22331486dcca0","prefix","suffix","randomString","random","substring","$65136e012e05e2d7$export$63e7bed68b07a85c","$068eb37972da8c20$exports","$2db6b38fbc5d48da$exports","$a0b1873abc1b077b$exports","$df7c7f72fd04e02a$exports","$e4c2039736f96f5d$exports","$fbff28e47a938944$exports","$d8f4a375a42d32f4$exports","$7cfbda315cbb4209$exports","$6379185b16d8409f$exports","$454f2b111c8d0078$exports","$c05fcaeb63dbd733$exports","$56b863c8b6be7003$export$6874249d87f2602a","label","weight","$56b863c8b6be7003$export$59eceaef0c7797b2","options","font","FontFace","load","fonts","console","$0374350c629f125f$export$6539e087749cf9d3","res","mimeType","join","File","filename","$3969451ff60cb8d5$var$errorsContainer","$3969451ff60cb8d5$var$hideError","evt","removeChild","parentNode","$3969451ff60cb8d5$export$af04143326425dbd","types","template","div","className","$224fa2388dce65c4$export$293a4b86a6fe2398","index","data","inputTemplate","fillColor","shadowColor","_isSettingsOpen","fontSize","shadowBlur","rotate","offsetY","offsetX","fragment","createDocumentFragment","textAlign","checked","allCaps","$64ef5d4149d7e6a5$export$e653a2de0f3a8b89","image","canvas","ctx","textOptions","clearRect","fillStyle","fillRect","item","fontWeight","multiplier","lineHeight","measureText","xPos","textLines","toUpperCase","save","shadowOffsetX","shadowOffsetY","translate","PI","fillText","restore","$85a5f86b715fe7db$var$videoModal","$85a5f86b715fe7db$var$downloadModal","$85a5f86b715fe7db$var$canvas","$85a5f86b715fe7db$var$dropzoneEl","$85a5f86b715fe7db$var$instructionsEl","$85a5f86b715fe7db$var$ctx","$85a5f86b715fe7db$var$imageUploadMethodSelect","$85a5f86b715fe7db$var$fileSelectBtn","$85a5f86b715fe7db$var$imageUrlForm","$85a5f86b715fe7db$var$addTextboxBtn","$85a5f86b715fe7db$var$inputsContainer","$85a5f86b715fe7db$var$generateMemeBtn","$85a5f86b715fe7db$var$openVideoModalBtn","$85a5f86b715fe7db$var$downloadMemeBtn","$85a5f86b715fe7db$var$downloadMemePreview","$85a5f86b715fe7db$var$webShareComponent","$85a5f86b715fe7db$var$galleryEl","$85a5f86b715fe7db$var$gallerySearchEl","$85a5f86b715fe7db$var$galleryNoResultsEl","$85a5f86b715fe7db$var$solidColorForm","$85a5f86b715fe7db$var$uploadMethodEls","querySelectorAll","$85a5f86b715fe7db$var$selectedImage","$85a5f86b715fe7db$var$reqAnimFrame","$85a5f86b715fe7db$var$defaultTextOptions","$85a5f86b715fe7db$var$textOptions","$85a5f86b715fe7db$var$generateMeme","dataUrl","downloadLink","download","href","$85a5f86b715fe7db$var$onImageLoaded","MAX_WIDTH","MAX_HEIGHT","$85a5f86b715fe7db$var$handleFileSelect","reader","FileReader","result","readAsDataURL","$85a5f86b715fe7db$var$handleTextPropChange","prop","$85a5f86b715fe7db$var$handleImageUploadFromURL","form","submitButton","imageUrl","$85a5f86b715fe7db$var$moveText","offsetDir","sign","textBoxSection","offsetYInput","offsetXInput","requestAnimationFrame","$85a5f86b715fe7db$var$handleGalleryClick","button","closest","img","alt","newTextBox","matches","textBoxIndex","textBoxEls","el","settingsEl","confirm","isOffsetYButton","isOffsetXButton","cancelAnimationFrame","query","galleryItems","capturePhotoComponent","$442be162a818aed4$export$c37129e465f64ef0","isWebShareSupported","$e179325634270afd$export$30b344bef3e55b67","$e179325634270afd$var$styles","$e179325634270afd$var$template","buttonSlot","buttonEl","getButton","oldValue","newValue","upgradeProperty","handleSlotChange","handleClick","instance","elementName","WebShare","$c290816263f90981$export$cc30a98fe3890794","$02ad8beec419df62$export$7d15b64cf5a3a4c4","lower","upper","$c290816263f90981$var$COMPONENT_NAME","$c290816263f90981$var$styles","$c290816263f90981$var$template","supportedConstraints","stream","canvasElement","outputElement","videoElement","captureButtonSlot","captureButton","facingModeButtonSlot","facingModeButton","trackCapabilities","trackSettings","emptyOutputElement","isValidFacingMode","x","widthInAllowedRange","heightInAllowedRange","panInAllowedRange","applyPTZ","tiltInAllowedRange","zoomInAllowedRange","getCaptureButton","getFacingModeButton","onVideoLoadedMetaData","onCaptureButtonSlotChange","onCapturePhotoButtonClick","onFacingModeButtonSlotChange","onFacingModeButtonClick","node","constraintName","constraintValue","track","constraints","eventDetail","CapturePhoto","$180b6dcf923bafc7$export$32589115725b904b","$180b6dcf923bafc7$var$template","dialogEl","footerSlotEl","pulseAnimationTimeout","headerEl","closeBtnEl","handleDialogClick","handleDialogClose","handleDialogCancel","handleCloseButtonClick","handleFooterSlotChange","applyPulseEffectOnDialog","requestCloseEvent","createRequestCloseEvent","footerEl","footerSlotNodes","hasFooterSlotNodes","ModalElement","$862aa3736b0514bc$export$6ccd1735166caad9","$f31161edf38949e9$var$COMMON_MIME_TYPES","$f31161edf38949e9$var$FILES_TO_IGNORE","$f31161edf38949e9$var$toFileWithMimeType","hasExtension","extension","$f31161edf38949e9$var$toFileWithPath","fileWithMimeType","$f31161edf38949e9$var$readEntriesPromise","directoryReader","resolve","reject","$f31161edf38949e9$var$readAllDirectoryEntries","entries","$f31161edf38949e9$var$getFileFromFileEntry","fileEntry","$f31161edf38949e9$var$getFilesFromDataTransferItemList","dataTransferItemList","queue","entry","$f31161edf38949e9$var$getFilesFromFileList","fileList","$f31161edf38949e9$export$6d52664cd15c442","$862aa3736b0514bc$var$COMPONENT_NAME","$862aa3736b0514bc$var$TOO_MANY_FILES","$862aa3736b0514bc$var$template","$862aa3736b0514bc$var$styles","fileInput","dropzoneEl","handleFileInputChange","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleKeyUp","num","Infinity","handleFilesSelect","filesLength","fileHasValidType","acceptedTypeSpecifiers","acceptedMimeTypesList","fileMimeType","baseMimeType","validType","fileExceedsMaxSize","fileIsSmallerThanMinSize","FilesDropzone"],"version":3,"file":"index.b9185ed0.js.map"} \ No newline at end of file diff --git a/docs/index.58beac5f.css b/docs/index.bcbdd9b6.css similarity index 97% rename from docs/index.58beac5f.css rename to docs/index.bcbdd9b6.css index 735cd71..40285f1 100644 --- a/docs/index.58beac5f.css +++ b/docs/index.bcbdd9b6.css @@ -1,2 +1,2 @@ -:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,#ffffff26,#fff0);--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:#212529bf;--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:#21252980;--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:#0000002d;--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:#0d6efd40;--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:#dee2e6bf;--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:#dee2e680;--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:#ffffff26;--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0}hr{color:inherit;border:0;border-top:var(--bs-border-width)solid;opacity:.25;margin:1rem 0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}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-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg);padding:.1875em}sub,sup{vertical-align:baseline;font-size:.75em;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{margin-top:0;margin-bottom:1rem;font-size:.875em;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{color:var(--bs-code-color);word-wrap:break-word;font-size:.875em}a>code{color:inherit}kbd{color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem;padding:.1875rem .375rem;font-size:.875em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-secondary-color);text-align:left;padding-top:.5rem;padding-bottom:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;width:100%;margin-bottom:.5rem;padding:0}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-minute{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-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}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{text-transform:uppercase;font-size:.875em}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6c757d;margin-top:-1rem;margin-bottom:1rem;font-size:.875em}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{background-color:var(--bs-body-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto;padding:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{color:var(--bs-secondary-color);font-size:.875em}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);width:100%;margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x));flex-wrap:wrap;display:flex}.row>*{padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0;width:100%;max-width:100%}.col{flex:1 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-left:8.33333%}.offset-2{margin-left:16.6667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333%}.offset-5{margin-left:41.6667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333%}.offset-8{margin-left:66.6667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333%}.offset-11{margin-left:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.6667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333%}.offset-sm-5{margin-left:41.6667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333%}.offset-sm-8{margin-left:66.6667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333%}.offset-sm-11{margin-left:91.6667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.6667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333%}.offset-md-5{margin-left:41.6667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333%}.offset-md-8{margin-left:66.6667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333%}.offset-md-11{margin-left:91.6667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.6667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333%}.offset-lg-5{margin-left:41.6667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333%}.offset-lg-8{margin-left:66.6667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333%}.offset-lg-11{margin-left:91.6667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.6667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333%}.offset-xl-5{margin-left:41.6667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333%}.offset-xl-8{margin-left:66.6667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333%}.offset-xl-11{margin-left:91.6667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0}.row-cols-xxl-auto>*{flex:none;width:auto}.row-cols-xxl-1>*{flex:none;width:100%}.row-cols-xxl-2>*{flex:none;width:50%}.row-cols-xxl-3>*{flex:none;width:33.3333%}.row-cols-xxl-4>*{flex:none;width:25%}.row-cols-xxl-5>*{flex:none;width:20%}.row-cols-xxl-6>*{flex:none;width:16.6667%}.col-xxl-auto{flex:none;width:auto}.col-xxl-1{flex:none;width:8.33333%}.col-xxl-2{flex:none;width:16.6667%}.col-xxl-3{flex:none;width:25%}.col-xxl-4{flex:none;width:33.3333%}.col-xxl-5{flex:none;width:41.6667%}.col-xxl-6{flex:none;width:50%}.col-xxl-7{flex:none;width:58.3333%}.col-xxl-8{flex:none;width:66.6667%}.col-xxl-9{flex:none;width:75%}.col-xxl-10{flex:none;width:83.3333%}.col-xxl-11{flex:none;width:91.6667%}.col-xxl-12{flex:none;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.6667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333%}.offset-xxl-5{margin-left:41.6667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333%}.offset-xxl-8{margin-left:66.6667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333%}.offset-xxl-11{margin-left:91.6667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb),.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb),.075);vertical-align:top;border-color:var(--bs-table-border-color);width:100%;margin-bottom:1rem}.table>:not(caption)>*>*{color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));padding:.5rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2)solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width)0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-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-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));font-size:inherit;margin-bottom:0;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{color:var(--bs-secondary-color);margin-top:.25rem;font-size:.875em}.form-control{color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:var(--bs-body-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);background-clip:padding-box;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{padding:0;display:block}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{-webkit-margin-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);margin:-.375rem -.75rem;border-radius:0;margin-inline-end:.75rem;padding:.375rem .75rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{-webkit-margin-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;margin:-.375rem -.75rem;margin-inline-end:.75rem;padding:.375rem .75rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{color:var(--bs-body-color);border:solid #0000;border-width:var(--bs-border-width)0;background-color:#0000;width:100%;margin-bottom:0;padding:.375rem 0;line-height:1.5;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));border-radius:var(--bs-border-radius-sm);padding:.25rem .5rem;font-size:.875rem}.form-control-sm::file-selector-button{-webkit-margin-end:.5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;padding:.25rem .5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));border-radius:var(--bs-border-radius-lg);padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{-webkit-margin-end:1rem;margin:-.5rem -1rem;margin-inline-end:1rem;padding:.5rem 1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2))}.form-control-color{height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));width:3rem;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-border-radius);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-border-radius);border:0!important}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.75rem}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:#0000;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{border-radius:var(--bs-border-radius-sm);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{border-radius:var(--bs-border-radius-lg);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{min-height:1.5rem;margin-bottom:.125rem;padding-left:1.5em;display:block}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{text-align:right;padding-left:0;padding-right:1.5em}.form-check-reverse .form-check-input{float:right;margin-left:0;margin-right:-1.5em}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);vertical-align:top;-webkit-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);border:var(--bs-border-width)solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact;background-position:50%;background-repeat:no-repeat;background-size:contain;flex-shrink:0;width:1em;height:1em;margin-top:.25em}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");background-color:#0d6efd;border-color:#0d6efd}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-image:var(--bs-form-switch-bg);background-position:0;border-radius:2em;width:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");background-position:100%}.form-switch.form-check-reverse{padding-left:0;padding-right:2.5em}.form-switch.form-check-reverse .form-check-input{margin-left:0;margin-right:-2.5em}.form-check-inline{margin-right:1rem;display:inline-block}.btn-check{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{-webkit-appearance:none;appearance:none;background-color:#0000;width:100%;height:1.5rem;padding:0}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;width:1rem;height:1rem;margin-top:-.25rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{color:#0000;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:#0000;border-radius:1rem;width:100%;height:.5rem}.form-range::-moz-range-thumb{-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;width:1rem;height:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{color:#0000;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:#0000;border-radius:1rem;width:100%;height:.5rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width)*2));min-height:calc(3.5rem + calc(var(--bs-border-width)*2));line-height:1.25}.form-floating>label{z-index:2;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width)solid transparent;transform-origin:0 0;height:100%;padding:1rem .75rem;transition:opacity .1s ease-in-out,transform .1s ease-in-out;position:absolute;top:0;left:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder{color:#0000}.form-floating>.form-control::-moz-placeholder{color:#0000}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:#0000}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)){padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill){padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}:is(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),:is(.form-floating>.form-control-plaintext:autofill,.form-floating>.form-control:autofill),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label:after{z-index:-1;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);height:1.5em;position:absolute;inset:1rem .375rem}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{z-index:-1;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);height:1.5em;position:absolute;inset:1rem .375rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width)0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label:after,.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{flex-wrap:wrap;align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{z-index:2;position:relative}.input-group .btn:focus{z-index:5}.input-group-text{color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;display:flex}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{border-radius:var(--bs-border-radius-lg);padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{border-radius:var(--bs-border-radius-sm);padding:.25rem .5rem;font-size:.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width)*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{color:var(--bs-form-valid-color);width:100%;margin-top:.25rem;font-size:.875em;display:none}.valid-tooltip{z-index:5;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius);max-width:100%;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);padding-right:calc(1.5em + .75rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,right 2.25rem center;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(1.5em + 3.75rem)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{color:var(--bs-form-invalid-color);width:100%;margin-top:.25rem;font-size:.875em;display:none}.invalid-tooltip{z-index:5;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius);max-width:100%;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);padding-right:calc(1.5em + .75rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,right 2.25rem center;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(1.5em + 3.75rem)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 #ffffff26,0 1px 1px #00000013;--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);padding:var(--bs-btn-padding-y)var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);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);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width)solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);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:inline-block}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--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-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.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}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top-color:currentColor;border-bottom:0;margin-left:.255em;display:inline-block}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;z-index:var(--bs-dropdown-zindex);min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y)var(--bs-dropdown-padding-x);font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width)solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);background-clip:padding-box;margin:0;list-style:none;display:none;position:absolute}.dropdown-menu[data-bs-popper]{margin-top:var(--bs-dropdown-spacer);top:100%;left:0}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{margin-top:0;margin-bottom:var(--bs-dropdown-spacer);top:auto;bottom:100%}.dropup .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top:0;border-bottom-color:currentColor;margin-left:.255em;display:inline-block}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:var(--bs-dropdown-spacer);top:0;left:100%;right:auto}.dropend .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-left-color:currentColor;border-right:0;margin-left:.255em;display:inline-block}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:var(--bs-dropdown-spacer);top:0;left:auto;right:100%}.dropstart .dropdown-toggle:after{vertical-align:.255em;content:"";margin-left:.255em;display:none}.dropstart .dropdown-toggle:before{vertical-align:.255em;content:"";border-top:.3em solid #0000;border-bottom:.3em solid #0000;border-right:.3em solid;margin-right:.255em;display:inline-block}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{margin:var(--bs-dropdown-divider-margin-y)0;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1;height:0;overflow:hidden}.dropdown-item{padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);clear:both;color:var(--bs-dropdown-link-color);text-align:inherit;white-space:nowrap;border-radius:var(--bs-dropdown-item-border-radius,0);background-color:#0000;border:0;width:100%;font-weight:400;text-decoration:none;display:block}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);background-color:var(--bs-dropdown-link-active-bg);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:#0000}.dropdown-menu.show{display:block}.dropdown-header{padding:var(--bs-dropdown-header-padding-y)var(--bs-dropdown-header-padding-x);color:var(--bs-dropdown-header-color);white-space:nowrap;margin-bottom:0;font-size:.875rem;display:block}.dropdown-item-text{padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color);display:block}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:#ffffff26;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group-vertical>.btn,.btn-group>.btn{flex:auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width)*-1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width)*-1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);flex-wrap:wrap;margin-bottom:0;padding-left:0;list-style:none;display:flex}.nav-link{padding:var(--bs-nav-link-padding-y)var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);background:0 0;border:0;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg)var(--bs-secondary-bg)var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color)var(--bs-border-color)var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width)solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width)solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{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)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-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)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{border-bottom:var(--bs-nav-underline-border-width)solid transparent;padding-left:0;padding-right:0}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentColor;font-weight:700}.nav-fill .nav-item,.nav-fill>.nav-link{text-align:center;flex:auto}.nav-justified .nav-item,.nav-justified>.nav-link{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}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;padding:var(--bs-navbar-padding-y)var(--bs-navbar-padding-x);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{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);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);white-space:nowrap;text-decoration:none}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);flex-direction:column;margin-bottom:0;padding-left:0;list-style:none;display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-top:.5rem;padding-bottom:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y)var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);color:var(--bs-navbar-color);border:var(--bs-border-width)solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition);background-color:#0000;line-height:1}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;width:1.5em;height:1.5em;display:inline-block}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:#ffffff8c;--bs-navbar-hover-color:#ffffffbf;--bs-navbar-disabled-color:#ffffff40;--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:#ffffff1a;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);border:var(--bs-card-border-width)solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);background-clip:border-box;flex-direction:column;min-width:0;display:flex;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{padding:var(--bs-card-spacer-y)var(--bs-card-spacer-x);color:var(--bs-card-color);flex:auto}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5*var(--bs-card-title-spacer-y));color:var(--bs-card-subtitle-color);margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width)solid 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-card-cap-bg);border-top:var(--bs-card-border-width)solid 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-header-tabs{margin-right:calc(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5*var(--bs-card-cap-padding-x));margin-left:calc(-.5*var(--bs-card-cap-padding-x))}.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-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem #0d6efd40;--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{padding:var(--bs-accordion-btn-padding-y)var(--bs-accordion-btn-padding-x);color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);overflow-anchor:none;transition:var(--bs-accordion-transition);border:0;border-radius:0;align-items:center;width:100%;font-size:1rem;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width))0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-left:auto}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);box-shadow:var(--bs-accordion-btn-focus-box-shadow);outline:0}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width)solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y)var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-right:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);padding:var(--bs-breadcrumb-padding-y)var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;list-style:none;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider,"/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem #0d6efd40;--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-left:0;list-style:none;display:flex}.page-link{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);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:block;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{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);box-shadow:var(--bs-pagination-focus-box-shadow);outline:0}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{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-left:calc(var(--bs-border-width)*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);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-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius);line-height:1;display:inline-block}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width)solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;padding:var(--bs-alert-padding-y)var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);position:relative}.alert-heading{color:inherit}.alert-link{color:var(--bs-alert-link-color);font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{z-index:2;padding:1.25rem 1rem;position:absolute;top:0;right:0}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;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);display:flex;overflow:hidden}.progress-bar{color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color: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:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-left: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-action{color:var(--bs-list-group-action-color);text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);background-color:var(--bs-list-group-action-hover-bg);text-decoration:none}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{padding:var(--bs-list-group-item-padding-y)var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width)solid var(--bs-list-group-border-color);text-decoration:none;display:block;position:relative}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-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-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width: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-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem #0d6efd40;--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1)grayscale(100%)brightness(200%);box-sizing:content-box;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg)center/1em auto no-repeat;opacity:var(--bs-btn-close-opacity);border:0;border-radius:.375rem;width:1em;height:1em;padding:.25em}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus{box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);outline:0}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width)solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius);background-clip:padding-box;max-width:100%}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y)var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);border-bottom:var(--bs-toast-border-width)solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));background-clip:padding-box;align-items:center;display:flex}.toast-header .btn-close{margin-right:calc(-.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);z-index:var(--bs-modal-zindex);outline:0;width:100%;height:100%;display:none;position:fixed;top:0;left:0;overflow:hidden auto}.modal-dialog{margin:var(--bs-modal-margin);pointer-events:none;width:auto;position:relative}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{min-height:calc(100% - var(--bs-modal-margin)*2);align-items:center;display:flex}.modal-content{color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);border:var(--bs-modal-border-width)solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);background-clip:padding-box;outline:0;flex-direction:column;width:100%;display:flex;position:relative}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;z-index:var(--bs-backdrop-zindex);background-color:var(--bs-backdrop-bg);width:100vw;height:100vh;position:fixed;top:0;left:0}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width)solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5)calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-.5*var(--bs-modal-header-padding-y))calc(-.5*var(--bs-modal-header-padding-x))calc(-.5*var(--bs-modal-header-padding-y))auto}.modal-title{line-height:var(--bs-modal-title-line-height);margin-bottom:0}.modal-body{padding:var(--bs-modal-padding);flex:auto;position:relative}.modal-footer{padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width)solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-left:auto;margin-right:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);text-align:left;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-style:normal;font-weight:400;line-height:1.5;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-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-top-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .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-right-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .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-left-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)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--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-font-sans-serif);text-align:left;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-style:normal;font-weight:400;line-height:1.5;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);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:after,.popover .popover-arrow:before{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{border-top-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.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-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{border-right-color:var(--bs-popover-arrow-border);left:0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{border-bottom-color:var(--bs-popover-arrow-border);top:0}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{width:var(--bs-popover-arrow-width);margin-left:calc(-.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width)solid var(--bs-popover-header-bg);display:block;position:absolute;top:0;left:50%}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.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-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5)0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{border-left-color:var(--bs-popover-arrow-border);right:0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-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-bottom:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-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)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;position:relative;overflow:hidden}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{float:left;backface-visibility:hidden;width:100%;margin-right:-100%;transition:transform .6s ease-in-out;display:none;position:relative}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{z-index:1;color:#fff;text-align:center;opacity:.5;background:0 0;border:0;justify-content:center;align-items:center;width:15%;padding:0;transition:opacity .15s;display:flex;position:absolute;top:0;bottom:0}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{background-position:50%;background-repeat:no-repeat;background-size:100% 100%;width:2rem;height:2rem;display:inline-block}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e")}.carousel-indicators{z-index:2;justify-content:center;margin-bottom:1rem;margin-left:15%;margin-right:15%;padding:0;display:flex;position:absolute;bottom:0;left:0;right:0}.carousel-indicators [data-bs-target]{box-sizing:content-box;text-indent:-999px;cursor:pointer;opacity:.5;background-color:#fff;background-clip:padding-box;border:10px solid #0000;border-left:0;border-right:0;flex:0 auto;width:30px;height:3px;margin-left:3px;margin-right:3px;padding:0;transition:opacity .6s}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{color:#fff;text-align:center;padding-top:1.25rem;padding-bottom:1.25rem;position:absolute;bottom:1.25rem;left:15%;right:15%}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert()grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert()grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{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%;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-right-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}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-sm.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:767.98px){.offcanvas-md{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-md.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:991.98px){.offcanvas-lg{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-lg.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:1199.98px){.offcanvas-xl{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:1399.98px){.offcanvas-xxl{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.offcanvas{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{z-index:1040;background-color:#000;width:100vw;height:100vh;position:fixed;top:0;left:0}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);justify-content:space-between;align-items:center;display:flex}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5)calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-right:calc(-.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);flex-grow:1;overflow-y:auto}.placeholder{vertical-align:middle;cursor:wait;opacity:.5;background-color:currentColor;min-height:1em;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:.2}}.placeholder-wave{animation:2s linear infinite placeholder-wave;-webkit-mask-image:linear-gradient(130deg,#000 55%,#000c 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0;mask-position:-200% 0}}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{box-shadow:var(--bs-focus-ring-x,0)var(--bs-focus-ring-y,0)var(--bs-focus-ring-blur,0)var(--bs-focus-ring-width)var(--bs-focus-ring-color);outline:0}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));-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:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{width:100%;position:relative}.ratio:before{padding-top:var(--bs-aspect-ratio);content:"";display:block}.ratio>*{width:100%;height:100%;position:absolute;top:0;left:0}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571%}.fixed-top{z-index:1030;position:fixed;top:0;left:0;right:0}.fixed-bottom{z-index:1030;position:fixed;bottom:0;left:0;right:0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (min-width:576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:992px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:1200px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:1400px){.sticky-xxl-top{z-index:1020;position:sticky;top:0}.sticky-xxl-bottom{z-index:1020;position:sticky;bottom:0}}.hstack{flex-direction:row;align-self:stretch;align-items:center;display:flex}.vstack{flex-direction:column;flex:auto;align-self:stretch;display:flex}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!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-border-width);opacity:.25;background-color:currentColor;align-self:stretch;min-height:1em;display:inline-block}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:#0000!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--body-color:#212529;--move-btn-width:60px;--move-btn-height:34px;--focus-ring:0 0 0 .2rem #268fff80}:not(:defined){display:none!important}html,body{font-size:14px}body{background-color:#eae9e9;overflow-x:hidden}[hidden]{display:none!important}a:focus-visible,details summary:focus-visible{box-shadow:var(--focus-ring);border-radius:.25rem;outline:0;transition:box-shadow .15s ease-in-out}.container{max-width:1400px}.site-header{text-align:center;flex-direction:column;align-items:center;row-gap:.5rem;margin:3rem .5rem;display:flex}.page-title{margin-bottom:0;font-weight:300}.canvas{max-width:100%;display:block}.inputs-container input[type=color],.settings-button{cursor:pointer;border:0;width:30px;height:30px;margin:0 2px;padding:0;line-height:1}.inputs-container .meme-text{min-width:0;height:calc(1.5em + .75rem + 2px);min-height:calc(1.5em + .75rem + 2px);margin:.5rem}.settings-button{background-image:url(gear.b3b5d1a5.svg);background-position:50%;background-repeat:no-repeat;background-size:60%}.inputs-container{flex:1}.inputs-container:empty{display:none}.instructions{text-align:center;text-wrap:balance;flex-direction:column;justify-content:center;align-items:center;row-gap:1rem;height:100%;min-height:200px;padding:1rem;display:flex}.errorsContainer{z-index:1051;pointer-events:none;width:100%;position:fixed;top:0;left:0}.errorsContainer .alert{pointer-events:all}details[open] summary{margin-bottom:.5rem}button[data-button=delete-text-box]{background-image:url(trash.d9edab78.svg);background-position:50%;background-repeat:no-repeat;width:25px;min-width:25px;height:25px;margin-left:.5rem;padding:0}.gallery{scroll-behavior:smooth;gap:.5rem;min-height:112px;margin:0;padding:.25rem 0;display:flex;overflow-x:auto}.gallery>button{cursor:pointer;padding:0}.gallery>button>img{object-fit:cover;border-radius:.2rem;min-width:88px;height:88px;display:block}.gallery__no-results{text-align:center;flex:1;justify-content:center;align-items:center;display:flex}.move-text-actions{width:calc(var(--move-btn-width)*3);height:calc(var(--move-btn-height)*2);margin:0 auto;position:relative}.move-text-actions [data-move]{width:var(--move-btn-width);height:var(--move-btn-height);background-position:50%;background-repeat:no-repeat;position:absolute}.move-text-actions [data-move=offsetY][data-sign=\-]{top:-1px;left:var(--move-btn-width);background-image:url(chevron-up.f532d8b6.svg)}.move-text-actions [data-move=offsetY][data-sign=\+]{top:calc(var(--move-btn-height) + 1px);left:var(--move-btn-width);background-image:url(chevron-down.ad14d981.svg)}.move-text-actions [data-move=offsetX][data-sign=\-]{top:calc(var(--move-btn-height)/2);background-image:url(chevron-left.20a2f252.svg);left:-2px}.move-text-actions [data-move=offsetX][data-sign=\+]{top:calc(var(--move-btn-height)/2);left:calc(var(--move-btn-width)*2 + 2px);background-image:url(chevron-right.1be074ac.svg)}capture-photo:not(:defined){display:none}capture-photo{overflow:hidden}capture-photo::part(video){background-color:#000;width:100%}capture-photo::part(actions-container){justify-content:center;align-items:center;gap:2rem;padding:1rem 0;display:flex}capture-photo::part(capture-button),capture-photo::part(facing-mode-button){text-indent:-9999px;cursor:pointer;-webkit-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;border-radius:50%;overflow:hidden;box-shadow:0 0 1rem #0000004d}capture-photo::part(capture-button){background-color:#c2c3c7;background-image:url(aperture.4bf28ce8.svg);background-size:90%;border:5px solid #fff;width:70px;height:70px}capture-photo::part(facing-mode-button){background-color:#fff;background-image:url(camera-reverse.284e8ac9.svg);background-size:60%;border:0;width:50px;height:50px;margin-right:calc(-50px - 2rem)}capture-photo[loading]::part(video){background-image:url(spinner.4452ed29.svg);background-position:50%;background-repeat:no-repeat;background-size:60px}capture-photo[loading]::part(capture-button),capture-photo[loading]::part(facing-mode-button){opacity:.6;pointer-events:none}modal-element{--me-width:fit-content;--me-border-radius:.25rem;--me-border-width:0;--me-box-shadow:0 0 1rem 0 #0000004d}#videoModal{--me-width:600px}modal-element::part(base):focus-visible{outline:0}modal-element [slot=header]{color:var(--body-color);margin:0}modal-element::part(close){color:var(--body-color);border-radius:.25rem;transition:box-shadow .15s ease-in-out}modal-element::part(close):focus-visible{box-shadow:var(--focus-ring);outline:0}modal-element::part(body){padding-block:0}modal-element [slot=footer]{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.25rem;display:flex}files-dropzone{--dropzone-border-color:var(--bs-secondary);--dropzone-border-color-hover:var(--bs-primary);--dropzone-border-color-dragover:var(--bs-primary);--dropzone-background-color-hover:var(--bs-light);--dropzone-background-color-dragover:var(--bs-light);--dropzone-focus-box-shadow:var(--focus-ring);height:100%}files-dropzone::part(dropzone){height:100%;padding:.5rem}.text-underline{text-decoration:underline} -/*# sourceMappingURL=index.58beac5f.css.map */ +:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,#ffffff26,#fff0);--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:#212529bf;--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:#21252980;--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:#0000002d;--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:#0d6efd40;--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:#dee2e6bf;--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:#dee2e680;--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:#ffffff26;--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0}hr{color:inherit;border:0;border-top:var(--bs-border-width)solid;opacity:.25;margin:1rem 0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}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-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg);padding:.1875em}sub,sup{vertical-align:baseline;font-size:.75em;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{margin-top:0;margin-bottom:1rem;font-size:.875em;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{color:var(--bs-code-color);word-wrap:break-word;font-size:.875em}a>code{color:inherit}kbd{color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem;padding:.1875rem .375rem;font-size:.875em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-secondary-color);text-align:left;padding-top:.5rem;padding-bottom:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;width:100%;margin-bottom:.5rem;padding:0}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-minute{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-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}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{text-transform:uppercase;font-size:.875em}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6c757d;margin-top:-1rem;margin-bottom:1rem;font-size:.875em}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{background-color:var(--bs-body-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto;padding:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{color:var(--bs-secondary-color);font-size:.875em}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);width:100%;margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x));flex-wrap:wrap;display:flex}.row>*{padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0;width:100%;max-width:100%}.col{flex:1 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-left:8.33333%}.offset-2{margin-left:16.6667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333%}.offset-5{margin-left:41.6667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333%}.offset-8{margin-left:66.6667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333%}.offset-11{margin-left:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.6667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333%}.offset-sm-5{margin-left:41.6667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333%}.offset-sm-8{margin-left:66.6667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333%}.offset-sm-11{margin-left:91.6667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.6667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333%}.offset-md-5{margin-left:41.6667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333%}.offset-md-8{margin-left:66.6667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333%}.offset-md-11{margin-left:91.6667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.6667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333%}.offset-lg-5{margin-left:41.6667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333%}.offset-lg-8{margin-left:66.6667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333%}.offset-lg-11{margin-left:91.6667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.6667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333%}.offset-xl-5{margin-left:41.6667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333%}.offset-xl-8{margin-left:66.6667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333%}.offset-xl-11{margin-left:91.6667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0}.row-cols-xxl-auto>*{flex:none;width:auto}.row-cols-xxl-1>*{flex:none;width:100%}.row-cols-xxl-2>*{flex:none;width:50%}.row-cols-xxl-3>*{flex:none;width:33.3333%}.row-cols-xxl-4>*{flex:none;width:25%}.row-cols-xxl-5>*{flex:none;width:20%}.row-cols-xxl-6>*{flex:none;width:16.6667%}.col-xxl-auto{flex:none;width:auto}.col-xxl-1{flex:none;width:8.33333%}.col-xxl-2{flex:none;width:16.6667%}.col-xxl-3{flex:none;width:25%}.col-xxl-4{flex:none;width:33.3333%}.col-xxl-5{flex:none;width:41.6667%}.col-xxl-6{flex:none;width:50%}.col-xxl-7{flex:none;width:58.3333%}.col-xxl-8{flex:none;width:66.6667%}.col-xxl-9{flex:none;width:75%}.col-xxl-10{flex:none;width:83.3333%}.col-xxl-11{flex:none;width:91.6667%}.col-xxl-12{flex:none;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.6667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333%}.offset-xxl-5{margin-left:41.6667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333%}.offset-xxl-8{margin-left:66.6667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333%}.offset-xxl-11{margin-left:91.6667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb),.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb),.075);vertical-align:top;border-color:var(--bs-table-border-color);width:100%;margin-bottom:1rem}.table>:not(caption)>*>*{color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));padding:.5rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2)solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width)0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-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-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:575.98px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:767.98px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:991.98px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1199.98px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (max-width:1399.98px){.table-responsive-xxl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));font-size:inherit;margin-bottom:0;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{color:var(--bs-secondary-color);margin-top:.25rem;font-size:.875em}.form-control{color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:var(--bs-body-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);background-clip:padding-box;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{padding:0;display:block}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{-webkit-margin-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);margin:-.375rem -.75rem;border-radius:0;margin-inline-end:.75rem;padding:.375rem .75rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{-webkit-margin-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;margin:-.375rem -.75rem;margin-inline-end:.75rem;padding:.375rem .75rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{color:var(--bs-body-color);border:solid #0000;border-width:var(--bs-border-width)0;background-color:#0000;width:100%;margin-bottom:0;padding:.375rem 0;line-height:1.5;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2));border-radius:var(--bs-border-radius-sm);padding:.25rem .5rem;font-size:.875rem}.form-control-sm::file-selector-button{-webkit-margin-end:.5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem;padding:.25rem .5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2));border-radius:var(--bs-border-radius-lg);padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{-webkit-margin-end:1rem;margin:-.5rem -1rem;margin-inline-end:1rem;padding:.5rem 1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2))}.form-control-color{height:calc(1.5em + .75rem + calc(var(--bs-border-width)*2));width:3rem;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-border-radius);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-border-radius);border:0!important}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width)*2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width)*2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");color:var(--bs-body-color);-webkit-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.75rem}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:#0000;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{border-radius:var(--bs-border-radius-sm);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{border-radius:var(--bs-border-radius-lg);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{min-height:1.5rem;margin-bottom:.125rem;padding-left:1.5em;display:block}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{text-align:right;padding-left:0;padding-right:1.5em}.form-check-reverse .form-check-input{float:right;margin-left:0;margin-right:-1.5em}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);vertical-align:top;-webkit-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);border:var(--bs-border-width)solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact;background-position:50%;background-repeat:no-repeat;background-size:contain;flex-shrink:0;width:1em;height:1em;margin-top:.25em}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");background-color:#0d6efd;border-color:#0d6efd}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-image:var(--bs-form-switch-bg);background-position:0;border-radius:2em;width:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");background-position:100%}.form-switch.form-check-reverse{padding-left:0;padding-right:2.5em}.form-switch.form-check-reverse .form-check-input{margin-left:0;margin-right:-2.5em}.form-check-inline{margin-right:1rem;display:inline-block}.btn-check{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{-webkit-appearance:none;appearance:none;background-color:#0000;width:100%;height:1.5rem;padding:0}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;width:1rem;height:1rem;margin-top:-.25rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{color:#0000;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:#0000;border-radius:1rem;width:100%;height:.5rem}.form-range::-moz-range-thumb{-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;width:1rem;height:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{color:#0000;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:#0000;border-radius:1rem;width:100%;height:.5rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width)*2));min-height:calc(3.5rem + calc(var(--bs-border-width)*2));line-height:1.25}.form-floating>label{z-index:2;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width)solid transparent;transform-origin:0 0;height:100%;padding:1rem .75rem;transition:opacity .1s ease-in-out,transform .1s ease-in-out;position:absolute;top:0;left:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder{color:#0000}.form-floating>.form-control::-moz-placeholder{color:#0000}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:#0000}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)){padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill){padding-top:1.625rem;padding-bottom:.625rem}:-webkit-any(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}:is(.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:not(:placeholder-shown)),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),:is(.form-floating>.form-control-plaintext:autofill,.form-floating>.form-control:autofill),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label:after{z-index:-1;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);height:1.5em;position:absolute;inset:1rem .375rem}.form-floating>.form-control-plaintext~label:after,.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-select~label:after{z-index:-1;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);height:1.5em;position:absolute;inset:1rem .375rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85)translateY(-.5rem)translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width)0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label:after,.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{flex-wrap:wrap;align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{z-index:2;position:relative}.input-group .btn:focus{z-index:5}.input-group-text{color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;display:flex}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{border-radius:var(--bs-border-radius-lg);padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{border-radius:var(--bs-border-radius-sm);padding:.25rem .5rem;font-size:.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width)*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{color:var(--bs-form-valid-color);width:100%;margin-top:.25rem;font-size:.875em;display:none}.valid-tooltip{z-index:5;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius);max-width:100%;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);padding-right:calc(1.5em + .75rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,right 2.25rem center;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(1.5em + 3.75rem)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{color:var(--bs-form-invalid-color);width:100%;margin-top:.25rem;font-size:.875em;display:none}.invalid-tooltip{z-index:5;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius);max-width:100%;margin-top:.1rem;padding:.25rem .5rem;font-size:.875rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right calc(.375em + .1875rem) center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem);padding-right:calc(1.5em + .75rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:right calc(.375em + .1875rem) top calc(.375em + .1875rem);padding-right:calc(1.5em + .75rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,right 2.25rem center;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem);padding-right:4.125rem}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(1.5em + 3.75rem)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 #ffffff26,0 1px 1px #00000013;--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);padding:var(--bs-btn-padding-y)var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);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);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width)solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);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:inline-block}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px #00000020;--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--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-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.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}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top-color:currentColor;border-bottom:0;margin-left:.255em;display:inline-block}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;z-index:var(--bs-dropdown-zindex);min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y)var(--bs-dropdown-padding-x);font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width)solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);background-clip:padding-box;margin:0;list-style:none;display:none;position:absolute}.dropdown-menu[data-bs-popper]{margin-top:var(--bs-dropdown-spacer);top:100%;left:0}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{margin-top:0;margin-bottom:var(--bs-dropdown-spacer);top:auto;bottom:100%}.dropup .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-top:0;border-bottom-color:currentColor;margin-left:.255em;display:inline-block}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:var(--bs-dropdown-spacer);top:0;left:100%;right:auto}.dropend .dropdown-toggle:after{vertical-align:.255em;content:"";border:.3em solid #0000;border-left-color:currentColor;border-right:0;margin-left:.255em;display:inline-block}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:var(--bs-dropdown-spacer);top:0;left:auto;right:100%}.dropstart .dropdown-toggle:after{vertical-align:.255em;content:"";margin-left:.255em;display:none}.dropstart .dropdown-toggle:before{vertical-align:.255em;content:"";border-top:.3em solid #0000;border-bottom:.3em solid #0000;border-right:.3em solid;margin-right:.255em;display:inline-block}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{margin:var(--bs-dropdown-divider-margin-y)0;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1;height:0;overflow:hidden}.dropdown-item{padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);clear:both;color:var(--bs-dropdown-link-color);text-align:inherit;white-space:nowrap;border-radius:var(--bs-dropdown-item-border-radius,0);background-color:#0000;border:0;width:100%;font-weight:400;text-decoration:none;display:block}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);background-color:var(--bs-dropdown-link-active-bg);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:#0000}.dropdown-menu.show{display:block}.dropdown-header{padding:var(--bs-dropdown-header-padding-y)var(--bs-dropdown-header-padding-x);color:var(--bs-dropdown-header-color);white-space:nowrap;margin-bottom:0;font-size:.875rem;display:block}.dropdown-item-text{padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color);display:block}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:#ffffff26;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group-vertical>.btn,.btn-group>.btn{flex:auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width)*-1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width)*-1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);flex-wrap:wrap;margin-bottom:0;padding-left:0;list-style:none;display:flex}.nav-link{padding:var(--bs-nav-link-padding-y)var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);background:0 0;border:0;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg)var(--bs-secondary-bg)var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color)var(--bs-border-color)var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width)solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width)solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{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)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-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)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{border-bottom:var(--bs-nav-underline-border-width)solid transparent;padding-left:0;padding-right:0}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentColor;font-weight:700}.nav-fill .nav-item,.nav-fill>.nav-link{text-align:center;flex:auto}.nav-justified .nav-item,.nav-justified>.nav-link{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}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;padding:var(--bs-navbar-padding-y)var(--bs-navbar-padding-x);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{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);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);white-space:nowrap;text-decoration:none}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);flex-direction:column;margin-bottom:0;padding-left:0;list-style:none;display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-top:.5rem;padding-bottom:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y)var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);color:var(--bs-navbar-color);border:var(--bs-border-width)solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition);background-color:#0000;line-height:1}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;width:1.5em;height:1.5em;display:inline-block}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{flex-basis:auto;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{z-index:auto;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:#ffffff8c;--bs-navbar-hover-color:#ffffffbf;--bs-navbar-disabled-color:#ffffff40;--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:#ffffff1a;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);border:var(--bs-card-border-width)solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);background-clip:border-box;flex-direction:column;min-width:0;display:flex;position:relative}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{padding:var(--bs-card-spacer-y)var(--bs-card-spacer-x);color:var(--bs-card-color);flex:auto}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5*var(--bs-card-title-spacer-y));color:var(--bs-card-subtitle-color);margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width)solid 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-card-cap-bg);border-top:var(--bs-card-border-width)solid 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-header-tabs{margin-right:calc(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5*var(--bs-card-cap-padding-x));margin-left:calc(-.5*var(--bs-card-cap-padding-x))}.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-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem #0d6efd40;--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{padding:var(--bs-accordion-btn-padding-y)var(--bs-accordion-btn-padding-x);color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);overflow-anchor:none;transition:var(--bs-accordion-transition);border:0;border-radius:0;align-items:center;width:100%;font-size:1rem;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width))0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-left:auto}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);box-shadow:var(--bs-accordion-btn-focus-box-shadow);outline:0}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width)solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y)var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-right:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);padding:var(--bs-breadcrumb-padding-y)var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;list-style:none;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider,"/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 .25rem #0d6efd40;--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-left:0;list-style:none;display:flex}.page-link{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);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:block;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{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);box-shadow:var(--bs-pagination-focus-box-shadow);outline:0}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{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-left:calc(var(--bs-border-width)*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);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-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius);line-height:1;display:inline-block}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width)solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;padding:var(--bs-alert-padding-y)var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);position:relative}.alert-heading{color:inherit}.alert-link{color:var(--bs-alert-link-color);font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{z-index:2;padding:1.25rem 1rem;position:absolute;top:0;right:0}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;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);display:flex;overflow:hidden}.progress-bar{color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color: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:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-left: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-action{color:var(--bs-list-group-action-color);text-align:inherit;width:100%}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);background-color:var(--bs-list-group-action-hover-bg);text-decoration:none}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{padding:var(--bs-list-group-item-padding-y)var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width)solid var(--bs-list-group-border-color);text-decoration:none;display:block;position:relative}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-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-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width: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-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-shadow:0 0 0 .25rem #0d6efd40;--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:.25;--bs-btn-close-white-filter:invert(1)grayscale(100%)brightness(200%);box-sizing:content-box;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg)center/1em auto no-repeat;opacity:var(--bs-btn-close-opacity);border:0;border-radius:.375rem;width:1em;height:1em;padding:.25em}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus{box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);outline:0}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width)solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius);background-clip:padding-box;max-width:100%}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y)var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);border-bottom:var(--bs-toast-border-width)solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));background-clip:padding-box;align-items:center;display:flex}.toast-header .btn-close{margin-right:calc(-.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);z-index:var(--bs-modal-zindex);outline:0;width:100%;height:100%;display:none;position:fixed;top:0;left:0;overflow:hidden auto}.modal-dialog{margin:var(--bs-modal-margin);pointer-events:none;width:auto;position:relative}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{min-height:calc(100% - var(--bs-modal-margin)*2);align-items:center;display:flex}.modal-content{color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);border:var(--bs-modal-border-width)solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);background-clip:padding-box;outline:0;flex-direction:column;width:100%;display:flex;position:relative}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;z-index:var(--bs-backdrop-zindex);background-color:var(--bs-backdrop-bg);width:100vw;height:100vh;position:fixed;top:0;left:0}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width)solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5)calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-.5*var(--bs-modal-header-padding-y))calc(-.5*var(--bs-modal-header-padding-x))calc(-.5*var(--bs-modal-header-padding-y))auto}.modal-title{line-height:var(--bs-modal-title-line-height);margin-bottom:0}.modal-body{padding:var(--bs-modal-padding);flex:auto;position:relative}.modal-footer{padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width)solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-left:auto;margin-right:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{border:0;border-radius:0;height:100%}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);text-align:left;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-style:normal;font-weight:400;line-height:1.5;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-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-top-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .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-right-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .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-left-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)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--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-font-sans-serif);text-align:left;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-style:normal;font-weight:400;line-height:1.5;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);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:after,.popover .popover-arrow:before{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{border-top-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.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-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{border-right-color:var(--bs-popover-arrow-border);left:0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{border-bottom-color:var(--bs-popover-arrow-border);top:0}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{width:var(--bs-popover-arrow-width);margin-left:calc(-.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width)solid var(--bs-popover-header-bg);display:block;position:absolute;top:0;left:50%}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.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-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width)*.5)0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{border-left-color:var(--bs-popover-arrow-border);right:0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-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-bottom:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-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)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;position:relative;overflow:hidden}.carousel-inner:after{clear:both;content:"";display:block}.carousel-item{float:left;backface-visibility:hidden;width:100%;margin-right:-100%;transition:transform .6s ease-in-out;display:none;position:relative}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{z-index:1;color:#fff;text-align:center;opacity:.5;background:0 0;border:0;justify-content:center;align-items:center;width:15%;padding:0;transition:opacity .15s;display:flex;position:absolute;top:0;bottom:0}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;opacity:.9;outline:0;text-decoration:none}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{background-position:50%;background-repeat:no-repeat;background-size:100% 100%;width:2rem;height:2rem;display:inline-block}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e")}.carousel-indicators{z-index:2;justify-content:center;margin-bottom:1rem;margin-left:15%;margin-right:15%;padding:0;display:flex;position:absolute;bottom:0;left:0;right:0}.carousel-indicators [data-bs-target]{box-sizing:content-box;text-indent:-999px;cursor:pointer;opacity:.5;background-color:#fff;background-clip:padding-box;border:10px solid #0000;border-left:0;border-right:0;flex:0 auto;width:30px;height:3px;margin-left:3px;margin-right:3px;padding:0;transition:opacity .6s}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{color:#fff;text-align:center;padding-top:1.25rem;padding-bottom:1.25rem;position:absolute;bottom:1.25rem;left:15%;right:15%}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert()grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert()grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{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%;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-right-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}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-sm.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:767.98px){.offcanvas-md{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-md.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:991.98px){.offcanvas-lg{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-lg.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:1199.98px){.offcanvas-xl{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (max-width:1399.98px){.offcanvas-xxl{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas-xxl.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{flex-grow:0;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.offcanvas{z-index:var(--bs-offcanvas-zindex);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;max-width:100%;display:flex;position:fixed;bottom:0}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;left:0;transform:translate(-100%)}.offcanvas.offcanvas-end{width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);top:0;right:0;transform:translate(100%)}.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);border-bottom:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;top:0;left:0;right:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom{height:var(--bs-offcanvas-height);border-top:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);max-height:100%;left:0;right:0;transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{z-index:1040;background-color:#000;width:100vw;height:100vh;position:fixed;top:0;left:0}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);justify-content:space-between;align-items:center;display:flex}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5)calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-right:calc(-.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);flex-grow:1;overflow-y:auto}.placeholder{vertical-align:middle;cursor:wait;opacity:.5;background-color:currentColor;min-height:1em;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:.2}}.placeholder-wave{animation:2s linear infinite placeholder-wave;-webkit-mask-image:linear-gradient(130deg,#000 55%,#000c 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0;mask-position:-200% 0}}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{box-shadow:var(--bs-focus-ring-x,0)var(--bs-focus-ring-y,0)var(--bs-focus-ring-blur,0)var(--bs-focus-ring-width)var(--bs-focus-ring-color);outline:0}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));-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:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{width:100%;position:relative}.ratio:before{padding-top:var(--bs-aspect-ratio);content:"";display:block}.ratio>*{width:100%;height:100%;position:absolute;top:0;left:0}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571%}.fixed-top{z-index:1030;position:fixed;top:0;left:0;right:0}.fixed-bottom{z-index:1030;position:fixed;bottom:0;left:0;right:0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (min-width:576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:992px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:1200px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (min-width:1400px){.sticky-xxl-top{z-index:1020;position:sticky;top:0}.sticky-xxl-bottom{z-index:1020;position:sticky;bottom:0}}.hstack{flex-direction:row;align-self:stretch;align-items:center;display:flex}.vstack{flex-direction:column;flex:auto;align-self:stretch;display:flex}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!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-border-width);opacity:.25;background-color:currentColor;align-self:stretch;min-height:1em;display:inline-block}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:#0000!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--body-color:#212529;--move-btn-width:60px;--move-btn-height:34px;--focus-ring:0 0 0 .2rem #268fff80;accent-color:var(--bs-primary)}:not(:defined){display:none!important}html,body{font-size:14px}body{background-color:#eae9e9;overflow-x:hidden}[hidden]{display:none!important}a:focus-visible,details summary:focus-visible{box-shadow:var(--focus-ring);border-radius:.25rem;outline:0;transition:box-shadow .15s ease-in-out}.container{max-width:1400px}.site-header{text-align:center;flex-direction:column;align-items:center;row-gap:.5rem;margin:3rem .5rem;display:flex}.page-title{margin-bottom:0;font-weight:300}.canvas{max-width:100%;display:block}.inputs-container input[type=color],.settings-button{cursor:pointer;border:0;width:30px;height:30px;margin:0 2px;padding:0;line-height:1}.inputs-container .meme-text{min-width:0;height:calc(1.5em + .75rem + 2px);min-height:calc(1.5em + .75rem + 2px);margin:.5rem}.settings-button{background-image:url(gear.b3b5d1a5.svg);background-position:50%;background-repeat:no-repeat;background-size:60%}.inputs-container{flex:1}.inputs-container:empty{display:none}.instructions{text-align:center;text-wrap:balance;flex-direction:column;justify-content:center;align-items:center;row-gap:1rem;height:100%;min-height:200px;padding:1rem;display:flex}.errorsContainer{z-index:1051;pointer-events:none;width:100%;position:fixed;top:0;left:0}.errorsContainer .alert{pointer-events:all}details[open] summary{margin-bottom:.5rem}button[data-button=delete-text-box]{background-image:url(trash.d9edab78.svg);background-position:50%;background-repeat:no-repeat;width:25px;min-width:25px;height:25px;margin-left:.5rem;padding:0}.gallery{scroll-behavior:smooth;gap:.5rem;min-height:112px;margin:0;padding:.25rem 0;display:flex;overflow-x:auto}.gallery>button{cursor:pointer;padding:0}.gallery>button>img{object-fit:cover;border-radius:.2rem;min-width:88px;height:88px;display:block}.gallery__no-results{text-align:center;flex:1;justify-content:center;align-items:center;display:flex}.move-text-actions{width:calc(var(--move-btn-width)*3);height:calc(var(--move-btn-height)*2);margin:0 auto;position:relative}.move-text-actions [data-move]{width:var(--move-btn-width);height:var(--move-btn-height);background-position:50%;background-repeat:no-repeat;position:absolute}.move-text-actions [data-move=offsetY][data-sign=\-]{top:-1px;left:var(--move-btn-width);background-image:url(chevron-up.f532d8b6.svg)}.move-text-actions [data-move=offsetY][data-sign=\+]{top:calc(var(--move-btn-height) + 1px);left:var(--move-btn-width);background-image:url(chevron-down.ad14d981.svg)}.move-text-actions [data-move=offsetX][data-sign=\-]{top:calc(var(--move-btn-height)/2);background-image:url(chevron-left.20a2f252.svg);left:-2px}.move-text-actions [data-move=offsetX][data-sign=\+]{top:calc(var(--move-btn-height)/2);left:calc(var(--move-btn-width)*2 + 2px);background-image:url(chevron-right.1be074ac.svg)}capture-photo:not(:defined){display:none}capture-photo{overflow:hidden}capture-photo::part(video){background-color:#000;width:100%}capture-photo::part(actions-container){justify-content:center;align-items:center;gap:2rem;padding:1rem 0;display:flex}capture-photo::part(capture-button),capture-photo::part(facing-mode-button){text-indent:-9999px;cursor:pointer;-webkit-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;border-radius:50%;overflow:hidden;box-shadow:0 0 1rem #0000004d}capture-photo::part(capture-button){background-color:#c2c3c7;background-image:url(aperture.4bf28ce8.svg);background-size:90%;border:5px solid #fff;width:70px;height:70px}capture-photo::part(facing-mode-button){background-color:#fff;background-image:url(camera-reverse.284e8ac9.svg);background-size:60%;border:0;width:50px;height:50px;margin-right:calc(-50px - 2rem)}capture-photo[loading]::part(video){background-image:url(spinner.4452ed29.svg);background-position:50%;background-repeat:no-repeat;background-size:60px}capture-photo[loading]::part(capture-button),capture-photo[loading]::part(facing-mode-button){opacity:.6;pointer-events:none}modal-element{--me-width:fit-content;--me-border-radius:.25rem;--me-border-width:0;--me-box-shadow:0 0 1rem 0 #0000004d}#videoModal{--me-width:600px}modal-element::part(base):focus-visible{outline:0}modal-element [slot=header]{color:var(--body-color);margin:0}modal-element::part(close){color:var(--body-color);border-radius:.25rem;transition:box-shadow .15s ease-in-out}modal-element::part(close):focus-visible{box-shadow:var(--focus-ring);outline:0}modal-element::part(body){padding-block:0}modal-element [slot=footer]{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.25rem;display:flex}files-dropzone{--dropzone-border-color:var(--bs-secondary);--dropzone-border-color-hover:var(--bs-primary);--dropzone-border-color-dragover:var(--bs-primary);--dropzone-background-color-hover:var(--bs-light);--dropzone-background-color-dragover:var(--bs-light);--dropzone-focus-box-shadow:var(--focus-ring);height:100%}files-dropzone::part(dropzone){height:100%;padding:.5rem}.text-underline{text-decoration:underline} +/*# sourceMappingURL=index.bcbdd9b6.css.map */ diff --git a/docs/index.bcbdd9b6.css.map b/docs/index.bcbdd9b6.css.map new file mode 100644 index 0000000..be095bb --- /dev/null +++ b/docs/index.bcbdd9b6.css.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["index.bcbdd9b6.css","node_modules/bootstrap/dist/css/bootstrap.min.css","node_modules/bootstrap/scss/mixins/_banner.scss","node_modules/bootstrap/scss/_root.scss","node_modules/bootstrap/dist/css/dist/css/bootstrap.css","node_modules/bootstrap/scss/vendor/_rfs.scss","node_modules/bootstrap/scss/mixins/_color-mode.scss","node_modules/bootstrap/scss/_reboot.scss","node_modules/bootstrap/scss/mixins/_border-radius.scss","node_modules/bootstrap/scss/_type.scss","node_modules/bootstrap/scss/mixins/_lists.scss","node_modules/bootstrap/scss/_images.scss","node_modules/bootstrap/scss/mixins/_image.scss","node_modules/bootstrap/scss/_containers.scss","node_modules/bootstrap/scss/mixins/_container.scss","node_modules/bootstrap/scss/mixins/_breakpoints.scss","node_modules/bootstrap/scss/_grid.scss","node_modules/bootstrap/scss/mixins/_grid.scss","node_modules/bootstrap/scss/_tables.scss","node_modules/bootstrap/scss/mixins/_table-variants.scss","node_modules/bootstrap/scss/forms/_labels.scss","node_modules/bootstrap/scss/forms/_form-text.scss","node_modules/bootstrap/scss/forms/_form-control.scss","node_modules/bootstrap/scss/mixins/_transition.scss","node_modules/bootstrap/scss/mixins/_gradients.scss","node_modules/bootstrap/scss/forms/_form-select.scss","node_modules/bootstrap/scss/forms/_form-check.scss","node_modules/bootstrap/scss/forms/_form-range.scss","node_modules/bootstrap/scss/forms/_floating-labels.scss","node_modules/bootstrap/scss/forms/_input-group.scss","node_modules/bootstrap/scss/mixins/_forms.scss","node_modules/bootstrap/scss/_buttons.scss","node_modules/bootstrap/scss/mixins/_buttons.scss","node_modules/bootstrap/scss/_transitions.scss","node_modules/bootstrap/scss/_dropdown.scss","node_modules/bootstrap/scss/mixins/_caret.scss","node_modules/bootstrap/scss/_button-group.scss","node_modules/bootstrap/scss/_nav.scss","node_modules/bootstrap/scss/_navbar.scss","node_modules/bootstrap/scss/_card.scss","node_modules/bootstrap/scss/_accordion.scss","node_modules/bootstrap/scss/_breadcrumb.scss","node_modules/bootstrap/scss/_pagination.scss","node_modules/bootstrap/scss/mixins/_pagination.scss","node_modules/bootstrap/scss/_badge.scss","node_modules/bootstrap/scss/_alert.scss","node_modules/bootstrap/scss/_progress.scss","node_modules/bootstrap/scss/_list-group.scss","node_modules/bootstrap/scss/_close.scss","node_modules/bootstrap/scss/_toasts.scss","node_modules/bootstrap/scss/_modal.scss","node_modules/bootstrap/scss/mixins/_backdrop.scss","node_modules/bootstrap/scss/_tooltip.scss","node_modules/bootstrap/scss/mixins/_reset-text.scss","node_modules/bootstrap/scss/_popover.scss","node_modules/bootstrap/scss/_carousel.scss","node_modules/bootstrap/scss/mixins/_clearfix.scss","node_modules/bootstrap/scss/_spinners.scss","node_modules/bootstrap/scss/_offcanvas.scss","node_modules/bootstrap/scss/_placeholders.scss","node_modules/bootstrap/scss/helpers/_color-bg.scss","node_modules/bootstrap/scss/helpers/_colored-links.scss","node_modules/bootstrap/scss/helpers/_focus-ring.scss","node_modules/bootstrap/scss/helpers/_icon-link.scss","node_modules/bootstrap/scss/helpers/_ratio.scss","node_modules/bootstrap/scss/helpers/_position.scss","node_modules/bootstrap/scss/helpers/_stacks.scss","node_modules/bootstrap/scss/helpers/_visually-hidden.scss","node_modules/bootstrap/scss/mixins/_visually-hidden.scss","node_modules/bootstrap/scss/helpers/_stretched-link.scss","node_modules/bootstrap/scss/helpers/_text-truncation.scss","node_modules/bootstrap/scss/mixins/_text-truncate.scss","node_modules/bootstrap/scss/helpers/_vr.scss","node_modules/bootstrap/scss/mixins/_utilities.scss","node_modules/bootstrap/scss/utilities/_api.scss","src/css/main.css"],"sourcesContent":[":root, [data-bs-theme=\"light\"] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, #ffffff26, #fff0);\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: #212529bf;\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: #21252980;\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: #0000002d;\n --bs-border-radius: .375rem;\n --bs-border-radius-sm: .25rem;\n --bs-border-radius-lg: .5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 .5rem 1rem #00000026;\n --bs-box-shadow-sm: 0 .125rem .25rem #00000013;\n --bs-box-shadow-lg: 0 1rem 3rem #0000002d;\n --bs-box-shadow-inset: inset 0 1px 2px #00000013;\n --bs-focus-ring-width: .25rem;\n --bs-focus-ring-opacity: .25;\n --bs-focus-ring-color: #0d6efd40;\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=\"dark\"] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: #dee2e6bf;\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: #dee2e680;\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: #ffffff26;\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*, :after, :before {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: transparent;\n margin: 0;\n}\n\nhr {\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: .25;\n margin: 1rem 0;\n}\n\n.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {\n color: var(--bs-heading-color);\n margin-top: 0;\n margin-bottom: .5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\n.h1, h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n\n@media (min-width: 1200px) {\n .h1, h1 {\n font-size: 2.5rem;\n }\n}\n\n.h2, h2 {\n font-size: calc(1.325rem + .9vw);\n}\n\n@media (min-width: 1200px) {\n .h2, h2 {\n font-size: 2rem;\n }\n}\n\n.h3, h3 {\n font-size: calc(1.3rem + .6vw);\n}\n\n@media (min-width: 1200px) {\n .h3, h3 {\n font-size: 1.75rem;\n }\n}\n\n.h4, h4 {\n font-size: calc(1.275rem + .3vw);\n}\n\n@media (min-width: 1200px) {\n .h4, h4 {\n font-size: 1.5rem;\n }\n}\n\n.h5, h5 {\n font-size: 1.25rem;\n}\n\n.h6, h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\naddress {\n font-style: normal;\n line-height: inherit;\n margin-bottom: 1rem;\n}\n\nol, ul {\n padding-left: 2rem;\n}\n\ndl, ol, ul {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol, ol ul, ul ol, ul ul {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb, strong {\n font-weight: bolder;\n}\n\n.small, small {\n font-size: .875em;\n}\n\n.mark, mark {\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n padding: .1875em;\n}\n\nsub, sup {\n vertical-align: baseline;\n font-size: .75em;\n line-height: 0;\n position: relative;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\n\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\ncode, kbd, pre, samp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: .875em;\n display: block;\n overflow: auto;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n color: var(--bs-code-color);\n word-wrap: break-word;\n font-size: .875em;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: .25rem;\n padding: .1875rem .375rem;\n font-size: .875em;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg, svg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n color: var(--bs-secondary-color);\n text-align: left;\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\ntbody, td, tfoot, th, thead, tr {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\nbutton, input, optgroup, select, textarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n margin: 0;\n}\n\nbutton, select {\n text-transform: none;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\n\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\n[type=\"button\"], [type=\"reset\"], [type=\"submit\"], button {\n -webkit-appearance: button;\n}\n\n[type=\"button\"]:not(:disabled), [type=\"reset\"]:not(:disabled), [type=\"submit\"]:not(:disabled), button:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n border: 0;\n min-width: 0;\n margin: 0;\n padding: 0;\n}\n\nlegend {\n float: left;\n font-size: calc(1.275rem + .3vw);\n line-height: inherit;\n width: 100%;\n margin-bottom: .5rem;\n padding: 0;\n}\n\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\n\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-day-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-datetime-edit-hour-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-minute {\n padding: 0;\n}\n\n::-webkit-datetime-edit-month-field {\n padding: 0;\n}\n\n::-webkit-datetime-edit-text {\n padding: 0;\n}\n\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n cursor: pointer;\n display: list-item;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled, .list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: .5rem;\n}\n\n.initialism {\n text-transform: uppercase;\n font-size: .875em;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n color: #6c757d;\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: .875em;\n}\n\n.blockquote-footer:before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n padding: .25rem;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: .5rem;\n line-height: 1;\n}\n\n.figure-caption {\n color: var(--bs-secondary-color);\n font-size: .875em;\n}\n\n.container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n padding-right: calc(var(--bs-gutter-x) * .5);\n padding-left: calc(var(--bs-gutter-x) * .5);\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container, .container-md, .container-sm {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container, .container-lg, .container-md, .container-sm {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container, .container-lg, .container-md, .container-sm, .container-xl {\n max-width: 1140px;\n }\n}\n\n@media (min-width: 1400px) {\n .container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {\n max-width: 1320px;\n }\n}\n\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-.5 * var(--bs-gutter-x));\n margin-left: calc(-.5 * var(--bs-gutter-x));\n flex-wrap: wrap;\n display: flex;\n}\n\n.row > * {\n padding-right: calc(var(--bs-gutter-x) * .5);\n padding-left: calc(var(--bs-gutter-x) * .5);\n margin-top: var(--bs-gutter-y);\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n}\n\n.col {\n flex: 1 0;\n}\n\n.row-cols-auto > * {\n flex: none;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: none;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: none;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: none;\n width: 33.3333%;\n}\n\n.row-cols-4 > * {\n flex: none;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: none;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: none;\n width: 16.6667%;\n}\n\n.col-auto {\n flex: none;\n width: auto;\n}\n\n.col-1 {\n flex: none;\n width: 8.33333%;\n}\n\n.col-2 {\n flex: none;\n width: 16.6667%;\n}\n\n.col-3 {\n flex: none;\n width: 25%;\n}\n\n.col-4 {\n flex: none;\n width: 33.3333%;\n}\n\n.col-5 {\n flex: none;\n width: 41.6667%;\n}\n\n.col-6 {\n flex: none;\n width: 50%;\n}\n\n.col-7 {\n flex: none;\n width: 58.3333%;\n}\n\n.col-8 {\n flex: none;\n width: 66.6667%;\n}\n\n.col-9 {\n flex: none;\n width: 75%;\n}\n\n.col-10 {\n flex: none;\n width: 83.3333%;\n}\n\n.col-11 {\n flex: none;\n width: 91.6667%;\n}\n\n.col-12 {\n flex: none;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333%;\n}\n\n.offset-2 {\n margin-left: 16.6667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333%;\n}\n\n.offset-5 {\n margin-left: 41.6667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333%;\n}\n\n.offset-8 {\n margin-left: 66.6667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333%;\n}\n\n.offset-11 {\n margin-left: 91.6667%;\n}\n\n.g-0, .gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0, .gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1, .gx-1 {\n --bs-gutter-x: .25rem;\n}\n\n.g-1, .gy-1 {\n --bs-gutter-y: .25rem;\n}\n\n.g-2, .gx-2 {\n --bs-gutter-x: .5rem;\n}\n\n.g-2, .gy-2 {\n --bs-gutter-y: .5rem;\n}\n\n.g-3, .gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3, .gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4, .gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4, .gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5, .gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5, .gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0;\n }\n\n .row-cols-sm-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-sm-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-sm-auto {\n flex: none;\n width: auto;\n }\n\n .col-sm-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-sm-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-sm-3 {\n flex: none;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-sm-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-sm-6 {\n flex: none;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-sm-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-sm-9 {\n flex: none;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-sm-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-sm-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.33333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6667%;\n }\n\n .g-sm-0, .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0, .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1, .gx-sm-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-sm-1, .gy-sm-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-sm-2, .gx-sm-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-sm-2, .gy-sm-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-sm-3, .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3, .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4, .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4, .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5, .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5, .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0;\n }\n\n .row-cols-md-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-md-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-md-auto {\n flex: none;\n width: auto;\n }\n\n .col-md-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-md-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-md-3 {\n flex: none;\n width: 25%;\n }\n\n .col-md-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-md-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-md-6 {\n flex: none;\n width: 50%;\n }\n\n .col-md-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-md-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-md-9 {\n flex: none;\n width: 75%;\n }\n\n .col-md-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-md-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-md-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.33333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6667%;\n }\n\n .g-md-0, .gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0, .gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1, .gx-md-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-md-1, .gy-md-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-md-2, .gx-md-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-md-2, .gy-md-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-md-3, .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3, .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4, .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4, .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5, .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5, .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0;\n }\n\n .row-cols-lg-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-lg-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-lg-auto {\n flex: none;\n width: auto;\n }\n\n .col-lg-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-lg-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-lg-3 {\n flex: none;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-lg-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-lg-6 {\n flex: none;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-lg-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-lg-9 {\n flex: none;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-lg-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-lg-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.33333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6667%;\n }\n\n .g-lg-0, .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0, .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1, .gx-lg-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-lg-1, .gy-lg-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-lg-2, .gx-lg-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-lg-2, .gy-lg-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-lg-3, .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3, .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4, .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4, .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5, .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5, .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0;\n }\n\n .row-cols-xl-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-xl-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xl-auto {\n flex: none;\n width: auto;\n }\n\n .col-xl-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-xl-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xl-3 {\n flex: none;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-xl-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-xl-6 {\n flex: none;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-xl-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-xl-9 {\n flex: none;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-xl-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-xl-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.33333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6667%;\n }\n\n .g-xl-0, .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0, .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1, .gx-xl-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-xl-1, .gy-xl-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-xl-2, .gx-xl-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-xl-2, .gy-xl-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-xl-3, .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3, .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4, .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4, .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5, .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5, .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0;\n }\n\n .row-cols-xxl-auto > * {\n flex: none;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: none;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: none;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: none;\n width: 33.3333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: none;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: none;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xxl-auto {\n flex: none;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: none;\n width: 8.33333%;\n }\n\n .col-xxl-2 {\n flex: none;\n width: 16.6667%;\n }\n\n .col-xxl-3 {\n flex: none;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: none;\n width: 33.3333%;\n }\n\n .col-xxl-5 {\n flex: none;\n width: 41.6667%;\n }\n\n .col-xxl-6 {\n flex: none;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: none;\n width: 58.3333%;\n }\n\n .col-xxl-8 {\n flex: none;\n width: 66.6667%;\n }\n\n .col-xxl-9 {\n flex: none;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: none;\n width: 83.3333%;\n }\n\n .col-xxl-11 {\n flex: none;\n width: 91.6667%;\n }\n\n .col-xxl-12 {\n flex: none;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-left: 0;\n }\n\n .offset-xxl-1 {\n margin-left: 8.33333%;\n }\n\n .offset-xxl-2 {\n margin-left: 16.6667%;\n }\n\n .offset-xxl-3 {\n margin-left: 25%;\n }\n\n .offset-xxl-4 {\n margin-left: 33.3333%;\n }\n\n .offset-xxl-5 {\n margin-left: 41.6667%;\n }\n\n .offset-xxl-6 {\n margin-left: 50%;\n }\n\n .offset-xxl-7 {\n margin-left: 58.3333%;\n }\n\n .offset-xxl-8 {\n margin-left: 66.6667%;\n }\n\n .offset-xxl-9 {\n margin-left: 75%;\n }\n\n .offset-xxl-10 {\n margin-left: 83.3333%;\n }\n\n .offset-xxl-11 {\n margin-left: 91.6667%;\n }\n\n .g-xxl-0, .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0, .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1, .gx-xxl-1 {\n --bs-gutter-x: .25rem;\n }\n\n .g-xxl-1, .gy-xxl-1 {\n --bs-gutter-y: .25rem;\n }\n\n .g-xxl-2, .gx-xxl-2 {\n --bs-gutter-x: .5rem;\n }\n\n .g-xxl-2, .gy-xxl-2 {\n --bs-gutter-y: .5rem;\n }\n\n .g-xxl-3, .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3, .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4, .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4, .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5, .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5, .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), .05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), .1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), .075);\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n width: 100%;\n margin-bottom: 1rem;\n}\n\n.table > :not(caption) > * > * {\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n padding: .5rem;\n}\n\n.table > tbody {\n vertical-align: inherit;\n}\n\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: .25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > *, .table-striped-columns > :not(caption) > tr > :nth-child(2n) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n }\n}\n\n.form-label {\n margin-bottom: .5rem;\n}\n\n.col-form-label {\n padding-top: calc(.375rem + var(--bs-border-width));\n padding-bottom: calc(.375rem + var(--bs-border-width));\n font-size: inherit;\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(.5rem + var(--bs-border-width));\n padding-bottom: calc(.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(.25rem + var(--bs-border-width));\n padding-bottom: calc(.25rem + var(--bs-border-width));\n font-size: .875rem;\n}\n\n.form-text {\n color: var(--bs-secondary-color);\n margin-top: .25rem;\n font-size: .875em;\n}\n\n.form-control {\n color: var(--bs-body-color);\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n background-clip: padding-box;\n width: 100%;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control[type=\"file\"] {\n overflow: hidden;\n}\n\n.form-control[type=\"file\"]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n\n.form-control::-webkit-datetime-edit {\n padding: 0;\n display: block;\n}\n\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n\n.form-control::-webkit-file-upload-button {\n -webkit-margin-end: .75rem;\n margin: -.375rem -.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n margin-inline-end: .75rem;\n padding: .375rem .75rem;\n 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\n.form-control::file-selector-button {\n -webkit-margin-end: .75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n margin: -.375rem -.75rem;\n margin-inline-end: .75rem;\n padding: .375rem .75rem;\n 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\n@media (prefers-reduced-motion: reduce) {\n .form-control::file-selector-button {\n transition: none;\n }\n}\n\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n color: var(--bs-body-color);\n border: solid #0000;\n border-width: var(--bs-border-width) 0;\n background-color: #0000;\n width: 100%;\n margin-bottom: 0;\n padding: .375rem 0;\n line-height: 1.5;\n display: block;\n}\n\n.form-control-plaintext:focus {\n outline: 0;\n}\n\n.form-control-plaintext.form-control-lg, .form-control-plaintext.form-control-sm {\n padding-left: 0;\n padding-right: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n border-radius: var(--bs-border-radius-sm);\n padding: .25rem .5rem;\n font-size: .875rem;\n}\n\n.form-control-sm::file-selector-button {\n -webkit-margin-end: .5rem;\n margin: -.25rem -.5rem;\n margin-inline-end: .5rem;\n padding: .25rem .5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n border-radius: var(--bs-border-radius-lg);\n padding: .5rem 1rem;\n font-size: 1.25rem;\n}\n\n.form-control-lg::file-selector-button {\n -webkit-margin-end: 1rem;\n margin: -.5rem -1rem;\n margin-inline-end: 1rem;\n padding: .5rem 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));\n}\n\ntextarea.form-control-sm {\n min-height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n}\n\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n height: calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));\n width: 3rem;\n padding: .375rem;\n}\n\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n\n.form-control-color::-moz-color-swatch {\n border-radius: var(--bs-border-radius);\n border: 0 !important;\n}\n\n.form-control-color::-webkit-color-swatch {\n border-radius: var(--bs-border-radius);\n border: 0 !important;\n}\n\n.form-control-color.form-control-sm {\n height: calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n color: var(--bs-body-color);\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n background-position: right .75rem center;\n background-repeat: no-repeat;\n background-size: 16px 12px;\n width: 100%;\n padding: .375rem 2.25rem .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n background-image: none;\n padding-right: .75rem;\n}\n\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-select:-moz-focusring {\n color: #0000;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n border-radius: var(--bs-border-radius-sm);\n padding-top: .25rem;\n padding-bottom: .25rem;\n padding-left: .5rem;\n font-size: .875rem;\n}\n\n.form-select-lg {\n border-radius: var(--bs-border-radius-lg);\n padding-top: .5rem;\n padding-bottom: .5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n[data-bs-theme=\"dark\"] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n min-height: 1.5rem;\n margin-bottom: .125rem;\n padding-left: 1.5em;\n display: block;\n}\n\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n text-align: right;\n padding-left: 0;\n padding-right: 1.5em;\n}\n\n.form-check-reverse .form-check-input {\n float: right;\n margin-left: 0;\n margin-right: -1.5em;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n vertical-align: top;\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: .25em;\n}\n\n.form-check-input[type=\"checkbox\"] {\n border-radius: .25em;\n}\n\n.form-check-input[type=\"radio\"] {\n border-radius: 50%;\n}\n\n.form-check-input:active {\n filter: brightness(90%);\n}\n\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n\n.form-check-input:checked[type=\"checkbox\"] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check-input:checked[type=\"radio\"] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-input[type=\"checkbox\"]:indeterminate {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: .5;\n}\n\n.form-check-input:disabled ~ .form-check-label, .form-check-input[disabled] ~ .form-check-label {\n cursor: default;\n opacity: .5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n background-image: var(--bs-form-switch-bg);\n background-position: 0;\n border-radius: 2em;\n width: 2em;\n margin-left: -2.5em;\n transition: background-position .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n\n.form-switch .form-check-input:checked {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n background-position: 100%;\n}\n\n.form-switch.form-check-reverse {\n padding-left: 0;\n padding-right: 2.5em;\n}\n\n.form-switch.form-check-reverse .form-check-input {\n margin-left: 0;\n margin-right: -2.5em;\n}\n\n.form-check-inline {\n margin-right: 1rem;\n display: inline-block;\n}\n\n.btn-check {\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n position: absolute;\n}\n\n.btn-check:disabled + .btn, .btn-check[disabled] + .btn {\n pointer-events: none;\n filter: none;\n opacity: .65;\n}\n\n[data-bs-theme=\"dark\"] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0000;\n width: 100%;\n height: 1.5rem;\n padding: 0;\n}\n\n.form-range:focus {\n outline: 0;\n}\n\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem #0d6efd40;\n}\n\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem #0d6efd40;\n}\n\n.form-range::-moz-focus-outer {\n border: 0;\n}\n\n.form-range::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n width: 1rem;\n height: 1rem;\n margin-top: -.25rem;\n transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n\n.form-range::-webkit-slider-runnable-track {\n color: #0000;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: #0000;\n border-radius: 1rem;\n width: 100%;\n height: .5rem;\n}\n\n.form-range::-moz-range-thumb {\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n width: 1rem;\n height: 1rem;\n transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n\n.form-range::-moz-range-track {\n color: #0000;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: #0000;\n border-radius: 1rem;\n width: 100%;\n height: .5rem;\n}\n\n.form-range:disabled {\n pointer-events: none;\n}\n\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n\n.form-floating > .form-control, .form-floating > .form-control-plaintext, .form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n\n.form-floating > label {\n z-index: 2;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n height: 100%;\n padding: 1rem .75rem;\n transition: opacity .1s ease-in-out, transform .1s ease-in-out;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n\n.form-floating > .form-control, .form-floating > .form-control-plaintext {\n padding: 1rem .75rem;\n}\n\n.form-floating > .form-control-plaintext::-moz-placeholder {\n color: #0000;\n}\n\n.form-floating > .form-control::-moz-placeholder {\n color: #0000;\n}\n\n.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {\n color: #0000;\n}\n\n:-webkit-any(.form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:not(:placeholder-shown)), .form-floating > .form-control-plaintext:focus, .form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), :-webkit-any(.form-floating > .form-control-plaintext:-webkit-autofill, .form-floating > .form-control:-webkit-autofill), .form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: .625rem;\n}\n\n:is(.form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:not(:placeholder-shown)), .form-floating > .form-control-plaintext:focus, .form-floating > .form-control-plaintext:not(:placeholder-shown), .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), :is(.form-floating > .form-control-plaintext:autofill, .form-floating > .form-control:autofill), .form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: .625rem;\n}\n\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control-plaintext ~ label, .form-floating > .form-control:focus ~ label, .form-floating > .form-control:not(:placeholder-shown) ~ label, .form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label:after {\n z-index: -1;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n height: 1.5em;\n position: absolute;\n inset: 1rem .375rem;\n}\n\n.form-floating > .form-control-plaintext ~ label:after, .form-floating > .form-control:focus ~ label:after, .form-floating > .form-control:not(:placeholder-shown) ~ label:after, .form-floating > .form-select ~ label:after {\n z-index: -1;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n height: 1.5em;\n position: absolute;\n inset: 1rem .375rem;\n}\n\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), .65);\n transform: scale(.85)translateY(-.5rem)translateX(.15rem);\n}\n\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n\n.form-floating > .form-control:disabled ~ label, .form-floating > :disabled ~ label {\n color: #6c757d;\n}\n\n.form-floating > .form-control:disabled ~ label:after, .form-floating > :disabled ~ label:after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n display: flex;\n position: relative;\n}\n\n.input-group > .form-control, .input-group > .form-floating, .input-group > .form-select {\n flex: auto;\n width: 1%;\n min-width: 0;\n position: relative;\n}\n\n.input-group > .form-control:focus, .input-group > .form-floating:focus-within, .input-group > .form-select:focus {\n z-index: 5;\n}\n\n.input-group .btn {\n z-index: 2;\n position: relative;\n}\n\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n align-items: center;\n padding: .375rem .75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n display: flex;\n}\n\n.input-group-lg > .btn, .input-group-lg > .form-control, .input-group-lg > .form-select, .input-group-lg > .input-group-text {\n border-radius: var(--bs-border-radius-lg);\n padding: .5rem 1rem;\n font-size: 1.25rem;\n}\n\n.input-group-sm > .btn, .input-group-sm > .form-control, .input-group-sm > .form-select, .input-group-sm > .input-group-text {\n border-radius: var(--bs-border-radius-sm);\n padding: .25rem .5rem;\n font-size: .875rem;\n}\n\n.input-group-lg > .form-select, .input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select, .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select, .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .form-floating:not(:first-child) > .form-control, .input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n color: var(--bs-form-valid-color);\n width: 100%;\n margin-top: .25rem;\n font-size: .875em;\n display: none;\n}\n\n.valid-tooltip {\n z-index: 5;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n margin-top: .1rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n display: none;\n position: absolute;\n top: 100%;\n}\n\n.is-valid ~ .valid-feedback, .is-valid ~ .valid-tooltip, .was-validated :valid ~ .valid-feedback, .was-validated :valid ~ .valid-tooltip {\n display: block;\n}\n\n.form-control.is-valid, .was-validated .form-control:valid {\n border-color: var(--bs-form-valid-border-color);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-position: right calc(.375em + .1875rem) center;\n background-repeat: no-repeat;\n background-size: calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-control.is-valid:focus, .was-validated .form-control:valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n background-position: right calc(.375em + .1875rem) top calc(.375em + .1875rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-select.is-valid, .was-validated .form-select:valid {\n border-color: var(--bs-form-valid-border-color);\n}\n\n.form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"], .was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-position: right .75rem center, right 2.25rem center;\n background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: 4.125rem;\n}\n\n.form-select.is-valid:focus, .was-validated .form-select:valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.form-control-color.is-valid, .was-validated .form-control-color:valid {\n width: calc(1.5em + 3.75rem);\n}\n\n.form-check-input.is-valid, .was-validated .form-check-input:valid {\n border-color: var(--bs-form-valid-border-color);\n}\n\n.form-check-input.is-valid:checked, .was-validated .form-check-input:valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n\n.form-check-input.is-valid:focus, .was-validated .form-check-input:valid:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);\n}\n\n.form-check-input.is-valid ~ .form-check-label, .was-validated .form-check-input:valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: .5em;\n}\n\n.input-group > .form-control:not(:focus).is-valid, .input-group > .form-floating:not(:focus-within).is-valid, .input-group > .form-select:not(:focus).is-valid, .was-validated .input-group > .form-control:not(:focus):valid, .was-validated .input-group > .form-floating:not(:focus-within):valid, .was-validated .input-group > .form-select:not(:focus):valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n color: var(--bs-form-invalid-color);\n width: 100%;\n margin-top: .25rem;\n font-size: .875em;\n display: none;\n}\n\n.invalid-tooltip {\n z-index: 5;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n margin-top: .1rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n display: none;\n position: absolute;\n top: 100%;\n}\n\n.is-invalid ~ .invalid-feedback, .is-invalid ~ .invalid-tooltip, .was-validated :invalid ~ .invalid-feedback, .was-validated :invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.form-control.is-invalid, .was-validated .form-control:invalid {\n border-color: var(--bs-form-invalid-border-color);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-position: right calc(.375em + .1875rem) center;\n background-repeat: no-repeat;\n background-size: calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-control.is-invalid:focus, .was-validated .form-control:invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n background-position: right calc(.375em + .1875rem) top calc(.375em + .1875rem);\n padding-right: calc(1.5em + .75rem);\n}\n\n.form-select.is-invalid, .was-validated .form-select:invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n\n.form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"], .was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-position: right .75rem center, right 2.25rem center;\n background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);\n padding-right: 4.125rem;\n}\n\n.form-select.is-invalid:focus, .was-validated .form-select:invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.form-control-color.is-invalid, .was-validated .form-control-color:invalid {\n width: calc(1.5em + 3.75rem);\n}\n\n.form-check-input.is-invalid, .was-validated .form-check-input:invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n\n.form-check-input.is-invalid:checked, .was-validated .form-check-input:invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n\n.form-check-input.is-invalid:focus, .was-validated .form-check-input:invalid:focus {\n box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);\n}\n\n.form-check-input.is-invalid ~ .form-check-label, .was-validated .form-check-input:invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: .5em;\n}\n\n.input-group > .form-control:not(:focus).is-invalid, .input-group > .form-floating:not(:focus-within).is-invalid, .input-group > .form-select:not(:focus).is-invalid, .was-validated .input-group > .form-control:not(:focus):invalid, .was-validated .input-group > .form-floating:not(:focus-within):invalid, .was-validated .input-group > .form-select:not(:focus):invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: .75rem;\n --bs-btn-padding-y: .375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 #ffffff26, 0 1px 1px #00000013;\n --bs-btn-disabled-opacity: .65;\n --bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n text-decoration: none;\n 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 display: inline-block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n box-shadow: var(--bs-btn-focus-box-shadow);\n outline: 0;\n}\n\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n box-shadow: var(--bs-btn-focus-box-shadow);\n outline: 0;\n}\n\n.btn-check:checked + .btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check) + .btn:active {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n\n.btn-check:checked + .btn:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible, .btn:first-child:active:focus-visible, :not(.btn-check) + .btn:active:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n\n.btn.disabled, .btn:disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px #00000020;\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-group-lg > .btn, .btn-lg {\n --bs-btn-padding-y: .5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-group-sm > .btn, .btn-sm {\n --bs-btn-padding-y: .25rem;\n --bs-btn-padding-x: .5rem;\n --bs-btn-font-size: .875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity .15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\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 transition: height .35s;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width .35s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropdown, .dropdown-center, .dropend, .dropstart, .dropup, .dropup-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-top-color: currentColor;\n border-bottom: 0;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: .5rem;\n --bs-dropdown-spacer: .125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: .5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: .25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: .5rem;\n z-index: var(--bs-dropdown-zindex);\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n background-color: var(--bs-dropdown-bg);\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n background-clip: padding-box;\n margin: 0;\n list-style: none;\n display: none;\n position: absolute;\n}\n\n.dropdown-menu[data-bs-popper] {\n margin-top: var(--bs-dropdown-spacer);\n top: 100%;\n left: 0;\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n\n.dropdown-menu-start[data-bs-popper] {\n left: 0;\n right: auto;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n\n.dropdown-menu-end[data-bs-popper] {\n left: auto;\n right: 0;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n\n .dropdown-menu-sm-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n\n .dropdown-menu-sm-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n\n .dropdown-menu-md-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n\n .dropdown-menu-md-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n\n .dropdown-menu-lg-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n\n .dropdown-menu-lg-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n\n .dropdown-menu-xl-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n\n .dropdown-menu-xl-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n\n .dropdown-menu-xxl-start[data-bs-popper] {\n left: 0;\n right: auto;\n }\n\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n\n .dropdown-menu-xxl-end[data-bs-popper] {\n left: auto;\n right: 0;\n }\n}\n\n.dropup .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n top: auto;\n bottom: 100%;\n}\n\n.dropup .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-top: 0;\n border-bottom-color: currentColor;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropup .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n top: 0;\n left: 100%;\n right: auto;\n}\n\n.dropend .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n border: .3em solid #0000;\n border-left-color: currentColor;\n border-right: 0;\n margin-left: .255em;\n display: inline-block;\n}\n\n.dropend .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropend .dropdown-toggle:after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n top: 0;\n left: auto;\n right: 100%;\n}\n\n.dropstart .dropdown-toggle:after {\n vertical-align: .255em;\n content: \"\";\n margin-left: .255em;\n display: none;\n}\n\n.dropstart .dropdown-toggle:before {\n vertical-align: .255em;\n content: \"\";\n border-top: .3em solid #0000;\n border-bottom: .3em solid #0000;\n border-right: .3em solid;\n margin-right: .255em;\n display: inline-block;\n}\n\n.dropstart .dropdown-toggle:empty:after {\n margin-left: 0;\n}\n\n.dropstart .dropdown-toggle:before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n margin: var(--bs-dropdown-divider-margin-y) 0;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n height: 0;\n overflow: hidden;\n}\n\n.dropdown-item {\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n white-space: nowrap;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n background-color: #0000;\n border: 0;\n width: 100%;\n font-weight: 400;\n text-decoration: none;\n display: block;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n background-color: var(--bs-dropdown-link-active-bg);\n text-decoration: none;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: #0000;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n margin-bottom: 0;\n font-size: .875rem;\n display: block;\n}\n\n.dropdown-item-text {\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n display: block;\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: #ffffff26;\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group, .btn-group-vertical {\n vertical-align: middle;\n display: inline-flex;\n position: relative;\n}\n\n.btn-group-vertical > .btn, .btn-group > .btn {\n flex: auto;\n position: relative;\n}\n\n.btn-group-vertical > .btn-check:checked + .btn, .btn-group-vertical > .btn-check:focus + .btn, .btn-group-vertical > .btn.active, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:hover, .btn-group > .btn-check:checked + .btn, .btn-group > .btn-check:focus + .btn, .btn-group > .btn.active, .btn-group > .btn:active, .btn-group > .btn:focus, .btn-group > .btn:hover {\n z-index: 1;\n}\n\n.btn-toolbar {\n flex-wrap: wrap;\n justify-content: flex-start;\n display: flex;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n\n.btn-group > .btn-group:not(:first-child), .btn-group > :not(.btn-check:first-child) + .btn {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n\n.btn-group > .btn-group:not(:last-child) > .btn, .btn-group > .btn.dropdown-toggle-split:first-child, .btn-group > .btn:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:not(:first-child) > .btn, .btn-group > .btn:nth-child(n+3), .btn-group > :not(.btn-check) + .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-left: .5625rem;\n padding-right: .5625rem;\n}\n\n.dropdown-toggle-split:after, .dropend .dropdown-toggle-split:after, .dropup .dropdown-toggle-split:after {\n margin-left: 0;\n}\n\n.dropstart .dropdown-toggle-split:before {\n margin-right: 0;\n}\n\n.btn-group-sm > .btn + .dropdown-toggle-split, .btn-sm + .dropdown-toggle-split {\n padding-left: .375rem;\n padding-right: .375rem;\n}\n\n.btn-group-lg > .btn + .dropdown-toggle-split, .btn-lg + .dropdown-toggle-split {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n}\n\n.btn-group-vertical > .btn, .btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child), .btn-group-vertical > .btn:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n\n.btn-group-vertical > .btn-group:not(:last-child) > .btn, .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child) > .btn, .btn-group-vertical > .btn ~ .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: .5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n flex-wrap: wrap;\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.nav-link {\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n background: none;\n border: 0;\n text-decoration: none;\n transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;\n display: block;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n\n.nav-link:focus, .nav-link:hover {\n color: var(--bs-nav-link-hover-color);\n}\n\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 .25rem #0d6efd40;\n}\n\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n\n.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: .125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n\n.nav-underline .nav-link {\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n padding-left: 0;\n padding-right: 0;\n}\n\n.nav-underline .nav-link:focus, .nav-underline .nav-link:hover {\n border-bottom-color: currentColor;\n}\n\n.nav-underline .nav-link.active, .nav-underline .show > .nav-link {\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentColor;\n font-weight: 700;\n}\n\n.nav-fill .nav-item, .nav-fill > .nav-link {\n text-align: center;\n flex: auto;\n}\n\n.nav-justified .nav-item, .nav-justified > .nav-link {\n text-align: center;\n flex-grow: 1;\n flex-basis: 0;\n}\n\n.nav-fill .nav-item .nav-link, .nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: .5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: .3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: .5rem;\n --bs-navbar-toggler-padding-y: .25rem;\n --bs-navbar-toggler-padding-x: .75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: .25rem;\n --bs-navbar-toggler-transition: box-shadow .15s ease-in-out;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.navbar > .container, .navbar > .container-fluid, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container-xl, .navbar > .container-xxl {\n flex-wrap: inherit;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n white-space: nowrap;\n text-decoration: none;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: .5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n flex-direction: column;\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n color: var(--bs-navbar-color);\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.navbar-text a, .navbar-text a:focus, .navbar-text a:hover {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-grow: 1;\n flex-basis: 100%;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n color: var(--bs-navbar-color);\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n background-color: #0000;\n line-height: 1;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n\n.navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler:focus {\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n outline: 0;\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-position: center;\n background-repeat: no-repeat;\n background-size: 100%;\n width: 1.5em;\n height: 1.5em;\n display: inline-block;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-sm .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-sm .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-sm .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-md .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-md .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-md .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-lg .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-lg .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-lg .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-xl .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-xl .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-xl .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n\n .navbar-expand-xxl .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n }\n\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n\n .navbar-expand-xxl .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n }\n\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n }\n}\n\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n\n.navbar-expand .navbar-collapse {\n flex-basis: auto;\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-expand .offcanvas {\n z-index: auto;\n flex-grow: 1;\n transition: none;\n position: static;\n visibility: visible !important;\n background-color: #0000 !important;\n border: 0 !important;\n width: auto !important;\n height: auto !important;\n transform: none !important;\n}\n\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n\n.navbar-expand .offcanvas .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n}\n\n.navbar-dark, .navbar[data-bs-theme=\"dark\"] {\n --bs-navbar-color: #ffffff8c;\n --bs-navbar-hover-color: #ffffffbf;\n --bs-navbar-disabled-color: #ffffff40;\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: #ffffff1a;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=\"dark\"] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: .5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: .5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: .75rem;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n background-clip: border-box;\n flex-direction: column;\n min-width: 0;\n display: flex;\n position: relative;\n}\n\n.card > hr {\n margin-left: 0;\n margin-right: 0;\n}\n\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n\n.card > .list-group:first-child {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n border-top-width: 0;\n}\n\n.card > .list-group:last-child {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n border-bottom-width: 0;\n}\n\n.card > .card-header + .list-group, .card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n flex: auto;\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-.5 * var(--bs-card-title-spacer-y));\n color: var(--bs-card-subtitle-color);\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n margin-bottom: 0;\n}\n\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n position: absolute;\n inset: 0;\n}\n\n.card-img, .card-img-bottom, .card-img-top {\n width: 100%;\n}\n\n.card-img, .card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img, .card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n\n@media (min-width: 576px) {\n .card-group {\n flex-flow: wrap;\n display: flex;\n }\n\n .card-group > .card {\n flex: 1 0;\n margin-bottom: 0;\n }\n\n .card-group > .card + .card {\n border-left: 0;\n margin-left: 0;\n }\n\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .card-group > .card:not(:last-child) .card-header, .card-group > .card:not(:last-child) .card-img-top {\n border-top-right-radius: 0;\n }\n\n .card-group > .card:not(:last-child) .card-footer, .card-group > .card:not(:last-child) .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .card-group > .card:not(:first-child) .card-header, .card-group > .card:not(:first-child) .card-img-top {\n border-top-left-radius: 0;\n }\n\n .card-group > .card:not(:first-child) .card-footer, .card-group > .card:not(:first-child) .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform .2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-border-color: #86b7fe;\n --bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n border: 0;\n border-radius: 0;\n align-items: center;\n width: 100%;\n font-size: 1rem;\n display: flex;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n\n.accordion-button:not(.collapsed):after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n\n.accordion-button:after {\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n flex-shrink: 0;\n margin-left: auto;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .accordion-button:after {\n transition: none;\n }\n}\n\n.accordion-button:hover {\n z-index: 2;\n}\n\n.accordion-button:focus {\n z-index: 3;\n border-color: var(--bs-accordion-btn-focus-border-color);\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n outline: 0;\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-item:first-of-type .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-item:last-of-type .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n\n.accordion-item:last-of-type .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush .accordion-collapse {\n border-width: 0;\n}\n\n.accordion-flush .accordion-item {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n}\n\n.accordion-flush .accordion-item:first-child {\n border-top: 0;\n}\n\n.accordion-flush .accordion-item:last-child {\n border-bottom: 0;\n}\n\n.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=\"dark\"] .accordion-button:after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: .5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n flex-wrap: wrap;\n list-style: none;\n display: flex;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n\n.breadcrumb-item + .breadcrumb-item:before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\");\n}\n\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: .75rem;\n --bs-pagination-padding-y: .375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n padding-left: 0;\n list-style: none;\n display: flex;\n}\n\n.page-link {\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n text-decoration: none;\n 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 display: block;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n box-shadow: var(--bs-pagination-focus-box-shadow);\n outline: 0;\n}\n\n.active > .page-link, .page-link.active {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n\n.disabled > .page-link, .page-link.disabled {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: .75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: .5rem;\n --bs-pagination-padding-y: .25rem;\n --bs-pagination-font-size: .875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: .65em;\n --bs-badge-padding-y: .35em;\n --bs-badge-font-size: .75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n line-height: 1;\n display: inline-block;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n position: relative;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n color: var(--bs-alert-link-color);\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n\n.alert-dismissible .btn-close {\n z-index: 2;\n padding: 1.25rem 1rem;\n position: absolute;\n top: 0;\n right: 0;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n\n.progress, .progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: .75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width .6s ease;\n height: var(--bs-progress-height);\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n display: flex;\n overflow: hidden;\n}\n\n.progress-bar {\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n flex-direction: column;\n justify-content: center;\n display: flex;\n overflow: hidden;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, #ffffff26 25%, #0000 25% 50%, #ffffff26 50% 75%, #0000 75%, #0000);\n background-size: var(--bs-progress-height) var(--bs-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.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: .5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n border-radius: var(--bs-list-group-border-radius);\n flex-direction: column;\n margin-bottom: 0;\n padding-left: 0;\n display: flex;\n}\n\n.list-group-numbered {\n counter-reset: section;\n list-style-type: none;\n}\n\n.list-group-numbered > .list-group-item:before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item-action {\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n width: 100%;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n background-color: var(--bs-list-group-action-hover-bg);\n text-decoration: none;\n}\n\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n text-decoration: none;\n display: block;\n position: relative;\n}\n\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n\n.list-group-flush {\n border-radius: 0;\n}\n\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: .5;\n --bs-btn-close-hover-opacity: .75;\n --bs-btn-close-focus-shadow: 0 0 0 .25rem #0d6efd40;\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: .25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center / 1em auto no-repeat;\n opacity: var(--bs-btn-close-opacity);\n border: 0;\n border-radius: .375rem;\n width: 1em;\n height: 1em;\n padding: .25em;\n}\n\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n opacity: var(--bs-btn-close-hover-opacity);\n text-decoration: none;\n}\n\n.btn-close:focus {\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n outline: 0;\n}\n\n.btn-close.disabled, .btn-close:disabled {\n pointer-events: none;\n -webkit-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white, [data-bs-theme=\"dark\"] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: .75rem;\n --bs-toast-padding-y: .5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: .875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n background-clip: padding-box;\n max-width: 100%;\n}\n\n.toast.showing {\n opacity: 0;\n}\n\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n z-index: var(--bs-toast-zindex);\n pointer-events: none;\n width: max-content;\n max-width: 100%;\n position: absolute;\n}\n\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n background-clip: padding-box;\n align-items: center;\n display: flex;\n}\n\n.toast-header .btn-close {\n margin-right: calc(-.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: .5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: .5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n z-index: var(--bs-modal-zindex);\n outline: 0;\n width: 100%;\n height: 100%;\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n overflow: hidden auto;\n}\n\n.modal-dialog {\n margin: var(--bs-modal-margin);\n pointer-events: none;\n width: auto;\n position: relative;\n}\n\n.modal.fade .modal-dialog {\n transition: transform .3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n align-items: center;\n display: flex;\n}\n\n.modal-content {\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n width: 100%;\n display: flex;\n position: relative;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: .5;\n z-index: var(--bs-backdrop-zindex);\n background-color: var(--bs-backdrop-bg);\n width: 100vw;\n height: 100vh;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n flex-shrink: 0;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);\n margin: calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n line-height: var(--bs-modal-title-line-height);\n margin-bottom: 0;\n}\n\n.modal-body {\n padding: var(--bs-modal-padding);\n flex: auto;\n position: relative;\n}\n\n.modal-footer {\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n flex-wrap: wrap;\n flex-shrink: 0;\n justify-content: flex-end;\n align-items: center;\n display: flex;\n}\n\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * .5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-left: auto;\n margin-right: auto;\n }\n\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg, .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n\n.modal-fullscreen .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n}\n\n.modal-fullscreen .modal-footer, .modal-fullscreen .modal-header {\n border-radius: 0;\n}\n\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-sm-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-sm-down .modal-footer, .modal-fullscreen-sm-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-md-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-md-down .modal-footer, .modal-fullscreen-md-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-lg-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-lg-down .modal-footer, .modal-fullscreen-lg-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-xl-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-xl-down .modal-footer, .modal-fullscreen-xl-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n\n .modal-fullscreen-xxl-down .modal-content {\n border: 0;\n border-radius: 0;\n height: 100%;\n }\n\n .modal-fullscreen-xxl-down .modal-footer, .modal-fullscreen-xxl-down .modal-header {\n border-radius: 0;\n }\n\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: .5rem;\n --bs-tooltip-padding-y: .25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: .875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: .9;\n --bs-tooltip-arrow-width: .8rem;\n --bs-tooltip-arrow-height: .4rem;\n z-index: var(--bs-tooltip-zindex);\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n text-align: left;\n text-align: start;\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-style: normal;\n font-weight: 400;\n line-height: 1.5;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n text-decoration: none;\n display: block;\n}\n\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n\n.tooltip .tooltip-arrow {\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n display: block;\n}\n\n.tooltip .tooltip-arrow:before {\n content: \"\";\n border-style: solid;\n border-color: #0000;\n position: absolute;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow, .bs-tooltip-top .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"top\"] .tooltip-arrow:before, .bs-tooltip-top .tooltip-arrow:before {\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;\n border-top-color: var(--bs-tooltip-bg);\n top: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow, .bs-tooltip-end .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"right\"] .tooltip-arrow:before, .bs-tooltip-end .tooltip-arrow:before {\n border-width: calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;\n border-right-color: var(--bs-tooltip-bg);\n right: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow, .bs-tooltip-bottom .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"bottom\"] .tooltip-arrow:before, .bs-tooltip-bottom .tooltip-arrow:before {\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n bottom: -1px;\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow, .bs-tooltip-start .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n\n.bs-tooltip-auto[data-popper-placement^=\"left\"] .tooltip-arrow:before, .bs-tooltip-start .tooltip-arrow:before {\n border-width: calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n left: -1px;\n}\n\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: .875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: .5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: .5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n text-align: left;\n text-align: start;\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-style: normal;\n font-weight: 400;\n line-height: 1.5;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n background-clip: padding-box;\n text-decoration: none;\n display: block;\n}\n\n.popover .popover-arrow {\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n display: block;\n}\n\n.popover .popover-arrow:after, .popover .popover-arrow:before {\n content: \"\";\n border: 0 solid #0000;\n display: block;\n position: absolute;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow, .bs-popover-top > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:before, .bs-popover-top > .popover-arrow:after, .bs-popover-top > .popover-arrow:before {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:before, .bs-popover-top > .popover-arrow:before {\n border-top-color: var(--bs-popover-arrow-border);\n bottom: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"top\"] > .popover-arrow:after, .bs-popover-top > .popover-arrow:after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow, .bs-popover-end > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:before, .bs-popover-end > .popover-arrow:after, .bs-popover-end > .popover-arrow:before {\n border-width: calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:before, .bs-popover-end > .popover-arrow:before {\n border-right-color: var(--bs-popover-arrow-border);\n left: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"right\"] > .popover-arrow:after, .bs-popover-end > .popover-arrow:after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow, .bs-popover-bottom > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:before, .bs-popover-bottom > .popover-arrow:after, .bs-popover-bottom > .popover-arrow:before {\n border-width: 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:before, .bs-popover-bottom > .popover-arrow:before {\n border-bottom-color: var(--bs-popover-arrow-border);\n top: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] > .popover-arrow:after, .bs-popover-bottom > .popover-arrow:after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n\n.bs-popover-auto[data-popper-placement^=\"bottom\"] .popover-header:before, .bs-popover-bottom .popover-header:before {\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n display: block;\n position: absolute;\n top: 0;\n left: 50%;\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow, .bs-popover-start > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:after, .bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:before, .bs-popover-start > .popover-arrow:after, .bs-popover-start > .popover-arrow:before {\n border-width: calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height);\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:before, .bs-popover-start > .popover-arrow:before {\n border-left-color: var(--bs-popover-arrow-border);\n right: 0;\n}\n\n.bs-popover-auto[data-popper-placement^=\"left\"] > .popover-arrow:after, .bs-popover-start > .popover-arrow:after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n margin-bottom: 0;\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n width: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.carousel-inner:after {\n clear: both;\n content: \"\";\n display: block;\n}\n\n.carousel-item {\n float: left;\n backface-visibility: hidden;\n width: 100%;\n margin-right: -100%;\n transition: transform .6s ease-in-out;\n display: none;\n position: relative;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item-next, .carousel-item-prev, .carousel-item.active {\n display: block;\n}\n\n.active.carousel-item-end, .carousel-item-next:not(.carousel-item-start) {\n transform: translateX(100%);\n}\n\n.active.carousel-item-start, .carousel-item-prev:not(.carousel-item-end) {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item-next.carousel-item-start, .carousel-fade .carousel-item-prev.carousel-item-end, .carousel-fade .carousel-item.active {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-end, .carousel-fade .active.carousel-item-start {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s .6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-end, .carousel-fade .active.carousel-item-start {\n transition: none;\n }\n}\n\n.carousel-control-next, .carousel-control-prev {\n z-index: 1;\n color: #fff;\n text-align: center;\n opacity: .5;\n background: none;\n border: 0;\n justify-content: center;\n align-items: center;\n width: 15%;\n padding: 0;\n transition: opacity .15s;\n display: flex;\n position: absolute;\n top: 0;\n bottom: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-next, .carousel-control-prev {\n transition: none;\n }\n}\n\n.carousel-control-next:focus, .carousel-control-next:hover, .carousel-control-prev:focus, .carousel-control-prev:hover {\n color: #fff;\n opacity: .9;\n outline: 0;\n text-decoration: none;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-next-icon, .carousel-control-prev-icon {\n background-position: 50%;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n width: 2rem;\n height: 2rem;\n display: inline-block;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n z-index: 2;\n justify-content: center;\n margin-bottom: 1rem;\n margin-left: 15%;\n margin-right: 15%;\n padding: 0;\n display: flex;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n text-indent: -999px;\n cursor: pointer;\n opacity: .5;\n background-color: #fff;\n background-clip: padding-box;\n border: 10px solid #0000;\n border-left: 0;\n border-right: 0;\n flex: 0 auto;\n width: 30px;\n height: 3px;\n margin-left: 3px;\n margin-right: 3px;\n padding: 0;\n transition: opacity .6s;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n color: #fff;\n text-align: center;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n position: absolute;\n bottom: 1.25rem;\n left: 15%;\n right: 15%;\n}\n\n.carousel-dark .carousel-control-next-icon, .carousel-dark .carousel-control-prev-icon {\n filter: invert() grayscale(100);\n}\n\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-control-next-icon, [data-bs-theme=\"dark\"] .carousel .carousel-control-prev-icon, [data-bs-theme=\"dark\"].carousel .carousel-control-next-icon, [data-bs-theme=\"dark\"].carousel .carousel-control-prev-icon {\n filter: invert() grayscale(100);\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=\"dark\"].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n\n[data-bs-theme=\"dark\"] .carousel .carousel-caption, [data-bs-theme=\"dark\"].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-border, .spinner-grow {\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n border-radius: 50%;\n display: inline-block;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -.125em;\n --bs-spinner-border-width: .25em;\n --bs-spinner-animation-speed: .75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: #0000;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: .2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -.125em;\n --bs-spinner-animation-speed: .75s;\n --bs-spinner-animation-name: spinner-grow;\n opacity: 0;\n background-color: currentColor;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border, .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n\n.offcanvas, .offcanvas-lg, .offcanvas-md, .offcanvas-sm, .offcanvas-xl, .offcanvas-xxl {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform .3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-sm.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-sm.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-sm.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-sm.show:not(.hiding), .offcanvas-sm.showing {\n transform: none;\n }\n\n .offcanvas-sm.hiding, .offcanvas-sm.show, .offcanvas-sm.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n\n .offcanvas-sm .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-md.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-md.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-md.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-md.show:not(.hiding), .offcanvas-md.showing {\n transform: none;\n }\n\n .offcanvas-md.hiding, .offcanvas-md.show, .offcanvas-md.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n\n .offcanvas-md .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-lg.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-lg.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-lg.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-lg.show:not(.hiding), .offcanvas-lg.showing {\n transform: none;\n }\n\n .offcanvas-lg.hiding, .offcanvas-lg.show, .offcanvas-lg.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n\n .offcanvas-lg .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-xl.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-xl.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-xl.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-xl.show:not(.hiding), .offcanvas-xl.showing {\n transform: none;\n }\n\n .offcanvas-xl.hiding, .offcanvas-xl.show, .offcanvas-xl.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n\n .offcanvas-xl .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n }\n}\n\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n .offcanvas-xxl.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n .offcanvas-xxl.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n }\n\n .offcanvas-xxl.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n }\n\n .offcanvas-xxl.show:not(.hiding), .offcanvas-xxl.showing {\n transform: none;\n }\n\n .offcanvas-xxl.hiding, .offcanvas-xxl.show, .offcanvas-xxl.showing {\n visibility: visible;\n }\n}\n\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: #0000 !important;\n }\n\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n\n .offcanvas-xxl .offcanvas-body {\n flex-grow: 0;\n padding: 0;\n display: flex;\n overflow-y: visible;\n background-color: #0000 !important;\n }\n}\n\n.offcanvas {\n z-index: var(--bs-offcanvas-zindex);\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n transition: var(--bs-offcanvas-transition);\n background-clip: padding-box;\n outline: 0;\n flex-direction: column;\n max-width: 100%;\n display: flex;\n position: fixed;\n bottom: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n\n.offcanvas.offcanvas-start {\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n left: 0;\n transform: translateX(-100%);\n}\n\n.offcanvas.offcanvas-end {\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n top: 0;\n right: 0;\n transform: translateX(100%);\n}\n\n.offcanvas.offcanvas-top {\n height: var(--bs-offcanvas-height);\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n top: 0;\n left: 0;\n right: 0;\n transform: translateY(-100%);\n}\n\n.offcanvas.offcanvas-bottom {\n height: var(--bs-offcanvas-height);\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n max-height: 100%;\n left: 0;\n right: 0;\n transform: translateY(100%);\n}\n\n.offcanvas.show:not(.hiding), .offcanvas.showing {\n transform: none;\n}\n\n.offcanvas.hiding, .offcanvas.show, .offcanvas.showing {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n z-index: 1040;\n background-color: #000;\n width: 100vw;\n height: 100vh;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n\n.offcanvas-backdrop.show {\n opacity: .5;\n}\n\n.offcanvas-header {\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);\n margin-top: calc(-.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-.5 * var(--bs-offcanvas-padding-y));\n}\n\n.offcanvas-title {\n line-height: var(--bs-offcanvas-title-line-height);\n margin-bottom: 0;\n}\n\n.offcanvas-body {\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n flex-grow: 1;\n overflow-y: auto;\n}\n\n.placeholder {\n vertical-align: middle;\n cursor: wait;\n opacity: .5;\n background-color: currentColor;\n min-height: 1em;\n display: inline-block;\n}\n\n.placeholder.btn:before {\n content: \"\";\n display: inline-block;\n}\n\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.placeholder-glow .placeholder {\n animation: 2s ease-in-out infinite placeholder-glow;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: .2;\n }\n}\n\n.placeholder-wave {\n animation: 2s linear infinite placeholder-wave;\n -webkit-mask-image: linear-gradient(130deg, #000 55%, #000c 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, #000c 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0;\n mask-position: -200% 0;\n }\n}\n\n.clearfix:after {\n clear: both;\n content: \"\";\n display: block;\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-primary:focus, .link-primary:hover {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary:focus, .link-secondary:hover {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success:focus, .link-success:hover {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info:focus, .link-info:hover {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning:focus, .link-warning:hover {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger:focus, .link-danger:hover {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light:focus, .link-light:hover {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark:focus, .link-dark:hover {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis:focus, .link-body-emphasis:hover {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, .75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, .75)) !important;\n}\n\n.focus-ring:focus {\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n outline: 0;\n}\n\n.icon-link {\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, .5));\n text-underline-offset: .25em;\n backface-visibility: hidden;\n align-items: center;\n gap: .375rem;\n display: inline-flex;\n}\n\n.icon-link > .bi {\n fill: currentColor;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n transition: transform .2s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:focus-visible > .bi, .icon-link-hover:hover > .bi {\n transform: var(--bs-icon-link-transform, translate3d(.25em, 0, 0));\n}\n\n.ratio {\n width: 100%;\n position: relative;\n}\n\n.ratio:before {\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n display: block;\n}\n\n.ratio > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571%;\n}\n\n.fixed-top {\n z-index: 1030;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.fixed-bottom {\n z-index: 1030;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.sticky-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n}\n\n.sticky-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-sm-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 768px) {\n .sticky-md-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-md-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 992px) {\n .sticky-lg-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-lg-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .sticky-xl-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-xl-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n z-index: 1020;\n position: sticky;\n top: 0;\n }\n\n .sticky-xxl-bottom {\n z-index: 1020;\n position: sticky;\n bottom: 0;\n }\n}\n\n.hstack {\n flex-direction: row;\n align-self: stretch;\n align-items: center;\n display: flex;\n}\n\n.vstack {\n flex-direction: column;\n flex: auto;\n align-self: stretch;\n display: flex;\n}\n\n.visually-hidden, .visually-hidden-focusable:not(:focus):not(:focus-within) {\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n width: 1px !important;\n height: 1px !important;\n margin: -1px !important;\n padding: 0 !important;\n overflow: hidden !important;\n}\n\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption), .visually-hidden:not(caption) {\n position: absolute !important;\n}\n\n.stretched-link:after {\n z-index: 1;\n content: \"\";\n position: absolute;\n inset: 0;\n}\n\n.text-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.vr {\n width: var(--bs-border-width);\n opacity: .25;\n background-color: currentColor;\n align-self: stretch;\n min-height: 1em;\n display: inline-block;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: .25 !important;\n}\n\n.opacity-50 {\n opacity: .5 !important;\n}\n\n.opacity-75 {\n opacity: .75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: .1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: .25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: .5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: .75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: .25rem !important;\n}\n\n.m-2 {\n margin: .5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n}\n\n.mx-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n}\n\n.my-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: .25rem !important;\n}\n\n.mt-2 {\n margin-top: .5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: .25rem !important;\n}\n\n.me-2 {\n margin-right: .5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: .25rem !important;\n}\n\n.mb-2 {\n margin-bottom: .5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: .25rem !important;\n}\n\n.ms-2 {\n margin-left: .5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: .25rem !important;\n}\n\n.p-2 {\n padding: .5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n}\n\n.px-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n}\n\n.py-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: .25rem !important;\n}\n\n.pt-2 {\n padding-top: .5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: .25rem !important;\n}\n\n.pe-2 {\n padding-right: .5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: .25rem !important;\n}\n\n.pb-2 {\n padding-bottom: .5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: .25rem !important;\n}\n\n.ps-2 {\n padding-left: .5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: .25rem !important;\n}\n\n.gap-2 {\n gap: .5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: .25rem !important;\n}\n\n.row-gap-2 {\n row-gap: .5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + .9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + .6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + .3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: #00000080 !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: #ffffff80 !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: .25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: .5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: .75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10, .link-opacity-10-hover:hover {\n --bs-link-opacity: .1;\n}\n\n.link-opacity-25, .link-opacity-25-hover:hover {\n --bs-link-opacity: .25;\n}\n\n.link-opacity-50, .link-opacity-50-hover:hover {\n --bs-link-opacity: .5;\n}\n\n.link-opacity-75, .link-opacity-75-hover:hover {\n --bs-link-opacity: .75;\n}\n\n.link-opacity-100, .link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1, .link-offset-1-hover:hover {\n text-underline-offset: .125em !important;\n}\n\n.link-offset-2, .link-offset-2-hover:hover {\n text-underline-offset: .25em !important;\n}\n\n.link-offset-3, .link-offset-3-hover:hover {\n text-underline-offset: .375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0, .link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10, .link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: .1;\n}\n\n.link-underline-opacity-25, .link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: .25;\n}\n\n.link-underline-opacity-50, .link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: .5;\n}\n\n.link-underline-opacity-75, .link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: .75;\n}\n\n.link-underline-opacity-100, .link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: #0000 !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: .1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: .25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: .5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: .75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-top-left-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n\n .float-sm-end {\n float: right !important;\n }\n\n .float-sm-none {\n float: none !important;\n }\n\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: .25rem !important;\n }\n\n .m-sm-2 {\n margin: .5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-sm-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-sm-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-sm-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: .25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: .5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-right: 0 !important;\n }\n\n .me-sm-1 {\n margin-right: .25rem !important;\n }\n\n .me-sm-2 {\n margin-right: .5rem !important;\n }\n\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n\n .me-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n\n .ms-sm-1 {\n margin-left: .25rem !important;\n }\n\n .ms-sm-2 {\n margin-left: .5rem !important;\n }\n\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-left: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: .25rem !important;\n }\n\n .p-sm-2 {\n padding: .5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-sm-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-sm-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-sm-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: .25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: .5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n\n .pe-sm-1 {\n padding-right: .25rem !important;\n }\n\n .pe-sm-2 {\n padding-right: .5rem !important;\n }\n\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n\n .ps-sm-1 {\n padding-left: .25rem !important;\n }\n\n .ps-sm-2 {\n padding-left: .5rem !important;\n }\n\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n\n .gap-sm-0 {\n gap: 0 !important;\n }\n\n .gap-sm-1 {\n gap: .25rem !important;\n }\n\n .gap-sm-2 {\n gap: .5rem !important;\n }\n\n .gap-sm-3 {\n gap: 1rem !important;\n }\n\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n\n .gap-sm-5 {\n gap: 3rem !important;\n }\n\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-sm-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-sm-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-sm-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-sm-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-sm-start {\n text-align: left !important;\n }\n\n .text-sm-end {\n text-align: right !important;\n }\n\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n\n .float-md-end {\n float: right !important;\n }\n\n .float-md-none {\n float: none !important;\n }\n\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: .25rem !important;\n }\n\n .m-md-2 {\n margin: .5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-md-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-md-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-md-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: .25rem !important;\n }\n\n .mt-md-2 {\n margin-top: .5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-right: 0 !important;\n }\n\n .me-md-1 {\n margin-right: .25rem !important;\n }\n\n .me-md-2 {\n margin-right: .5rem !important;\n }\n\n .me-md-3 {\n margin-right: 1rem !important;\n }\n\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-right: 3rem !important;\n }\n\n .me-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-left: 0 !important;\n }\n\n .ms-md-1 {\n margin-left: .25rem !important;\n }\n\n .ms-md-2 {\n margin-left: .5rem !important;\n }\n\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n\n .ms-md-auto {\n margin-left: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: .25rem !important;\n }\n\n .p-md-2 {\n padding: .5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-md-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-md-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-md-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: .25rem !important;\n }\n\n .pt-md-2 {\n padding-top: .5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-right: 0 !important;\n }\n\n .pe-md-1 {\n padding-right: .25rem !important;\n }\n\n .pe-md-2 {\n padding-right: .5rem !important;\n }\n\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-left: 0 !important;\n }\n\n .ps-md-1 {\n padding-left: .25rem !important;\n }\n\n .ps-md-2 {\n padding-left: .5rem !important;\n }\n\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n\n .gap-md-0 {\n gap: 0 !important;\n }\n\n .gap-md-1 {\n gap: .25rem !important;\n }\n\n .gap-md-2 {\n gap: .5rem !important;\n }\n\n .gap-md-3 {\n gap: 1rem !important;\n }\n\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n\n .gap-md-5 {\n gap: 3rem !important;\n }\n\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-md-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-md-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-md-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-md-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-md-start {\n text-align: left !important;\n }\n\n .text-md-end {\n text-align: right !important;\n }\n\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n\n .float-lg-end {\n float: right !important;\n }\n\n .float-lg-none {\n float: none !important;\n }\n\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: .25rem !important;\n }\n\n .m-lg-2 {\n margin: .5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-lg-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-lg-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-lg-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: .25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: .5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-right: 0 !important;\n }\n\n .me-lg-1 {\n margin-right: .25rem !important;\n }\n\n .me-lg-2 {\n margin-right: .5rem !important;\n }\n\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n\n .me-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n\n .ms-lg-1 {\n margin-left: .25rem !important;\n }\n\n .ms-lg-2 {\n margin-left: .5rem !important;\n }\n\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-left: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: .25rem !important;\n }\n\n .p-lg-2 {\n padding: .5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-lg-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-lg-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-lg-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: .25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: .5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n\n .pe-lg-1 {\n padding-right: .25rem !important;\n }\n\n .pe-lg-2 {\n padding-right: .5rem !important;\n }\n\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n\n .ps-lg-1 {\n padding-left: .25rem !important;\n }\n\n .ps-lg-2 {\n padding-left: .5rem !important;\n }\n\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n\n .gap-lg-0 {\n gap: 0 !important;\n }\n\n .gap-lg-1 {\n gap: .25rem !important;\n }\n\n .gap-lg-2 {\n gap: .5rem !important;\n }\n\n .gap-lg-3 {\n gap: 1rem !important;\n }\n\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n\n .gap-lg-5 {\n gap: 3rem !important;\n }\n\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-lg-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-lg-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-lg-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-lg-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-lg-start {\n text-align: left !important;\n }\n\n .text-lg-end {\n text-align: right !important;\n }\n\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n\n .float-xl-end {\n float: right !important;\n }\n\n .float-xl-none {\n float: none !important;\n }\n\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: .25rem !important;\n }\n\n .m-xl-2 {\n margin: .5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xl-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-xl-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-xl-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: .25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: .5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-right: 0 !important;\n }\n\n .me-xl-1 {\n margin-right: .25rem !important;\n }\n\n .me-xl-2 {\n margin-right: .5rem !important;\n }\n\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xl-1 {\n margin-left: .25rem !important;\n }\n\n .ms-xl-2 {\n margin-left: .5rem !important;\n }\n\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-left: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: .25rem !important;\n }\n\n .p-xl-2 {\n padding: .5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xl-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-xl-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-xl-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: .25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: .5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xl-1 {\n padding-right: .25rem !important;\n }\n\n .pe-xl-2 {\n padding-right: .5rem !important;\n }\n\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xl-1 {\n padding-left: .25rem !important;\n }\n\n .ps-xl-2 {\n padding-left: .5rem !important;\n }\n\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n\n .gap-xl-0 {\n gap: 0 !important;\n }\n\n .gap-xl-1 {\n gap: .25rem !important;\n }\n\n .gap-xl-2 {\n gap: .5rem !important;\n }\n\n .gap-xl-3 {\n gap: 1rem !important;\n }\n\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n\n .gap-xl-5 {\n gap: 3rem !important;\n }\n\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-xl-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-xl-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-xl-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-xl-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-xl-start {\n text-align: left !important;\n }\n\n .text-xl-end {\n text-align: right !important;\n }\n\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n\n .float-xxl-end {\n float: right !important;\n }\n\n .float-xxl-none {\n float: none !important;\n }\n\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: .25rem !important;\n }\n\n .m-xxl-2 {\n margin: .5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-left: .25rem !important;\n margin-right: .25rem !important;\n }\n\n .mx-xxl-2 {\n margin-left: .5rem !important;\n margin-right: .5rem !important;\n }\n\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: .25rem !important;\n margin-bottom: .25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: .5rem !important;\n margin-bottom: .5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: .25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: .5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n\n .me-xxl-1 {\n margin-right: .25rem !important;\n }\n\n .me-xxl-2 {\n margin-right: .5rem !important;\n }\n\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-right: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: .25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: .5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-left: .25rem !important;\n }\n\n .ms-xxl-2 {\n margin-left: .5rem !important;\n }\n\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: .25rem !important;\n }\n\n .p-xxl-2 {\n padding: .5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xxl-1 {\n padding-left: .25rem !important;\n padding-right: .25rem !important;\n }\n\n .px-xxl-2 {\n padding-left: .5rem !important;\n padding-right: .5rem !important;\n }\n\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: .25rem !important;\n padding-bottom: .25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: .5rem !important;\n padding-bottom: .5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: .25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: .5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-right: .25rem !important;\n }\n\n .pe-xxl-2 {\n padding-right: .5rem !important;\n }\n\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: .25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: .5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-left: .25rem !important;\n }\n\n .ps-xxl-2 {\n padding-left: .5rem !important;\n }\n\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n\n .gap-xxl-0 {\n gap: 0 !important;\n }\n\n .gap-xxl-1 {\n gap: .25rem !important;\n }\n\n .gap-xxl-2 {\n gap: .5rem !important;\n }\n\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n\n .row-gap-xxl-1 {\n row-gap: .25rem !important;\n }\n\n .row-gap-xxl-2 {\n row-gap: .5rem !important;\n }\n\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n\n .column-gap-xxl-1 {\n -moz-column-gap: .25rem !important;\n column-gap: .25rem !important;\n }\n\n .column-gap-xxl-2 {\n -moz-column-gap: .5rem !important;\n column-gap: .5rem !important;\n }\n\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n\n .text-xxl-start {\n text-align: left !important;\n }\n\n .text-xxl-end {\n text-align: right !important;\n }\n\n .text-xxl-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n\n .fs-2 {\n font-size: 2rem !important;\n }\n\n .fs-3 {\n font-size: 1.75rem !important;\n }\n\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n\n:root {\n --body-color: #212529;\n --move-btn-width: 60px;\n --move-btn-height: 34px;\n --focus-ring: 0 0 0 .2rem #268fff80;\n accent-color: var(--bs-primary);\n}\n\n:not(:defined) {\n display: none !important;\n}\n\nhtml, body {\n font-size: 14px;\n}\n\nbody {\n background-color: #eae9e9;\n overflow-x: hidden;\n}\n\n[hidden] {\n display: none !important;\n}\n\na:focus-visible, details summary:focus-visible {\n box-shadow: var(--focus-ring);\n border-radius: .25rem;\n outline: 0;\n transition: box-shadow .15s ease-in-out;\n}\n\n.container {\n max-width: 1400px;\n}\n\n.site-header {\n text-align: center;\n flex-direction: column;\n align-items: center;\n row-gap: .5rem;\n margin: 3rem .5rem;\n display: flex;\n}\n\n.page-title {\n margin-bottom: 0;\n font-weight: 300;\n}\n\n.canvas {\n max-width: 100%;\n display: block;\n}\n\n.inputs-container input[type=\"color\"], .settings-button {\n cursor: pointer;\n border: 0;\n width: 30px;\n height: 30px;\n margin: 0 2px;\n padding: 0;\n line-height: 1;\n}\n\n.inputs-container .meme-text {\n min-width: 0;\n height: calc(1.5em + .75rem + 2px);\n min-height: calc(1.5em + .75rem + 2px);\n margin: .5rem;\n}\n\n.settings-button {\n background-image: url(\"gear.b3b5d1a5.svg\");\n background-position: center;\n background-repeat: no-repeat;\n background-size: 60%;\n}\n\n.inputs-container {\n flex: 1;\n}\n\n.inputs-container:empty {\n display: none;\n}\n\n.instructions {\n text-align: center;\n text-wrap: balance;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n row-gap: 1rem;\n height: 100%;\n min-height: 200px;\n padding: 1rem;\n display: flex;\n}\n\n.errorsContainer {\n z-index: 1051;\n pointer-events: none;\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.errorsContainer .alert {\n pointer-events: all;\n}\n\ndetails[open] summary {\n margin-bottom: .5rem;\n}\n\nbutton[data-button=\"delete-text-box\"] {\n background-image: url(\"trash.d9edab78.svg\");\n background-position: center;\n background-repeat: no-repeat;\n width: 25px;\n min-width: 25px;\n height: 25px;\n margin-left: .5rem;\n padding: 0;\n}\n\n.gallery {\n scroll-behavior: smooth;\n gap: .5rem;\n min-height: 112px;\n margin: 0;\n padding: .25rem 0;\n display: flex;\n overflow-x: auto;\n}\n\n.gallery > button {\n cursor: pointer;\n padding: 0;\n}\n\n.gallery > button > img {\n object-fit: cover;\n border-radius: .2rem;\n min-width: 88px;\n height: 88px;\n display: block;\n}\n\n.gallery__no-results {\n text-align: center;\n flex: 1;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.move-text-actions {\n width: calc(var(--move-btn-width) * 3);\n height: calc(var(--move-btn-height) * 2);\n margin: 0 auto;\n position: relative;\n}\n\n.move-text-actions [data-move] {\n width: var(--move-btn-width);\n height: var(--move-btn-height);\n background-position: center;\n background-repeat: no-repeat;\n position: absolute;\n}\n\n.move-text-actions [data-move=\"offsetY\"][data-sign=\"-\"] {\n top: -1px;\n left: var(--move-btn-width);\n background-image: url(\"chevron-up.f532d8b6.svg\");\n}\n\n.move-text-actions [data-move=\"offsetY\"][data-sign=\"+\"] {\n top: calc(var(--move-btn-height) + 1px);\n left: var(--move-btn-width);\n background-image: url(\"chevron-down.ad14d981.svg\");\n}\n\n.move-text-actions [data-move=\"offsetX\"][data-sign=\"-\"] {\n top: calc(var(--move-btn-height) / 2);\n background-image: url(\"chevron-left.20a2f252.svg\");\n left: -2px;\n}\n\n.move-text-actions [data-move=\"offsetX\"][data-sign=\"+\"] {\n top: calc(var(--move-btn-height) / 2);\n left: calc(var(--move-btn-width) * 2 + 2px);\n background-image: url(\"chevron-right.1be074ac.svg\");\n}\n\ncapture-photo:not(:defined) {\n display: none;\n}\n\ncapture-photo {\n overflow: hidden;\n}\n\ncapture-photo::part(video) {\n background-color: #000;\n width: 100%;\n}\n\ncapture-photo::part(actions-container) {\n justify-content: center;\n align-items: center;\n gap: 2rem;\n padding: 1rem 0;\n display: flex;\n}\n\ncapture-photo::part(capture-button), capture-photo::part(facing-mode-button) {\n text-indent: -9999px;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n background-position: center;\n background-repeat: no-repeat;\n border-radius: 50%;\n overflow: hidden;\n box-shadow: 0 0 1rem #0000004d;\n}\n\ncapture-photo::part(capture-button) {\n background-color: #c2c3c7;\n background-image: url(\"aperture.4bf28ce8.svg\");\n background-size: 90%;\n border: 5px solid #fff;\n width: 70px;\n height: 70px;\n}\n\ncapture-photo::part(facing-mode-button) {\n background-color: #fff;\n background-image: url(\"camera-reverse.284e8ac9.svg\");\n background-size: 60%;\n border: 0;\n width: 50px;\n height: 50px;\n margin-right: calc(-50px - 2rem);\n}\n\ncapture-photo[loading]::part(video) {\n background-image: url(\"spinner.4452ed29.svg\");\n background-position: center;\n background-repeat: no-repeat;\n background-size: 60px;\n}\n\ncapture-photo[loading]::part(capture-button), capture-photo[loading]::part(facing-mode-button) {\n opacity: .6;\n pointer-events: none;\n}\n\nmodal-element {\n --me-width: fit-content;\n --me-border-radius: .25rem;\n --me-border-width: 0;\n --me-box-shadow: 0 0 1rem 0 #0000004d;\n}\n\n#videoModal {\n --me-width: 600px;\n}\n\nmodal-element::part(base):focus-visible {\n outline: 0;\n}\n\nmodal-element [slot=\"header\"] {\n color: var(--body-color);\n margin: 0;\n}\n\nmodal-element::part(close) {\n color: var(--body-color);\n border-radius: .25rem;\n transition: box-shadow .15s ease-in-out;\n}\n\nmodal-element::part(close):focus-visible {\n box-shadow: var(--focus-ring);\n outline: 0;\n}\n\nmodal-element::part(body) {\n padding-block: 0;\n}\n\nmodal-element [slot=\"footer\"] {\n text-align: center;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n gap: .25rem;\n display: flex;\n}\n\nfiles-dropzone {\n --dropzone-border-color: var(--bs-secondary);\n --dropzone-border-color-hover: var(--bs-primary);\n --dropzone-border-color-dragover: var(--bs-primary);\n --dropzone-background-color-hover: var(--bs-light);\n --dropzone-background-color-dragover: var(--bs-light);\n --dropzone-focus-box-shadow: var(--focus-ring);\n height: 100%;\n}\n\nfiles-dropzone::part(dropzone) {\n height: 100%;\n padding: .5rem;\n}\n\n.text-underline {\n text-decoration: underline;\n}\n\n/*# sourceMappingURL=index.bcbdd9b6.css.map */\n","@charset \"UTF-8\";/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",\"Noto Sans\",\"Liberation Sans\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;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-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:\"— \"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' 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:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size=\"1\"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:\"\";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:\"\";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size=\"1\"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size=\"1\"]{--bs-form-select-bg-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size=\"1\"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size=\"1\"]{--bs-form-select-bg-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);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);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--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-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.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;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\"}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{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)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-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)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.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}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.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-card-cap-bg);border-top:var(--bs-card-border-width) solid 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-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-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,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, \"/\")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@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{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{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-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;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);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);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:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, \".\") \". \";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-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-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width: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-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;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}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.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)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;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);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.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-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:\"\";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.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-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.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)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.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:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.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}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:\"\"}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:\"\"}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:\"\"}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:\"\"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}\n","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: #664d03;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: calc(1.625rem + 4.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-size: calc(1.575rem + 3.9vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-size: calc(1.525rem + 3.3vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-size: calc(1.475rem + 2.7vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-size: calc(1.425rem + 2.1vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-size: calc(1.375rem + 1.5vw);\n font-weight: 300;\n line-height: 1.2;\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: #cfe2ff;\n --bs-table-border-color: #a6b5cc;\n --bs-table-striped-bg: #c5d7f2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bacbe6;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfd1ec;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: #e2e3e5;\n --bs-table-border-color: #b5b6b7;\n --bs-table-striped-bg: #d7d8da;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #cbccce;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #d1d2d4;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: #d1e7dd;\n --bs-table-border-color: #a7b9b1;\n --bs-table-striped-bg: #c7dbd2;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #bcd0c7;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #c1d6cc;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: #cff4fc;\n --bs-table-border-color: #a6c3ca;\n --bs-table-striped-bg: #c5e8ef;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #badce3;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #bfe2e9;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: #fff3cd;\n --bs-table-border-color: #ccc2a4;\n --bs-table-striped-bg: #f2e7c3;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #e6dbb9;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #ece1be;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: #f8d7da;\n --bs-table-border-color: #c6acae;\n --bs-table-striped-bg: #eccccf;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfc2c4;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5c7ca;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: #c6c7c8;\n --bs-table-striped-bg: #ecedee;\n --bs-table-striped-color: #000;\n --bs-table-active-bg: #dfe0e1;\n --bs-table-active-color: #000;\n --bs-table-hover-bg: #e5e6e7;\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: #4d5154;\n --bs-table-striped-bg: #2c3034;\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: #373b3e;\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: #323539;\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::-moz-placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n -webkit-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 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.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n -webkit-margin-end: 0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\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 .form-control::-webkit-file-upload-button {\n -webkit-transition: none;\n transition: none;\n }\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n background-color: var(--bs-secondary-bg);\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-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-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::-webkit-file-upload-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n -webkit-margin-end: 0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::-webkit-file-upload-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n -webkit-margin-end: 1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' 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: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n -webkit-print-color-adjust: exact;\n color-adjust: exact;\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: #86b7fe;\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n -webkit-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: 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 .form-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n -moz-appearance: none;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: 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 .form-range::-moz-range-thumb {\n -moz-transition: none;\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\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 padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {\n color: transparent;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\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: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\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.form-floating > .form-select ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:focus ~ label::after,\n.form-floating > .form-control:not(:placeholder-shown) ~ label::after,\n.form-floating > .form-control-plaintext ~ label::after,\n.form-floating > .form-select ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n color: rgba(var(--bs-body-color-rgb), 0.65);\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n.form-floating > :disabled ~ label::after,\n.form-floating > .form-control:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\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-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(var(--bs-border-width) * -1);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\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 .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0b5ed7;\n --bs-btn-hover-border-color: #0a58ca;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #5c636a;\n --bs-btn-hover-border-color: #565e64;\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #565e64;\n --bs-btn-active-border-color: #51585e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #157347;\n --bs-btn-hover-border-color: #146c43;\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #146c43;\n --bs-btn-active-border-color: #13653f;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #31d2f2;\n --bs-btn-hover-border-color: #25cff2;\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #3dd5f3;\n --bs-btn-active-border-color: #25cff2;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffca2c;\n --bs-btn-hover-border-color: #ffc720;\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffcd39;\n --bs-btn-active-border-color: #ffc720;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #bb2d3b;\n --bs-btn-hover-border-color: #b02a37;\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #b02a37;\n --bs-btn-active-border-color: #a52834;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #d3d4d5;\n --bs-btn-hover-border-color: #c6c7c8;\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #c6c7c8;\n --bs-btn-active-border-color: #babbbc;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #424649;\n --bs-btn-hover-border-color: #373b3e;\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #4d5154;\n --bs-btn-active-border-color: #373b3e;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\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.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(var(--bs-border-width) * -1);\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\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(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-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-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-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, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-border-color: #86b7fe;\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n border-color: var(--bs-accordion-btn-focus-border-color);\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush .accordion-collapse {\n border-width: 0;\n}\n.accordion-flush .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-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(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(var(--bs-border-width) * -1);\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: 1rem;\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\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(--bs-progress-height) var(--bs-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.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\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\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-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-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-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(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n filter: var(--bs-btn-close-white-filter);\n}\n\n[data-bs-theme=dark] .btn-close {\n filter: var(--bs-btn-close-white-filter);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: -webkit-max-content;\n width: -moz-max-content;\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: ;\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\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(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\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(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-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\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n/* rtl:options: {\n \"autoRename\": true,\n \"stringMap\":[ {\n \"name\" : \"prev-next\",\n \"search\" : \"prev\",\n \"replace\" : \"next\"\n } ]\n} */\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath 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-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: #fff;\n text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n.carousel-dark .carousel-caption {\n color: #000;\n}\n\n[data-bs-theme=dark] .carousel .carousel-control-prev-icon,\n[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,\n[data-bs-theme=dark].carousel .carousel-control-next-icon {\n filter: invert(1) grayscale(100);\n}\n[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {\n background-color: #000;\n}\n[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {\n color: #000;\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\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 --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n -webkit-mask-size: 200% 100%;\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n -webkit-mask-position: -200% 0%;\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n -webkit-backface-visibility: hidden;\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\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: -webkit-sticky;\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n -webkit-user-select: all !important;\n -moz-user-select: all !important;\n user-select: all !important;\n}\n\n.user-select-auto {\n -webkit-user-select: auto !important;\n -moz-user-select: auto !important;\n user-select: auto !important;\n}\n\n.user-select-none {\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n .float-xxl-end {\n float: right !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n -o-object-fit: contain !important;\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n -o-object-fit: cover !important;\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n -o-object-fit: fill !important;\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n -o-object-fit: scale-down !important;\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n -o-object-fit: none !important;\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n -moz-column-gap: 0 !important;\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n -moz-column-gap: 0.25rem !important;\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n -moz-column-gap: 0.5rem !important;\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n -moz-column-gap: 1rem !important;\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n -moz-column-gap: 1.5rem !important;\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n -moz-column-gap: 3rem !important;\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: left !important;\n }\n .text-xxl-end {\n text-align: right !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\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\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\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 @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\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\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` 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(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\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\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-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\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include 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\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}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\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\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\nbutton {\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\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`

Text options
Licensed under The MIT License (MIT)
Capture image
Download Meme
meme preview
Generate meme Download
\ No newline at end of file +Meme Generator
add image icon

Drag & Drop an image here or click to select an image from your device.

All uploaded images are processed locally in your browser. No data is sent to any server.

Image selection options
Text options
Licensed under The MIT License (MIT)
Capture image
Download Meme
meme preview
Generate meme Download
\ No newline at end of file diff --git a/docs/service-worker.js b/docs/service-worker.js index badb979..66144fe 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let e,a={};const d=(d,f)=>(d=new URL(d+".js",f).href,a[d]||new Promise((a=>{if("document"in self){const e=document.createElement("script");e.src=d,e.onload=a,document.head.appendChild(e)}else e=d,importScripts(d),a()})).then((()=>{let e=a[d];if(!e)throw new Error(`Module ${d} didn’t register its module`);return e})));self.define=(f,i)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(a[r])return;let b={};const c=e=>d(e,r),n={module:{uri:r},exports:b,require:c};a[r]=Promise.all(f.map((e=>n[e]||c(e)))).then((e=>(i(...e),b)))}}define(["./workbox-1c3383c2"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"180.ad1ffa6f.png",revision:"e500d9d7377de6d701630c6345a20b99"},{url:"192.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"384.3d08a4a6.png",revision:"3eb04d3a80b60e082d7f79e1614070fe"},{url:"512.00f88ae0.png",revision:"511ad055b1865aa9bda7886cb0b9e336"},{url:"add-image.bd815785.svg",revision:"8c00e51567cbd039981fffb87c61dab1"},{url:"always-has-been.08a66422.jpg",revision:"d1b6401abd9cb8d382b7246bdb8ce0b5"},{url:"anakin-padme.03c6b194.jpg",revision:"baa00e8faccb9c63073f1db59274bd0d"},{url:"Anton-Regular.e58ab3fe.ttf",revision:"055c4df4e2f8c7a4d4675cdd8fa68da0"},{url:"aperture.4bf28ce8.svg",revision:"1a6a5d3b06ba8aaa3e96658810752663"},{url:"bad-luck-brian.8b018588.jpg",revision:"2bb70408a0ab18038a376d80da91d336"},{url:"batman-slapping-robin.aa8b8054.jpg",revision:"6695faabd1eb772936f31ff0af36111d"},{url:"bell-curve.1167fe19.jpg",revision:"e26dac38583f6f98ea8ef98e4dab71e1"},{url:"ben-affleck-smoking.17cc6114.jpg",revision:"512c246cb818579340a6dc8dddea4f87"},{url:"camera-reverse.284e8ac9.svg",revision:"86e592b72bb2472bbacd0c823b3a3c78"},{url:"camera.ed7aa43f.svg",revision:"46f0c02466282ec5c4bf26141624316e"},{url:"captain-picard-facepalm.7690614a.jpg",revision:"926eecb6292d72fe2f99fd3113444c0b"},{url:"car-drift.9255750c.jpg",revision:"55b3735095d73c764704bccdda6f2bc1"},{url:"change-my-mind.b49b92c2.jpg",revision:"35e498b8b3c3b62e485ce4ffbe4cdfd1"},{url:"chevron-down.ad14d981.svg",revision:"5635cc35f04030576a62d2d649824495"},{url:"chevron-left.20a2f252.svg",revision:"a8334bfa7ef65b1095bfd54557d69beb"},{url:"chevron-right.1be074ac.svg",revision:"3d72992183afc0c2f0b6bf010dadc2a1"},{url:"chevron-up.f532d8b6.svg",revision:"e1bd8bbacf48b185c4b3deb18b9e0f2d"},{url:"CourierPrime-Bold.3d6bf689.ttf",revision:"4acfa45d29d240044e0075a8e58f0862"},{url:"CourierPrime-Regular.3a25a501.ttf",revision:"fba4686ed1d1b4ef05ab14db78805dbe"},{url:"disaster-girl.536b1af4.jpg",revision:"07542c2e7ea315f6a7b7311d2a88d074"},{url:"distracted-boyfriend.22708891.jpg",revision:"4ee61cd7c20689e2c8b7fa2dbffbdbc4"},{url:"drake-hotline-bling.99013af7.jpg",revision:"edce37df305e1b9c78d0a41ade363e29"},{url:"drowning-kid-in-the-pool.37435682.jpg",revision:"99e976a664709f7fe0b7141e2661a42b"},{url:"favicon-192.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"finding-neverland.25f9c4f0.jpg",revision:"4557c9d30b0e3114953f9cc8e981c622"},{url:"gear.b3b5d1a5.svg",revision:"5e0b2045d7dc4768b1ceb199d83ab6f0"},{url:"gibson-jesus.1224d195.jpg",revision:"b26e0d89414371dfbf7a1e1bbada7e15"},{url:"girls-gossiping.da75b154.jpg",revision:"97f0d159d65349dfdd821f6294d8b177"},{url:"greta-thunberg-how-dare-you.ddceea0b.jpg",revision:"dbe7e341b66c0e71da9db2f49eddbd9c"},{url:"grinning-girl.9a1a3b6a.jpg",revision:"133c4124813f1dfeff00a9e0a735b5c3"},{url:"group-therapy.c82c3502.jpg",revision:"a79a27311d3969bf370b8846bea1789c"},{url:"hack-the-planet.29b5550a.jpg",revision:"207de9c3f83de707d99ea7255f743fc1"},{url:"hide-the-pain-harold.dc41d0f5.jpg",revision:"af3a4d69c625740558a9adc66967797c"},{url:"i-bet-hes-thinking-about-other-women.c80f1ce0.jpg",revision:"df6904f1480a0210525311a594cd51b7"},{url:"i-dont-always.cd8fe191.jpg",revision:"6c0fa2f7428f252d177a52b34c93aacb"},{url:"i-see-dead-people.89330beb.jpg",revision:"16ff33b79a8ce266b890d2f2e53fdbc1"},{url:"index.58beac5f.css",revision:"52e1b13ef61734d69c0d21948d256cf2"},{url:"index.58beac5f.css.map",revision:"ce7d2449c6c3e04310b55b1fbddc23e0"},{url:"index.5ae9312f.js",revision:"9778077b286ef900b90dd1d725a3c81a"},{url:"index.5ae9312f.js.map",revision:"81f7a45230e57609804d5a4b2fe31507"},{url:"index.89efe45b.js",revision:"6814a61841cd719f59765d1ee48ea09a"},{url:"index.89efe45b.js.map",revision:"c88920bec0571a6511e504850de79c03"},{url:"index.b9185ed0.js",revision:"86f21f8652ba3df7de435d0fd5fe5254"},{url:"index.b9185ed0.js.map",revision:"6db69b9e5f00aaef5e3ec9e4406ac74b"},{url:"index.d44e81ec.js",revision:"b90a75d7c5128c18c30bf621d43c8122"},{url:"index.d44e81ec.js.map",revision:"4f7febc735b0a98935455f8329214edd"},{url:"index.html",revision:"dd510e14fff0711c85a758470388eeec"},{url:"jurassic-park-no-one-cares.4b16d8e3.jpg",revision:"5971adaaec085b176061d7d98577a089"},{url:"knight-with-arrow-in-helmet.70d7b8ea.jpg",revision:"2d51aa7ceccfacf6e1fae33cf5279abb"},{url:"laughing-leo.ff4cf9b5.png",revision:"ffd00816a11fb66f16d05a5a06506e3a"},{url:"leonardo-dicaprio-cheers.1f5072fc.jpg",revision:"0c9762d1044fde55cfccc6d3f8abfedb"},{url:"logo.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"manifest.webmanifest",revision:"1e34d4d2fb0da2246a35db6beeace137"},{url:"matrix-morpheus.2a17fef0.jpg",revision:"4306d531845e95029b5219f178ce546c"},{url:"milk-girls.c67a099a.jpg",revision:"d2a3c2d80f01fb790a6557978920ec36"},{url:"monk-temptation.9fa9b52f.jpg",revision:"f993e88e46226fb560559b5c8392ba6e"},{url:"monkey_puppet.a1128702.jpg",revision:"e3dd1d281e372a02ca2955eb62ce7dbb"},{url:"nervous.ecca1da9.jpg",revision:"f9500924e2154f15ff3249573963e867"},{url:"obama-medal.da4528cd.jpg",revision:"0b7d29347fd9bdf850b46293c8870fd8"},{url:"office-congrats.f658c72e.jpg",revision:"5e5823dd68191151a2313a3ec158e9cf"},{url:"one-does-not-simply.bd73a129.jpg",revision:"94eaa0e921189e88fe35ba1954988564"},{url:"OpenSans-Bold.8fceb72b.ttf",revision:"8ff9b5735ccb338267f0034d83fe8214"},{url:"OpenSans-Regular.edf9e01b.ttf",revision:"22ab03a6b890f2f142a137a38bf1d4ae"},{url:"Oswald-Bold.0f6a7ca6.ttf",revision:"452bfeb5bf78e71cc3cd6e720ac24bd4"},{url:"Oswald-Regular.89ec7d89.ttf",revision:"a7ccbd3cd9a9ff21ec41086dcc23ebe6"},{url:"photo.0328c485.svg",revision:"6b3fccb8598a897d641cc1dc75ed3592"},{url:"plague-hackers.01c70709.jpg",revision:"70712ddea9f2dd86ec34c1ffedffb3d0"},{url:"Roboto-Bold.fdb9b54a.ttf",revision:"b8e42971dec8d49207a8c8e2b919a6ac"},{url:"Roboto-Regular.ca197847.ttf",revision:"8a36205bd9b83e03af0591a004bc97f4"},{url:"RobotoCondensed-Bold.e1f96d4b.ttf",revision:"e38804ae070b58fbf4fdd88fd6853929"},{url:"RobotoCondensed-Regular.d585f5c7.ttf",revision:"0134dd8fe6fe708de73909a71d842780"},{url:"sad-pablo-escobar.48ee550d.jpg",revision:"1a49f6decc10da3ee849a1f94132c794"},{url:"save.46fbf12f.svg",revision:"3e1d90c414fadfd6727cc77f150e79e5"},{url:"say-that-again-i-dare-you.0c8b53b9.jpg",revision:"948be03975e613eaa08ac7f284491b40"},{url:"screenshot.3fbaa9cf.png",revision:"9df64fac2f8267d4f7db45082d60b09c"},{url:"share.0fccb277.svg",revision:"19d01499fa1fe8707366653db087ebac"},{url:"shirley-temple-laugh.8125357d.png",revision:"c2e13fffe87a3a1ff91d5a955a280fe1"},{url:"sparta-leonidas.0b603b26.jpg",revision:"e9ba2efb8ff797d0a9adf13135927c82"},{url:"spinner.4452ed29.svg",revision:"609c6274c68c19f6badaf5488b6aeef2"},{url:"star-wars-yoda.c7579c93.jpg",revision:"951e4ee52db27001190248f449651c4b"},{url:"success-kid.5d6212f8.jpg",revision:"b58ffaf338ffc8f4f06ef45478365c13"},{url:"sweating-bullets.f3c2d84f.jpg",revision:"3c9c50281665c688cacdd0d1da8f8f7d"},{url:"tell-me-the-truth-I-am-ready-to-hear-it.34eb1bcc.png",revision:"ecd53156061e4fdabf386c5f802035cf"},{url:"think-about-it.f4fc185d.jpg",revision:"f70b62834ba3ec34a2c9f2a80a5068b9"},{url:"this-is-fine.db15aaeb.jpg",revision:"dac2b7e7d3b1f18c72e48373cb4275e1"},{url:"toilet_guy.812f73a4.jpg",revision:"3f488def302d190dca09eb12c878d228"},{url:"trash.d9edab78.svg",revision:"db8971c7dab936bbe799ede7c1b9ac4b"},{url:"two-buttons.a42b7a04.jpg",revision:"611756fac300eb0f010491cbd95dda28"},{url:"waiting-skeleton.26f2ec8f.jpg",revision:"0eef934549392da6aa193fb86f9a8ab2"},{url:"water-tank-leaking-fix.772173b9.png",revision:"3ebfc2b2c42be514ec35fd3b9948686a"},{url:"whisper-and-goosebumps.2bc61488.jpg",revision:"962ccff862d6c9d416a330c8be901be9"},{url:"x-x-everywhere.4732733a.jpg",revision:"ca16fab0846148556e776aec3ff00739"},{url:"you-guys-are-getting-paid.ba5678cc.png",revision:"feb2da8a1fae966adae92bd1f8318153"}],{})})); +if(!self.define){let e,a={};const d=(d,i)=>(d=new URL(d+".js",i).href,a[d]||new Promise((a=>{if("document"in self){const e=document.createElement("script");e.src=d,e.onload=a,document.head.appendChild(e)}else e=d,importScripts(d),a()})).then((()=>{let e=a[d];if(!e)throw new Error(`Module ${d} didn’t register its module`);return e})));self.define=(i,f)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(a[r])return;let b={};const c=e=>d(e,r),n={module:{uri:r},exports:b,require:c};a[r]=Promise.all(i.map((e=>n[e]||c(e)))).then((e=>(f(...e),b)))}}define(["./workbox-1c3383c2"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"180.ad1ffa6f.png",revision:"e500d9d7377de6d701630c6345a20b99"},{url:"192.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"384.3d08a4a6.png",revision:"3eb04d3a80b60e082d7f79e1614070fe"},{url:"512.00f88ae0.png",revision:"511ad055b1865aa9bda7886cb0b9e336"},{url:"add-image.bd815785.svg",revision:"8c00e51567cbd039981fffb87c61dab1"},{url:"always-has-been.08a66422.jpg",revision:"d1b6401abd9cb8d382b7246bdb8ce0b5"},{url:"anakin-padme.03c6b194.jpg",revision:"baa00e8faccb9c63073f1db59274bd0d"},{url:"Anton-Regular.e58ab3fe.ttf",revision:"055c4df4e2f8c7a4d4675cdd8fa68da0"},{url:"aperture.4bf28ce8.svg",revision:"1a6a5d3b06ba8aaa3e96658810752663"},{url:"bad-luck-brian.8b018588.jpg",revision:"2bb70408a0ab18038a376d80da91d336"},{url:"batman-slapping-robin.aa8b8054.jpg",revision:"6695faabd1eb772936f31ff0af36111d"},{url:"bell-curve.1167fe19.jpg",revision:"e26dac38583f6f98ea8ef98e4dab71e1"},{url:"ben-affleck-smoking.17cc6114.jpg",revision:"512c246cb818579340a6dc8dddea4f87"},{url:"camera-reverse.284e8ac9.svg",revision:"86e592b72bb2472bbacd0c823b3a3c78"},{url:"camera.ed7aa43f.svg",revision:"46f0c02466282ec5c4bf26141624316e"},{url:"captain-picard-facepalm.7690614a.jpg",revision:"926eecb6292d72fe2f99fd3113444c0b"},{url:"car-drift.9255750c.jpg",revision:"55b3735095d73c764704bccdda6f2bc1"},{url:"change-my-mind.b49b92c2.jpg",revision:"35e498b8b3c3b62e485ce4ffbe4cdfd1"},{url:"chevron-down.ad14d981.svg",revision:"5635cc35f04030576a62d2d649824495"},{url:"chevron-left.20a2f252.svg",revision:"a8334bfa7ef65b1095bfd54557d69beb"},{url:"chevron-right.1be074ac.svg",revision:"3d72992183afc0c2f0b6bf010dadc2a1"},{url:"chevron-up.f532d8b6.svg",revision:"e1bd8bbacf48b185c4b3deb18b9e0f2d"},{url:"CourierPrime-Bold.3d6bf689.ttf",revision:"4acfa45d29d240044e0075a8e58f0862"},{url:"CourierPrime-Regular.3a25a501.ttf",revision:"fba4686ed1d1b4ef05ab14db78805dbe"},{url:"disaster-girl.536b1af4.jpg",revision:"07542c2e7ea315f6a7b7311d2a88d074"},{url:"distracted-boyfriend.22708891.jpg",revision:"4ee61cd7c20689e2c8b7fa2dbffbdbc4"},{url:"drake-hotline-bling.99013af7.jpg",revision:"edce37df305e1b9c78d0a41ade363e29"},{url:"drowning-kid-in-the-pool.37435682.jpg",revision:"99e976a664709f7fe0b7141e2661a42b"},{url:"favicon-192.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"finding-neverland.25f9c4f0.jpg",revision:"4557c9d30b0e3114953f9cc8e981c622"},{url:"gear.b3b5d1a5.svg",revision:"5e0b2045d7dc4768b1ceb199d83ab6f0"},{url:"gibson-jesus.1224d195.jpg",revision:"b26e0d89414371dfbf7a1e1bbada7e15"},{url:"girls-gossiping.da75b154.jpg",revision:"97f0d159d65349dfdd821f6294d8b177"},{url:"greta-thunberg-how-dare-you.ddceea0b.jpg",revision:"dbe7e341b66c0e71da9db2f49eddbd9c"},{url:"grinning-girl.9a1a3b6a.jpg",revision:"133c4124813f1dfeff00a9e0a735b5c3"},{url:"group-therapy.c82c3502.jpg",revision:"a79a27311d3969bf370b8846bea1789c"},{url:"hack-the-planet.29b5550a.jpg",revision:"207de9c3f83de707d99ea7255f743fc1"},{url:"hide-the-pain-harold.dc41d0f5.jpg",revision:"af3a4d69c625740558a9adc66967797c"},{url:"i-bet-hes-thinking-about-other-women.c80f1ce0.jpg",revision:"df6904f1480a0210525311a594cd51b7"},{url:"i-dont-always.cd8fe191.jpg",revision:"6c0fa2f7428f252d177a52b34c93aacb"},{url:"i-see-dead-people.89330beb.jpg",revision:"16ff33b79a8ce266b890d2f2e53fdbc1"},{url:"index.89efe45b.js",revision:"6814a61841cd719f59765d1ee48ea09a"},{url:"index.89efe45b.js.map",revision:"c88920bec0571a6511e504850de79c03"},{url:"index.9d0cb1f2.js",revision:"690f3104d08477c17061147de2e6f38d"},{url:"index.9d0cb1f2.js.map",revision:"87c364d26dda81b051e8bcee2d842d4a"},{url:"index.a3077d6d.js",revision:"2aa5cac621cb7a4477fb651c39f0aaba"},{url:"index.a3077d6d.js.map",revision:"f014fbef69b46546095920eeeb4e35db"},{url:"index.bcbdd9b6.css",revision:"d566a80647f90d92aa8eb6a31045a8f5"},{url:"index.bcbdd9b6.css.map",revision:"134a4d3805412a4c455e6c3199815aa1"},{url:"index.d44e81ec.js",revision:"b90a75d7c5128c18c30bf621d43c8122"},{url:"index.d44e81ec.js.map",revision:"4f7febc735b0a98935455f8329214edd"},{url:"index.html",revision:"dc35b02bea5ab781bf016d5bd350ffb0"},{url:"jurassic-park-no-one-cares.4b16d8e3.jpg",revision:"5971adaaec085b176061d7d98577a089"},{url:"knight-with-arrow-in-helmet.70d7b8ea.jpg",revision:"2d51aa7ceccfacf6e1fae33cf5279abb"},{url:"laughing-leo.ff4cf9b5.png",revision:"ffd00816a11fb66f16d05a5a06506e3a"},{url:"leonardo-dicaprio-cheers.1f5072fc.jpg",revision:"0c9762d1044fde55cfccc6d3f8abfedb"},{url:"logo.02439c4c.png",revision:"799182a75ab5b10e8b2088a717f0eff2"},{url:"manifest.webmanifest",revision:"1e34d4d2fb0da2246a35db6beeace137"},{url:"matrix-morpheus.2a17fef0.jpg",revision:"4306d531845e95029b5219f178ce546c"},{url:"milk-girls.c67a099a.jpg",revision:"d2a3c2d80f01fb790a6557978920ec36"},{url:"monk-temptation.9fa9b52f.jpg",revision:"f993e88e46226fb560559b5c8392ba6e"},{url:"monkey_puppet.a1128702.jpg",revision:"e3dd1d281e372a02ca2955eb62ce7dbb"},{url:"nervous.ecca1da9.jpg",revision:"f9500924e2154f15ff3249573963e867"},{url:"obama-medal.da4528cd.jpg",revision:"0b7d29347fd9bdf850b46293c8870fd8"},{url:"office-congrats.f658c72e.jpg",revision:"5e5823dd68191151a2313a3ec158e9cf"},{url:"one-does-not-simply.bd73a129.jpg",revision:"94eaa0e921189e88fe35ba1954988564"},{url:"OpenSans-Bold.8fceb72b.ttf",revision:"8ff9b5735ccb338267f0034d83fe8214"},{url:"OpenSans-Regular.edf9e01b.ttf",revision:"22ab03a6b890f2f142a137a38bf1d4ae"},{url:"Oswald-Bold.0f6a7ca6.ttf",revision:"452bfeb5bf78e71cc3cd6e720ac24bd4"},{url:"Oswald-Regular.89ec7d89.ttf",revision:"a7ccbd3cd9a9ff21ec41086dcc23ebe6"},{url:"photo.0328c485.svg",revision:"6b3fccb8598a897d641cc1dc75ed3592"},{url:"plague-hackers.01c70709.jpg",revision:"70712ddea9f2dd86ec34c1ffedffb3d0"},{url:"Roboto-Bold.fdb9b54a.ttf",revision:"b8e42971dec8d49207a8c8e2b919a6ac"},{url:"Roboto-Regular.ca197847.ttf",revision:"8a36205bd9b83e03af0591a004bc97f4"},{url:"RobotoCondensed-Bold.e1f96d4b.ttf",revision:"e38804ae070b58fbf4fdd88fd6853929"},{url:"RobotoCondensed-Regular.d585f5c7.ttf",revision:"0134dd8fe6fe708de73909a71d842780"},{url:"sad-pablo-escobar.48ee550d.jpg",revision:"1a49f6decc10da3ee849a1f94132c794"},{url:"save.46fbf12f.svg",revision:"3e1d90c414fadfd6727cc77f150e79e5"},{url:"say-that-again-i-dare-you.0c8b53b9.jpg",revision:"948be03975e613eaa08ac7f284491b40"},{url:"screenshot.3fbaa9cf.png",revision:"9df64fac2f8267d4f7db45082d60b09c"},{url:"share.0fccb277.svg",revision:"19d01499fa1fe8707366653db087ebac"},{url:"shirley-temple-laugh.8125357d.png",revision:"c2e13fffe87a3a1ff91d5a955a280fe1"},{url:"sparta-leonidas.0b603b26.jpg",revision:"e9ba2efb8ff797d0a9adf13135927c82"},{url:"spinner.4452ed29.svg",revision:"609c6274c68c19f6badaf5488b6aeef2"},{url:"star-wars-yoda.c7579c93.jpg",revision:"951e4ee52db27001190248f449651c4b"},{url:"success-kid.5d6212f8.jpg",revision:"b58ffaf338ffc8f4f06ef45478365c13"},{url:"sweating-bullets.f3c2d84f.jpg",revision:"3c9c50281665c688cacdd0d1da8f8f7d"},{url:"tell-me-the-truth-I-am-ready-to-hear-it.34eb1bcc.png",revision:"ecd53156061e4fdabf386c5f802035cf"},{url:"think-about-it.f4fc185d.jpg",revision:"f70b62834ba3ec34a2c9f2a80a5068b9"},{url:"this-is-fine.db15aaeb.jpg",revision:"dac2b7e7d3b1f18c72e48373cb4275e1"},{url:"toilet_guy.812f73a4.jpg",revision:"3f488def302d190dca09eb12c878d228"},{url:"trash.d9edab78.svg",revision:"db8971c7dab936bbe799ede7c1b9ac4b"},{url:"two-buttons.a42b7a04.jpg",revision:"611756fac300eb0f010491cbd95dda28"},{url:"waiting-skeleton.26f2ec8f.jpg",revision:"0eef934549392da6aa193fb86f9a8ab2"},{url:"water-tank-leaking-fix.772173b9.png",revision:"3ebfc2b2c42be514ec35fd3b9948686a"},{url:"whisper-and-goosebumps.2bc61488.jpg",revision:"962ccff862d6c9d416a330c8be901be9"},{url:"x-x-everywhere.4732733a.jpg",revision:"ca16fab0846148556e776aec3ff00739"},{url:"you-guys-are-getting-paid.ba5678cc.png",revision:"feb2da8a1fae966adae92bd1f8318153"}],{})})); //# sourceMappingURL=service-worker.js.map diff --git a/docs/service-worker.js.map b/docs/service-worker.js.map index a0e135c..73f5390 100644 --- a/docs/service-worker.js.map +++ b/docs/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../private/var/folders/vy/why3xmz53r57rfypb6dxq94c0000gp/T/3076b85ebce7e87869638daea24e3204/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/Users/georgeraptis/Projects/@georapbox/meme-generator/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/Users/georgeraptis/Projects/@georapbox/meme-generator/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"180.ad1ffa6f.png\",\n \"revision\": \"e500d9d7377de6d701630c6345a20b99\"\n },\n {\n \"url\": \"192.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"384.3d08a4a6.png\",\n \"revision\": \"3eb04d3a80b60e082d7f79e1614070fe\"\n },\n {\n \"url\": \"512.00f88ae0.png\",\n \"revision\": \"511ad055b1865aa9bda7886cb0b9e336\"\n },\n {\n \"url\": \"add-image.bd815785.svg\",\n \"revision\": \"8c00e51567cbd039981fffb87c61dab1\"\n },\n {\n \"url\": \"always-has-been.08a66422.jpg\",\n \"revision\": \"d1b6401abd9cb8d382b7246bdb8ce0b5\"\n },\n {\n \"url\": \"anakin-padme.03c6b194.jpg\",\n \"revision\": \"baa00e8faccb9c63073f1db59274bd0d\"\n },\n {\n \"url\": \"Anton-Regular.e58ab3fe.ttf\",\n \"revision\": \"055c4df4e2f8c7a4d4675cdd8fa68da0\"\n },\n {\n \"url\": \"aperture.4bf28ce8.svg\",\n \"revision\": \"1a6a5d3b06ba8aaa3e96658810752663\"\n },\n {\n \"url\": \"bad-luck-brian.8b018588.jpg\",\n \"revision\": \"2bb70408a0ab18038a376d80da91d336\"\n },\n {\n \"url\": \"batman-slapping-robin.aa8b8054.jpg\",\n \"revision\": \"6695faabd1eb772936f31ff0af36111d\"\n },\n {\n \"url\": \"bell-curve.1167fe19.jpg\",\n \"revision\": \"e26dac38583f6f98ea8ef98e4dab71e1\"\n },\n {\n \"url\": \"ben-affleck-smoking.17cc6114.jpg\",\n \"revision\": \"512c246cb818579340a6dc8dddea4f87\"\n },\n {\n \"url\": \"camera-reverse.284e8ac9.svg\",\n \"revision\": \"86e592b72bb2472bbacd0c823b3a3c78\"\n },\n {\n \"url\": \"camera.ed7aa43f.svg\",\n \"revision\": \"46f0c02466282ec5c4bf26141624316e\"\n },\n {\n \"url\": \"captain-picard-facepalm.7690614a.jpg\",\n \"revision\": \"926eecb6292d72fe2f99fd3113444c0b\"\n },\n {\n \"url\": \"car-drift.9255750c.jpg\",\n \"revision\": \"55b3735095d73c764704bccdda6f2bc1\"\n },\n {\n \"url\": \"change-my-mind.b49b92c2.jpg\",\n \"revision\": \"35e498b8b3c3b62e485ce4ffbe4cdfd1\"\n },\n {\n \"url\": \"chevron-down.ad14d981.svg\",\n \"revision\": \"5635cc35f04030576a62d2d649824495\"\n },\n {\n \"url\": \"chevron-left.20a2f252.svg\",\n \"revision\": \"a8334bfa7ef65b1095bfd54557d69beb\"\n },\n {\n \"url\": \"chevron-right.1be074ac.svg\",\n \"revision\": \"3d72992183afc0c2f0b6bf010dadc2a1\"\n },\n {\n \"url\": \"chevron-up.f532d8b6.svg\",\n \"revision\": \"e1bd8bbacf48b185c4b3deb18b9e0f2d\"\n },\n {\n \"url\": \"CourierPrime-Bold.3d6bf689.ttf\",\n \"revision\": \"4acfa45d29d240044e0075a8e58f0862\"\n },\n {\n \"url\": \"CourierPrime-Regular.3a25a501.ttf\",\n \"revision\": \"fba4686ed1d1b4ef05ab14db78805dbe\"\n },\n {\n \"url\": \"disaster-girl.536b1af4.jpg\",\n \"revision\": \"07542c2e7ea315f6a7b7311d2a88d074\"\n },\n {\n \"url\": \"distracted-boyfriend.22708891.jpg\",\n \"revision\": \"4ee61cd7c20689e2c8b7fa2dbffbdbc4\"\n },\n {\n \"url\": \"drake-hotline-bling.99013af7.jpg\",\n \"revision\": \"edce37df305e1b9c78d0a41ade363e29\"\n },\n {\n \"url\": \"drowning-kid-in-the-pool.37435682.jpg\",\n \"revision\": \"99e976a664709f7fe0b7141e2661a42b\"\n },\n {\n \"url\": \"favicon-192.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"finding-neverland.25f9c4f0.jpg\",\n \"revision\": \"4557c9d30b0e3114953f9cc8e981c622\"\n },\n {\n \"url\": \"gear.b3b5d1a5.svg\",\n \"revision\": \"5e0b2045d7dc4768b1ceb199d83ab6f0\"\n },\n {\n \"url\": \"gibson-jesus.1224d195.jpg\",\n \"revision\": \"b26e0d89414371dfbf7a1e1bbada7e15\"\n },\n {\n \"url\": \"girls-gossiping.da75b154.jpg\",\n \"revision\": \"97f0d159d65349dfdd821f6294d8b177\"\n },\n {\n \"url\": \"greta-thunberg-how-dare-you.ddceea0b.jpg\",\n \"revision\": \"dbe7e341b66c0e71da9db2f49eddbd9c\"\n },\n {\n \"url\": \"grinning-girl.9a1a3b6a.jpg\",\n \"revision\": \"133c4124813f1dfeff00a9e0a735b5c3\"\n },\n {\n \"url\": \"group-therapy.c82c3502.jpg\",\n \"revision\": \"a79a27311d3969bf370b8846bea1789c\"\n },\n {\n \"url\": \"hack-the-planet.29b5550a.jpg\",\n \"revision\": \"207de9c3f83de707d99ea7255f743fc1\"\n },\n {\n \"url\": \"hide-the-pain-harold.dc41d0f5.jpg\",\n \"revision\": \"af3a4d69c625740558a9adc66967797c\"\n },\n {\n \"url\": \"i-bet-hes-thinking-about-other-women.c80f1ce0.jpg\",\n \"revision\": \"df6904f1480a0210525311a594cd51b7\"\n },\n {\n \"url\": \"i-dont-always.cd8fe191.jpg\",\n \"revision\": \"6c0fa2f7428f252d177a52b34c93aacb\"\n },\n {\n \"url\": \"i-see-dead-people.89330beb.jpg\",\n \"revision\": \"16ff33b79a8ce266b890d2f2e53fdbc1\"\n },\n {\n \"url\": \"index.58beac5f.css\",\n \"revision\": \"52e1b13ef61734d69c0d21948d256cf2\"\n },\n {\n \"url\": \"index.58beac5f.css.map\",\n \"revision\": \"ce7d2449c6c3e04310b55b1fbddc23e0\"\n },\n {\n \"url\": \"index.5ae9312f.js\",\n \"revision\": \"9778077b286ef900b90dd1d725a3c81a\"\n },\n {\n \"url\": \"index.5ae9312f.js.map\",\n \"revision\": \"81f7a45230e57609804d5a4b2fe31507\"\n },\n {\n \"url\": \"index.89efe45b.js\",\n \"revision\": \"6814a61841cd719f59765d1ee48ea09a\"\n },\n {\n \"url\": \"index.89efe45b.js.map\",\n \"revision\": \"c88920bec0571a6511e504850de79c03\"\n },\n {\n \"url\": \"index.b9185ed0.js\",\n \"revision\": \"86f21f8652ba3df7de435d0fd5fe5254\"\n },\n {\n \"url\": \"index.b9185ed0.js.map\",\n \"revision\": \"6db69b9e5f00aaef5e3ec9e4406ac74b\"\n },\n {\n \"url\": \"index.d44e81ec.js\",\n \"revision\": \"b90a75d7c5128c18c30bf621d43c8122\"\n },\n {\n \"url\": \"index.d44e81ec.js.map\",\n \"revision\": \"4f7febc735b0a98935455f8329214edd\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"dd510e14fff0711c85a758470388eeec\"\n },\n {\n \"url\": \"jurassic-park-no-one-cares.4b16d8e3.jpg\",\n \"revision\": \"5971adaaec085b176061d7d98577a089\"\n },\n {\n \"url\": \"knight-with-arrow-in-helmet.70d7b8ea.jpg\",\n \"revision\": \"2d51aa7ceccfacf6e1fae33cf5279abb\"\n },\n {\n \"url\": \"laughing-leo.ff4cf9b5.png\",\n \"revision\": \"ffd00816a11fb66f16d05a5a06506e3a\"\n },\n {\n \"url\": \"leonardo-dicaprio-cheers.1f5072fc.jpg\",\n \"revision\": \"0c9762d1044fde55cfccc6d3f8abfedb\"\n },\n {\n \"url\": \"logo.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"1e34d4d2fb0da2246a35db6beeace137\"\n },\n {\n \"url\": \"matrix-morpheus.2a17fef0.jpg\",\n \"revision\": \"4306d531845e95029b5219f178ce546c\"\n },\n {\n \"url\": \"milk-girls.c67a099a.jpg\",\n \"revision\": \"d2a3c2d80f01fb790a6557978920ec36\"\n },\n {\n \"url\": \"monk-temptation.9fa9b52f.jpg\",\n \"revision\": \"f993e88e46226fb560559b5c8392ba6e\"\n },\n {\n \"url\": \"monkey_puppet.a1128702.jpg\",\n \"revision\": \"e3dd1d281e372a02ca2955eb62ce7dbb\"\n },\n {\n \"url\": \"nervous.ecca1da9.jpg\",\n \"revision\": \"f9500924e2154f15ff3249573963e867\"\n },\n {\n \"url\": \"obama-medal.da4528cd.jpg\",\n \"revision\": \"0b7d29347fd9bdf850b46293c8870fd8\"\n },\n {\n \"url\": \"office-congrats.f658c72e.jpg\",\n \"revision\": \"5e5823dd68191151a2313a3ec158e9cf\"\n },\n {\n \"url\": \"one-does-not-simply.bd73a129.jpg\",\n \"revision\": \"94eaa0e921189e88fe35ba1954988564\"\n },\n {\n \"url\": \"OpenSans-Bold.8fceb72b.ttf\",\n \"revision\": \"8ff9b5735ccb338267f0034d83fe8214\"\n },\n {\n \"url\": \"OpenSans-Regular.edf9e01b.ttf\",\n \"revision\": \"22ab03a6b890f2f142a137a38bf1d4ae\"\n },\n {\n \"url\": \"Oswald-Bold.0f6a7ca6.ttf\",\n \"revision\": \"452bfeb5bf78e71cc3cd6e720ac24bd4\"\n },\n {\n \"url\": \"Oswald-Regular.89ec7d89.ttf\",\n \"revision\": \"a7ccbd3cd9a9ff21ec41086dcc23ebe6\"\n },\n {\n \"url\": \"photo.0328c485.svg\",\n \"revision\": \"6b3fccb8598a897d641cc1dc75ed3592\"\n },\n {\n \"url\": \"plague-hackers.01c70709.jpg\",\n \"revision\": \"70712ddea9f2dd86ec34c1ffedffb3d0\"\n },\n {\n \"url\": \"Roboto-Bold.fdb9b54a.ttf\",\n \"revision\": \"b8e42971dec8d49207a8c8e2b919a6ac\"\n },\n {\n \"url\": \"Roboto-Regular.ca197847.ttf\",\n \"revision\": \"8a36205bd9b83e03af0591a004bc97f4\"\n },\n {\n \"url\": \"RobotoCondensed-Bold.e1f96d4b.ttf\",\n \"revision\": \"e38804ae070b58fbf4fdd88fd6853929\"\n },\n {\n \"url\": \"RobotoCondensed-Regular.d585f5c7.ttf\",\n \"revision\": \"0134dd8fe6fe708de73909a71d842780\"\n },\n {\n \"url\": \"sad-pablo-escobar.48ee550d.jpg\",\n \"revision\": \"1a49f6decc10da3ee849a1f94132c794\"\n },\n {\n \"url\": \"save.46fbf12f.svg\",\n \"revision\": \"3e1d90c414fadfd6727cc77f150e79e5\"\n },\n {\n \"url\": \"say-that-again-i-dare-you.0c8b53b9.jpg\",\n \"revision\": \"948be03975e613eaa08ac7f284491b40\"\n },\n {\n \"url\": \"screenshot.3fbaa9cf.png\",\n \"revision\": \"9df64fac2f8267d4f7db45082d60b09c\"\n },\n {\n \"url\": \"share.0fccb277.svg\",\n \"revision\": \"19d01499fa1fe8707366653db087ebac\"\n },\n {\n \"url\": \"shirley-temple-laugh.8125357d.png\",\n \"revision\": \"c2e13fffe87a3a1ff91d5a955a280fe1\"\n },\n {\n \"url\": \"sparta-leonidas.0b603b26.jpg\",\n \"revision\": \"e9ba2efb8ff797d0a9adf13135927c82\"\n },\n {\n \"url\": \"spinner.4452ed29.svg\",\n \"revision\": \"609c6274c68c19f6badaf5488b6aeef2\"\n },\n {\n \"url\": \"star-wars-yoda.c7579c93.jpg\",\n \"revision\": \"951e4ee52db27001190248f449651c4b\"\n },\n {\n \"url\": \"success-kid.5d6212f8.jpg\",\n \"revision\": \"b58ffaf338ffc8f4f06ef45478365c13\"\n },\n {\n \"url\": \"sweating-bullets.f3c2d84f.jpg\",\n \"revision\": \"3c9c50281665c688cacdd0d1da8f8f7d\"\n },\n {\n \"url\": \"tell-me-the-truth-I-am-ready-to-hear-it.34eb1bcc.png\",\n \"revision\": \"ecd53156061e4fdabf386c5f802035cf\"\n },\n {\n \"url\": \"think-about-it.f4fc185d.jpg\",\n \"revision\": \"f70b62834ba3ec34a2c9f2a80a5068b9\"\n },\n {\n \"url\": \"this-is-fine.db15aaeb.jpg\",\n \"revision\": \"dac2b7e7d3b1f18c72e48373cb4275e1\"\n },\n {\n \"url\": \"toilet_guy.812f73a4.jpg\",\n \"revision\": \"3f488def302d190dca09eb12c878d228\"\n },\n {\n \"url\": \"trash.d9edab78.svg\",\n \"revision\": \"db8971c7dab936bbe799ede7c1b9ac4b\"\n },\n {\n \"url\": \"two-buttons.a42b7a04.jpg\",\n \"revision\": \"611756fac300eb0f010491cbd95dda28\"\n },\n {\n \"url\": \"waiting-skeleton.26f2ec8f.jpg\",\n \"revision\": \"0eef934549392da6aa193fb86f9a8ab2\"\n },\n {\n \"url\": \"water-tank-leaking-fix.772173b9.png\",\n \"revision\": \"3ebfc2b2c42be514ec35fd3b9948686a\"\n },\n {\n \"url\": \"whisper-and-goosebumps.2bc61488.jpg\",\n \"revision\": \"962ccff862d6c9d416a330c8be901be9\"\n },\n {\n \"url\": \"x-x-everywhere.4732733a.jpg\",\n \"revision\": \"ca16fab0846148556e776aec3ff00739\"\n },\n {\n \"url\": \"you-guys-are-getting-paid.ba5678cc.png\",\n \"revision\": \"feb2da8a1fae966adae92bd1f8318153\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAoBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,qCAEb,CAAA"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../private/var/folders/vy/why3xmz53r57rfypb6dxq94c0000gp/T/0523141ed48e4ba0e9464d8c4661ec1f/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/Users/georgeraptis/Projects/@georapbox/meme-generator/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/Users/georgeraptis/Projects/@georapbox/meme-generator/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"180.ad1ffa6f.png\",\n \"revision\": \"e500d9d7377de6d701630c6345a20b99\"\n },\n {\n \"url\": \"192.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"384.3d08a4a6.png\",\n \"revision\": \"3eb04d3a80b60e082d7f79e1614070fe\"\n },\n {\n \"url\": \"512.00f88ae0.png\",\n \"revision\": \"511ad055b1865aa9bda7886cb0b9e336\"\n },\n {\n \"url\": \"add-image.bd815785.svg\",\n \"revision\": \"8c00e51567cbd039981fffb87c61dab1\"\n },\n {\n \"url\": \"always-has-been.08a66422.jpg\",\n \"revision\": \"d1b6401abd9cb8d382b7246bdb8ce0b5\"\n },\n {\n \"url\": \"anakin-padme.03c6b194.jpg\",\n \"revision\": \"baa00e8faccb9c63073f1db59274bd0d\"\n },\n {\n \"url\": \"Anton-Regular.e58ab3fe.ttf\",\n \"revision\": \"055c4df4e2f8c7a4d4675cdd8fa68da0\"\n },\n {\n \"url\": \"aperture.4bf28ce8.svg\",\n \"revision\": \"1a6a5d3b06ba8aaa3e96658810752663\"\n },\n {\n \"url\": \"bad-luck-brian.8b018588.jpg\",\n \"revision\": \"2bb70408a0ab18038a376d80da91d336\"\n },\n {\n \"url\": \"batman-slapping-robin.aa8b8054.jpg\",\n \"revision\": \"6695faabd1eb772936f31ff0af36111d\"\n },\n {\n \"url\": \"bell-curve.1167fe19.jpg\",\n \"revision\": \"e26dac38583f6f98ea8ef98e4dab71e1\"\n },\n {\n \"url\": \"ben-affleck-smoking.17cc6114.jpg\",\n \"revision\": \"512c246cb818579340a6dc8dddea4f87\"\n },\n {\n \"url\": \"camera-reverse.284e8ac9.svg\",\n \"revision\": \"86e592b72bb2472bbacd0c823b3a3c78\"\n },\n {\n \"url\": \"camera.ed7aa43f.svg\",\n \"revision\": \"46f0c02466282ec5c4bf26141624316e\"\n },\n {\n \"url\": \"captain-picard-facepalm.7690614a.jpg\",\n \"revision\": \"926eecb6292d72fe2f99fd3113444c0b\"\n },\n {\n \"url\": \"car-drift.9255750c.jpg\",\n \"revision\": \"55b3735095d73c764704bccdda6f2bc1\"\n },\n {\n \"url\": \"change-my-mind.b49b92c2.jpg\",\n \"revision\": \"35e498b8b3c3b62e485ce4ffbe4cdfd1\"\n },\n {\n \"url\": \"chevron-down.ad14d981.svg\",\n \"revision\": \"5635cc35f04030576a62d2d649824495\"\n },\n {\n \"url\": \"chevron-left.20a2f252.svg\",\n \"revision\": \"a8334bfa7ef65b1095bfd54557d69beb\"\n },\n {\n \"url\": \"chevron-right.1be074ac.svg\",\n \"revision\": \"3d72992183afc0c2f0b6bf010dadc2a1\"\n },\n {\n \"url\": \"chevron-up.f532d8b6.svg\",\n \"revision\": \"e1bd8bbacf48b185c4b3deb18b9e0f2d\"\n },\n {\n \"url\": \"CourierPrime-Bold.3d6bf689.ttf\",\n \"revision\": \"4acfa45d29d240044e0075a8e58f0862\"\n },\n {\n \"url\": \"CourierPrime-Regular.3a25a501.ttf\",\n \"revision\": \"fba4686ed1d1b4ef05ab14db78805dbe\"\n },\n {\n \"url\": \"disaster-girl.536b1af4.jpg\",\n \"revision\": \"07542c2e7ea315f6a7b7311d2a88d074\"\n },\n {\n \"url\": \"distracted-boyfriend.22708891.jpg\",\n \"revision\": \"4ee61cd7c20689e2c8b7fa2dbffbdbc4\"\n },\n {\n \"url\": \"drake-hotline-bling.99013af7.jpg\",\n \"revision\": \"edce37df305e1b9c78d0a41ade363e29\"\n },\n {\n \"url\": \"drowning-kid-in-the-pool.37435682.jpg\",\n \"revision\": \"99e976a664709f7fe0b7141e2661a42b\"\n },\n {\n \"url\": \"favicon-192.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"finding-neverland.25f9c4f0.jpg\",\n \"revision\": \"4557c9d30b0e3114953f9cc8e981c622\"\n },\n {\n \"url\": \"gear.b3b5d1a5.svg\",\n \"revision\": \"5e0b2045d7dc4768b1ceb199d83ab6f0\"\n },\n {\n \"url\": \"gibson-jesus.1224d195.jpg\",\n \"revision\": \"b26e0d89414371dfbf7a1e1bbada7e15\"\n },\n {\n \"url\": \"girls-gossiping.da75b154.jpg\",\n \"revision\": \"97f0d159d65349dfdd821f6294d8b177\"\n },\n {\n \"url\": \"greta-thunberg-how-dare-you.ddceea0b.jpg\",\n \"revision\": \"dbe7e341b66c0e71da9db2f49eddbd9c\"\n },\n {\n \"url\": \"grinning-girl.9a1a3b6a.jpg\",\n \"revision\": \"133c4124813f1dfeff00a9e0a735b5c3\"\n },\n {\n \"url\": \"group-therapy.c82c3502.jpg\",\n \"revision\": \"a79a27311d3969bf370b8846bea1789c\"\n },\n {\n \"url\": \"hack-the-planet.29b5550a.jpg\",\n \"revision\": \"207de9c3f83de707d99ea7255f743fc1\"\n },\n {\n \"url\": \"hide-the-pain-harold.dc41d0f5.jpg\",\n \"revision\": \"af3a4d69c625740558a9adc66967797c\"\n },\n {\n \"url\": \"i-bet-hes-thinking-about-other-women.c80f1ce0.jpg\",\n \"revision\": \"df6904f1480a0210525311a594cd51b7\"\n },\n {\n \"url\": \"i-dont-always.cd8fe191.jpg\",\n \"revision\": \"6c0fa2f7428f252d177a52b34c93aacb\"\n },\n {\n \"url\": \"i-see-dead-people.89330beb.jpg\",\n \"revision\": \"16ff33b79a8ce266b890d2f2e53fdbc1\"\n },\n {\n \"url\": \"index.89efe45b.js\",\n \"revision\": \"6814a61841cd719f59765d1ee48ea09a\"\n },\n {\n \"url\": \"index.89efe45b.js.map\",\n \"revision\": \"c88920bec0571a6511e504850de79c03\"\n },\n {\n \"url\": \"index.9d0cb1f2.js\",\n \"revision\": \"690f3104d08477c17061147de2e6f38d\"\n },\n {\n \"url\": \"index.9d0cb1f2.js.map\",\n \"revision\": \"87c364d26dda81b051e8bcee2d842d4a\"\n },\n {\n \"url\": \"index.a3077d6d.js\",\n \"revision\": \"2aa5cac621cb7a4477fb651c39f0aaba\"\n },\n {\n \"url\": \"index.a3077d6d.js.map\",\n \"revision\": \"f014fbef69b46546095920eeeb4e35db\"\n },\n {\n \"url\": \"index.bcbdd9b6.css\",\n \"revision\": \"d566a80647f90d92aa8eb6a31045a8f5\"\n },\n {\n \"url\": \"index.bcbdd9b6.css.map\",\n \"revision\": \"134a4d3805412a4c455e6c3199815aa1\"\n },\n {\n \"url\": \"index.d44e81ec.js\",\n \"revision\": \"b90a75d7c5128c18c30bf621d43c8122\"\n },\n {\n \"url\": \"index.d44e81ec.js.map\",\n \"revision\": \"4f7febc735b0a98935455f8329214edd\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"dc35b02bea5ab781bf016d5bd350ffb0\"\n },\n {\n \"url\": \"jurassic-park-no-one-cares.4b16d8e3.jpg\",\n \"revision\": \"5971adaaec085b176061d7d98577a089\"\n },\n {\n \"url\": \"knight-with-arrow-in-helmet.70d7b8ea.jpg\",\n \"revision\": \"2d51aa7ceccfacf6e1fae33cf5279abb\"\n },\n {\n \"url\": \"laughing-leo.ff4cf9b5.png\",\n \"revision\": \"ffd00816a11fb66f16d05a5a06506e3a\"\n },\n {\n \"url\": \"leonardo-dicaprio-cheers.1f5072fc.jpg\",\n \"revision\": \"0c9762d1044fde55cfccc6d3f8abfedb\"\n },\n {\n \"url\": \"logo.02439c4c.png\",\n \"revision\": \"799182a75ab5b10e8b2088a717f0eff2\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"1e34d4d2fb0da2246a35db6beeace137\"\n },\n {\n \"url\": \"matrix-morpheus.2a17fef0.jpg\",\n \"revision\": \"4306d531845e95029b5219f178ce546c\"\n },\n {\n \"url\": \"milk-girls.c67a099a.jpg\",\n \"revision\": \"d2a3c2d80f01fb790a6557978920ec36\"\n },\n {\n \"url\": \"monk-temptation.9fa9b52f.jpg\",\n \"revision\": \"f993e88e46226fb560559b5c8392ba6e\"\n },\n {\n \"url\": \"monkey_puppet.a1128702.jpg\",\n \"revision\": \"e3dd1d281e372a02ca2955eb62ce7dbb\"\n },\n {\n \"url\": \"nervous.ecca1da9.jpg\",\n \"revision\": \"f9500924e2154f15ff3249573963e867\"\n },\n {\n \"url\": \"obama-medal.da4528cd.jpg\",\n \"revision\": \"0b7d29347fd9bdf850b46293c8870fd8\"\n },\n {\n \"url\": \"office-congrats.f658c72e.jpg\",\n \"revision\": \"5e5823dd68191151a2313a3ec158e9cf\"\n },\n {\n \"url\": \"one-does-not-simply.bd73a129.jpg\",\n \"revision\": \"94eaa0e921189e88fe35ba1954988564\"\n },\n {\n \"url\": \"OpenSans-Bold.8fceb72b.ttf\",\n \"revision\": \"8ff9b5735ccb338267f0034d83fe8214\"\n },\n {\n \"url\": \"OpenSans-Regular.edf9e01b.ttf\",\n \"revision\": \"22ab03a6b890f2f142a137a38bf1d4ae\"\n },\n {\n \"url\": \"Oswald-Bold.0f6a7ca6.ttf\",\n \"revision\": \"452bfeb5bf78e71cc3cd6e720ac24bd4\"\n },\n {\n \"url\": \"Oswald-Regular.89ec7d89.ttf\",\n \"revision\": \"a7ccbd3cd9a9ff21ec41086dcc23ebe6\"\n },\n {\n \"url\": \"photo.0328c485.svg\",\n \"revision\": \"6b3fccb8598a897d641cc1dc75ed3592\"\n },\n {\n \"url\": \"plague-hackers.01c70709.jpg\",\n \"revision\": \"70712ddea9f2dd86ec34c1ffedffb3d0\"\n },\n {\n \"url\": \"Roboto-Bold.fdb9b54a.ttf\",\n \"revision\": \"b8e42971dec8d49207a8c8e2b919a6ac\"\n },\n {\n \"url\": \"Roboto-Regular.ca197847.ttf\",\n \"revision\": \"8a36205bd9b83e03af0591a004bc97f4\"\n },\n {\n \"url\": \"RobotoCondensed-Bold.e1f96d4b.ttf\",\n \"revision\": \"e38804ae070b58fbf4fdd88fd6853929\"\n },\n {\n \"url\": \"RobotoCondensed-Regular.d585f5c7.ttf\",\n \"revision\": \"0134dd8fe6fe708de73909a71d842780\"\n },\n {\n \"url\": \"sad-pablo-escobar.48ee550d.jpg\",\n \"revision\": \"1a49f6decc10da3ee849a1f94132c794\"\n },\n {\n \"url\": \"save.46fbf12f.svg\",\n \"revision\": \"3e1d90c414fadfd6727cc77f150e79e5\"\n },\n {\n \"url\": \"say-that-again-i-dare-you.0c8b53b9.jpg\",\n \"revision\": \"948be03975e613eaa08ac7f284491b40\"\n },\n {\n \"url\": \"screenshot.3fbaa9cf.png\",\n \"revision\": \"9df64fac2f8267d4f7db45082d60b09c\"\n },\n {\n \"url\": \"share.0fccb277.svg\",\n \"revision\": \"19d01499fa1fe8707366653db087ebac\"\n },\n {\n \"url\": \"shirley-temple-laugh.8125357d.png\",\n \"revision\": \"c2e13fffe87a3a1ff91d5a955a280fe1\"\n },\n {\n \"url\": \"sparta-leonidas.0b603b26.jpg\",\n \"revision\": \"e9ba2efb8ff797d0a9adf13135927c82\"\n },\n {\n \"url\": \"spinner.4452ed29.svg\",\n \"revision\": \"609c6274c68c19f6badaf5488b6aeef2\"\n },\n {\n \"url\": \"star-wars-yoda.c7579c93.jpg\",\n \"revision\": \"951e4ee52db27001190248f449651c4b\"\n },\n {\n \"url\": \"success-kid.5d6212f8.jpg\",\n \"revision\": \"b58ffaf338ffc8f4f06ef45478365c13\"\n },\n {\n \"url\": \"sweating-bullets.f3c2d84f.jpg\",\n \"revision\": \"3c9c50281665c688cacdd0d1da8f8f7d\"\n },\n {\n \"url\": \"tell-me-the-truth-I-am-ready-to-hear-it.34eb1bcc.png\",\n \"revision\": \"ecd53156061e4fdabf386c5f802035cf\"\n },\n {\n \"url\": \"think-about-it.f4fc185d.jpg\",\n \"revision\": \"f70b62834ba3ec34a2c9f2a80a5068b9\"\n },\n {\n \"url\": \"this-is-fine.db15aaeb.jpg\",\n \"revision\": \"dac2b7e7d3b1f18c72e48373cb4275e1\"\n },\n {\n \"url\": \"toilet_guy.812f73a4.jpg\",\n \"revision\": \"3f488def302d190dca09eb12c878d228\"\n },\n {\n \"url\": \"trash.d9edab78.svg\",\n \"revision\": \"db8971c7dab936bbe799ede7c1b9ac4b\"\n },\n {\n \"url\": \"two-buttons.a42b7a04.jpg\",\n \"revision\": \"611756fac300eb0f010491cbd95dda28\"\n },\n {\n \"url\": \"waiting-skeleton.26f2ec8f.jpg\",\n \"revision\": \"0eef934549392da6aa193fb86f9a8ab2\"\n },\n {\n \"url\": \"water-tank-leaking-fix.772173b9.png\",\n \"revision\": \"3ebfc2b2c42be514ec35fd3b9948686a\"\n },\n {\n \"url\": \"whisper-and-goosebumps.2bc61488.jpg\",\n \"revision\": \"962ccff862d6c9d416a330c8be901be9\"\n },\n {\n \"url\": \"x-x-everywhere.4732733a.jpg\",\n \"revision\": \"ca16fab0846148556e776aec3ff00739\"\n },\n {\n \"url\": \"you-guys-are-getting-paid.ba5678cc.png\",\n \"revision\": \"feb2da8a1fae966adae92bd1f8318153\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision"],"mappings":"0nBAoBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,qCAEb,CAAA"} \ No newline at end of file