From 329aa2715cc9bbee5b1e87538525c4cef7a5c70e Mon Sep 17 00:00:00 2001 From: richonguzman Date: Tue, 24 Sep 2024 13:28:19 -0300 Subject: [PATCH] start --- data_embed/bootstrap.css | 12200 ++++++++++++++++++++++++++++++++++ data_embed/bootstrap.css.gz | Bin 0 -> 33963 bytes data_embed/bootstrap.js | 4467 +++++++++++++ data_embed/bootstrap.js.gz | Bin 0 -> 30641 bytes data_embed/favicon.png | Bin 0 -> 813 bytes data_embed/favicon.png.gz | Bin 0 -> 836 bytes data_embed/index.html | 1848 +++++ data_embed/index.html.gz | Bin 0 -> 42549 bytes data_embed/script.js | 550 ++ data_embed/script.js.gz | Bin 0 -> 13133 bytes data_embed/style.css | 8 + data_embed/style.css.gz | Bin 0 -> 110 bytes platformio.ini | 11 + src/LoRa_APRS_Tracker.cpp | 3 +- src/web_utils.cpp | 210 + src/web_utils.h | 29 + tools/compress.py | 42 + 17 files changed, 19367 insertions(+), 1 deletion(-) create mode 100644 data_embed/bootstrap.css create mode 100644 data_embed/bootstrap.css.gz create mode 100644 data_embed/bootstrap.js create mode 100644 data_embed/bootstrap.js.gz create mode 100644 data_embed/favicon.png create mode 100644 data_embed/favicon.png.gz create mode 100644 data_embed/index.html create mode 100644 data_embed/index.html.gz create mode 100644 data_embed/script.js create mode 100644 data_embed/script.js.gz create mode 100644 data_embed/style.css create mode 100644 data_embed/style.css.gz create mode 100644 src/web_utils.cpp create mode 100644 src/web_utils.h create mode 100644 tools/compress.py diff --git a/data_embed/bootstrap.css b/data_embed/bootstrap.css new file mode 100644 index 0000000..f38d232 --- /dev/null +++ b/data_embed/bootstrap.css @@ -0,0 +1,12200 @@ +@charset "UTF-8"; +/*! +* Bootstrap v5.3.2 (https://getbootstrap.com/) +* Copyright 2011-2023 The Bootstrap Authors +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) +*/ +: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: 0.25; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.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 + 0.9vw); +} +@media (min-width: 1200px) { + .h2, + h2 { + font-size: 2rem; + } +} +.h3, +h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + .h3, + h3 { + font-size: 1.75rem; + } +} +.h4, +h4 { + font-size: calc(1.275rem + 0.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: 0.5rem; + margin-left: 0; +} +blockquote { + margin: 0 0 1rem; +} +b, +strong { + font-weight: bolder; +} +.small, +small { + font-size: 0.875em; +} +.mark, +mark { + padding: 0.1875em; + color: var(--bs-highlight-color); + background-color: var(--bs-highlight-bg); +} +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.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: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.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: 0.5rem; + padding-bottom: 0.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: 0.5rem; + font-size: calc(1.275rem + 0.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: 0.5rem; +} +.initialism { + font-size: 0.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: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} +.img-fluid { + max-width: 100%; + height: auto; +} +.img-thumbnail { + padding: 0.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: 0.5rem; + line-height: 1; +} +.figure-caption { + font-size: 0.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) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.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(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.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: 0.5rem 0.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: 0.25rem 0.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: 0.5rem; +} +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; +} +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; +} +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-secondary-color); +} +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.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 0.15s ease-in-out, + box-shadow 0.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 0.25rem rgba(13, 110, 253, 0.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: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.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 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; + 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; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.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 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; +} +@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: 0.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 + 0.5rem + calc(var(--bs-border-width) * 2) + ); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-lg { + min-height: calc( + 1.5em + 1rem + calc(var(--bs-border-width) * 2) + ); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +textarea.form-control { + min-height: calc( + 1.5em + 0.75rem + calc(var(--bs-border-width) * 2) + ); +} +textarea.form-control-sm { + min-height: calc( + 1.5em + 0.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 + 0.75rem + calc(var(--bs-border-width) * 2) + ); + padding: 0.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 + 0.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: 0.375rem 2.25rem 0.375rem 0.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 0.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 0.15s ease-in-out, + box-shadow 0.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 0.25rem rgba(13, 110, 253, 0.25); +} +.form-select[multiple], +.form-select[size]:not([size="1"]) { + padding-right: 0.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: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.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: 0.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: 0.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: 0.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 0.25rem rgba(13, 110, 253, 0.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: 0.5; +} +.form-check-input:disabled ~ .form-check-label, +.form-check-input[disabled] ~ .form-check-label { + cursor: default; + opacity: 0.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 0.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: 0.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 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, + 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + -webkit-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.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: 0.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 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.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: 0.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 0.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 0.1s ease-in-out, transform 0.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 0.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: 0.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: 0.625rem; +} +.form-floating > .form-control-plaintext:-webkit-autofill, +.form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating + > .form-control:not(:-moz-placeholder-shown) + ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.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), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.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), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.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: 0.375rem 0.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: 0.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: 0.25rem 0.5rem; + font-size: 0.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: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-valid-color); +} +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.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 + 0.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(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.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 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated textarea.form-control:valid, +textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right + calc(0.375em + 0.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 0.75rem center, center right 2.25rem; + background-size: 16px 12px, + calc(0.75em + 0.375rem) calc(0.75em + 0.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 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.form-control-color.is-valid, +.was-validated .form-control-color:valid { + width: calc(3rem + calc(1.5em + 0.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 0.25rem rgba(var(--bs-success-rgb), 0.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: 0.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: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-invalid-color); +} +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.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 + 0.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(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.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 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated textarea.form-control:invalid, +textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right + calc(0.375em + 0.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 0.75rem center, center right 2.25rem; + background-size: 16px 12px, + calc(0.75em + 0.375rem) calc(0.75em + 0.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 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.form-control-color.is-invalid, +.was-validated .form-control-color:invalid { + width: calc(3rem + calc(1.5em + 0.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 0.25rem rgba(var(--bs-danger-rgb), 0.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: 0.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), 0.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 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; +} +@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 0.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 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.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: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.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: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.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: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.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: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.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: 0.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: 0.5625rem; + padding-left: 0.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: 0.375rem; + padding-left: 0.375rem; +} +.btn-group-lg > .btn + .dropdown-toggle-split, +.btn-lg + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.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 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.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 0.25rem rgba(13, 110, 253, 0.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: 0.5rem; + padding-bottom: 0.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(-0.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(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.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(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.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 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; +} +@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, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.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: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto + no-repeat; + border: 0; + border-radius: 0.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(-0.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 0.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) * 0.5) + calc(var(--bs-modal-header-padding-x) * 0.5); + 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; +} +.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) * 0.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) * 0.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) * 0.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) * 0.5) + var(--bs-tooltip-arrow-height) + calc(var(--bs-tooltip-arrow-width) * 0.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) * 0.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) * 0.5) 0 + calc(var(--bs-tooltip-arrow-width) * 0.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) * 0.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) * 0.5) + var(--bs-popover-arrow-height) + calc(var(--bs-popover-arrow-width) * 0.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) * 0.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(-0.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) * 0.5) 0 + calc(var(--bs-popover-arrow-width) * 0.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 0.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 0.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: 0.5; + transition: opacity 0.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: 0.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: 0.5; + transition: opacity 0.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: 0.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) * 0.5) + calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.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: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} +.placeholder-xs { + min-height: 0.6em; +} +.placeholder-sm { + min-height: 0.8em; +} +.placeholder-lg { + min-height: 1.2em; +} +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} +@keyframes placeholder-glow { + 50% { + opacity: 0.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, 0.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: 0.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: 0.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(0.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: 0.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: 0.25 !important; +} +.opacity-50 { + opacity: 0.5 !important; +} +.opacity-75 { + opacity: 0.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: 0.25rem !important; +} +.m-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; +} +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; +} +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; +} +.mt-2 { + margin-top: 0.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: 0.25rem !important; +} +.me-2 { + margin-right: 0.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: 0.25rem !important; +} +.mb-2 { + margin-bottom: 0.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: 0.25rem !important; +} +.ms-2 { + margin-left: 0.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: 0.25rem !important; +} +.p-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; +} +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; +} +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; +} +.pt-2 { + padding-top: 0.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: 0.25rem !important; +} +.pe-2 { + padding-right: 0.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: 0.25rem !important; +} +.pb-2 { + padding-bottom: 0.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: 0.25rem !important; +} +.ps-2 { + padding-left: 0.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: 0.25rem !important; +} +.gap-2 { + gap: 0.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: 0.25rem !important; +} +.row-gap-2 { + row-gap: 0.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: 0.25rem !important; +} +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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 + 0.9vw) !important; +} +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} +.fs-4 { + font-size: calc(1.275rem + 0.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, 0.5) !important; +} +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.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: 0.25rem !important; + } + .m-sm-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.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: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.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: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.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: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.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: 0.25rem !important; + } + .p-sm-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.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: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.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: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.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: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.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: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.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: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.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: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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: 0.25rem !important; + } + .m-md-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.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: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.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: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.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: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.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: 0.25rem !important; + } + .p-md-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.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: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.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: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.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: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.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: 0.25rem !important; + } + .gap-md-2 { + gap: 0.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: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.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: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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: 0.25rem !important; + } + .m-lg-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.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: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.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: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.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: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.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: 0.25rem !important; + } + .p-lg-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.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: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.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: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.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: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.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: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.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: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.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: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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: 0.25rem !important; + } + .m-xl-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.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: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.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: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.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: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.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: 0.25rem !important; + } + .p-xl-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.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: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.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: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.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: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.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: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.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: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.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: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.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: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.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: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.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: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.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: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.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: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.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: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.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: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.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: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.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: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.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: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.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: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.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: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.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: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.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: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.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: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.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: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.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; + } +} + +.container { + max-width: 960px; +} +.bd-placeholder-img { + font-size: 1.125rem; + text-anchor: middle; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +@media (min-width: 768px) { + .bd-placeholder-img-lg { + font-size: 3.5rem; + } +} + +.b-example-divider { + width: 100%; + height: 3rem; + background-color: rgba(0, 0, 0, 0.1); + border: solid rgba(0, 0, 0, 0.15); + border-width: 1px 0; + box-shadow: inset 0 0.5em 1.5em rgba(0, 0, 0, 0.1), + inset 0 0.125em 0.5em rgba(0, 0, 0, 0.15); +} + +.b-example-vr { + flex-shrink: 0; + width: 1.5rem; + height: 100vh; +} + +.bi { + vertical-align: -0.125em; + fill: currentColor; +} + +.nav-scroller { + position: relative; + z-index: 2; + height: 2.75rem; + overflow-y: hidden; +} + +.nav-scroller .nav { + display: flex; + flex-wrap: nowrap; + padding-bottom: 1rem; + margin-top: -1px; + overflow-x: auto; + text-align: center; + white-space: nowrap; + -webkit-overflow-scrolling: touch; +} + +.btn-bd-primary { + --bd-violet-bg: #712cf9; + --bd-violet-rgb: 112.520718, 44.062154, 249.437846; + + --bs-btn-font-weight: 600; + --bs-btn-color: var(--bs-white); + --bs-btn-bg: var(--bd-violet-bg); + --bs-btn-border-color: var(--bd-violet-bg); + --bs-btn-hover-color: var(--bs-white); + --bs-btn-hover-bg: #6528e0; + --bs-btn-hover-border-color: #6528e0; + --bs-btn-focus-shadow-rgb: var(--bd-violet-rgb); + --bs-btn-active-color: var(--bs-btn-hover-color); + --bs-btn-active-bg: #5a23c8; + --bs-btn-active-border-color: #5a23c8; +} + +.bd-mode-toggle { + z-index: 1500; +} + +.bd-mode-toggle .dropdown-menu .active .bi { + display: block !important; +} \ No newline at end of file diff --git a/data_embed/bootstrap.css.gz b/data_embed/bootstrap.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce9afde2302a88c5f396e0696d97175ce48a3703 GIT binary patch literal 33963 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 literal 0 HcmV?d00001 diff --git a/data_embed/bootstrap.js b/data_embed/bootstrap.js new file mode 100644 index 0000000..ded4eb2 --- /dev/null +++ b/data_embed/bootstrap.js @@ -0,0 +1,4467 @@ +// Bootstrap base +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = e()) + : "function" == typeof define && define.amd + ? define(e) + : ((t = + "undefined" != typeof globalThis + ? globalThis + : t || self).bootstrap = e()); +})(this, function () { + "use strict"; + const t = new Map(), + e = { + set(e, i, n) { + t.has(e) || t.set(e, new Map()); + const s = t.get(e); + s.has(i) || 0 === s.size + ? s.set(i, n) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(s.keys())[0] + }.` + ); + }, + get: (e, i) => (t.has(e) && t.get(e).get(i)) || null, + remove(e, i) { + if (!t.has(e)) return; + const n = t.get(e); + n.delete(i), 0 === n.size && t.delete(e); + }, + }, + i = "transitionend", + n = (t) => ( + t && + window.CSS && + window.CSS.escape && + (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)), + t + ), + s = (t) => { + t.dispatchEvent(new Event(i)); + }, + o = (t) => + !(!t || "object" != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + r = (t) => + o(t) + ? t.jquery + ? t[0] + : t + : "string" == typeof t && t.length > 0 + ? document.querySelector(n(t)) + : null, + a = (t) => { + if (!o(t) || 0 === t.getClientRects().length) return !1; + const e = + "visible" === + getComputedStyle(t).getPropertyValue("visibility"), + i = t.closest("details:not([open])"); + if (!i) return e; + if (i !== t) { + const e = t.closest("summary"); + if (e && e.parentNode !== i) return !1; + if (null === e) return !1; + } + return e; + }, + l = (t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains("disabled") || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute("disabled") && + "false" !== t.getAttribute("disabled")), + c = (t) => { + if (!document.documentElement.attachShadow) return null; + if ("function" == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? c(t.parentNode) + : null; + }, + h = () => {}, + d = (t) => { + t.offsetHeight; + }, + u = () => + window.jQuery && !document.body.hasAttribute("data-bs-no-jquery") + ? window.jQuery + : null, + f = [], + p = () => "rtl" === document.documentElement.dir, + m = (t) => { + var e; + (e = () => { + const e = u(); + if (e) { + const i = t.NAME, + n = e.fn[i]; + (e.fn[i] = t.jQueryInterface), + (e.fn[i].Constructor = t), + (e.fn[i].noConflict = () => ( + (e.fn[i] = n), t.jQueryInterface + )); + } + }), + "loading" === document.readyState + ? (f.length || + document.addEventListener("DOMContentLoaded", () => { + for (const t of f) t(); + }), + f.push(e)) + : e(); + }, + g = (t, e = [], i = t) => ("function" == typeof t ? t(...e) : i), + _ = (t, e, n = !0) => { + if (!n) return void g(t); + const o = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: i } = + window.getComputedStyle(t); + const n = Number.parseFloat(e), + s = Number.parseFloat(i); + return n || s + ? ((e = e.split(",")[0]), + (i = i.split(",")[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) + : 0; + })(e) + 5; + let r = !1; + const a = ({ target: n }) => { + n === e && ((r = !0), e.removeEventListener(i, a), g(t)); + }; + e.addEventListener(i, a), + setTimeout(() => { + r || s(e); + }, o); + }, + b = (t, e, i, n) => { + const s = t.length; + let o = t.indexOf(e); + return -1 === o + ? !i && n + ? t[s - 1] + : t[0] + : ((o += i ? 1 : -1), + n && (o = (o + s) % s), + t[Math.max(0, Math.min(o, s - 1))]); + }, + v = /[^.]*(?=\..*)\.|.*/, + y = /\..*/, + w = /::\d+$/, + A = {}; + let E = 1; + const T = { mouseenter: "mouseover", mouseleave: "mouseout" }, + C = new Set([ + "click", + "dblclick", + "mouseup", + "mousedown", + "contextmenu", + "mousewheel", + "DOMMouseScroll", + "mouseover", + "mouseout", + "mousemove", + "selectstart", + "selectend", + "keydown", + "keypress", + "keyup", + "orientationchange", + "touchstart", + "touchmove", + "touchend", + "touchcancel", + "pointerdown", + "pointermove", + "pointerup", + "pointerleave", + "pointercancel", + "gesturestart", + "gesturechange", + "gestureend", + "focus", + "blur", + "change", + "reset", + "select", + "submit", + "focusin", + "focusout", + "load", + "unload", + "beforeunload", + "resize", + "move", + "DOMContentLoaded", + "readystatechange", + "error", + "abort", + "scroll", + ]); + function O(t, e) { + return (e && `${e}::${E++}`) || t.uidEvent || E++; + } + function x(t) { + const e = O(t); + return (t.uidEvent = e), (A[e] = A[e] || {}), A[e]; + } + function k(t, e, i = null) { + return Object.values(t).find( + (t) => t.callable === e && t.delegationSelector === i + ); + } + function L(t, e, i) { + const n = "string" == typeof e, + s = n ? i : e || i; + let o = I(t); + return C.has(o) || (o = t), [n, s, o]; + } + function S(t, e, i, n, s) { + if ("string" != typeof e || !t) return; + let [o, r, a] = L(e, i, n); + if (e in T) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + r = t(r); + } + const l = x(t), + c = l[a] || (l[a] = {}), + h = k(c, r, o ? i : null); + if (h) return void (h.oneOff = h.oneOff && s); + const d = O(r, e.replace(v, "")), + u = o + ? (function (t, e, i) { + return function n(s) { + const o = t.querySelectorAll(e); + for ( + let { target: r } = s; + r && r !== this; + r = r.parentNode + ) + for (const a of o) + if (a === r) + return ( + P(s, { delegateTarget: r }), + n.oneOff && N.off(t, s.type, e, i), + i.apply(r, [s]) + ); + }; + })(t, i, r) + : (function (t, e) { + return function i(n) { + return ( + P(n, { delegateTarget: t }), + i.oneOff && N.off(t, n.type, e), + e.apply(t, [n]) + ); + }; + })(t, r); + (u.delegationSelector = o ? i : null), + (u.callable = r), + (u.oneOff = s), + (u.uidEvent = d), + (c[d] = u), + t.addEventListener(a, u, o); + } + function D(t, e, i, n, s) { + const o = k(e[i], n, s); + o && (t.removeEventListener(i, o, Boolean(s)), delete e[i][o.uidEvent]); + } + function $(t, e, i, n) { + const s = e[i] || {}; + for (const [o, r] of Object.entries(s)) + o.includes(n) && D(t, e, i, r.callable, r.delegationSelector); + } + function I(t) { + return (t = t.replace(y, "")), T[t] || t; + } + const N = { + on(t, e, i, n) { + S(t, e, i, n, !1); + }, + one(t, e, i, n) { + S(t, e, i, n, !0); + }, + off(t, e, i, n) { + if ("string" != typeof e || !t) return; + const [s, o, r] = L(e, i, n), + a = r !== e, + l = x(t), + c = l[r] || {}, + h = e.startsWith("."); + if (void 0 === o) { + if (h) for (const i of Object.keys(l)) $(t, l, i, e.slice(1)); + for (const [i, n] of Object.entries(c)) { + const s = i.replace(w, ""); + (a && !e.includes(s)) || + D(t, l, r, n.callable, n.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + D(t, l, r, o, s ? i : null); + } + }, + trigger(t, e, i) { + if ("string" != typeof e || !t) return null; + const n = u(); + let s = null, + o = !0, + r = !0, + a = !1; + e !== I(e) && + n && + ((s = n.Event(e, i)), + n(t).trigger(s), + (o = !s.isPropagationStopped()), + (r = !s.isImmediatePropagationStopped()), + (a = s.isDefaultPrevented())); + const l = P(new Event(e, { bubbles: o, cancelable: !0 }), i); + return ( + a && l.preventDefault(), + r && t.dispatchEvent(l), + l.defaultPrevented && s && s.preventDefault(), + l + ); + }, + }; + function P(t, e = {}) { + for (const [i, n] of Object.entries(e)) + try { + t[i] = n; + } catch (e) { + Object.defineProperty(t, i, { configurable: !0, get: () => n }); + } + return t; + } + function M(t) { + if ("true" === t) return !0; + if ("false" === t) return !1; + if (t === Number(t).toString()) return Number(t); + if ("" === t || "null" === t) return null; + if ("string" != typeof t) return t; + try { + return JSON.parse(decodeURIComponent(t)); + } catch (e) { + return t; + } + } + function j(t) { + return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`); + } + const F = { + setDataAttribute(t, e, i) { + t.setAttribute(`data-bs-${j(e)}`, i); + }, + removeDataAttribute(t, e) { + t.removeAttribute(`data-bs-${j(e)}`); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}, + i = Object.keys(t.dataset).filter( + (t) => t.startsWith("bs") && !t.startsWith("bsConfig") + ); + for (const n of i) { + let i = n.replace(/^bs/, ""); + (i = i.charAt(0).toLowerCase() + i.slice(1, i.length)), + (e[i] = M(t.dataset[n])); + } + return e; + }, + getDataAttribute: (t, e) => M(t.getAttribute(`data-bs-${j(e)}`)), + }; + class H { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return t; + } + _mergeConfigObj(t, e) { + const i = o(e) ? F.getDataAttribute(e, "config") : {}; + return { + ...this.constructor.Default, + ...("object" == typeof i ? i : {}), + ...(o(e) ? F.getDataAttributes(e) : {}), + ...("object" == typeof t ? t : {}), + }; + } + _typeCheckConfig(t, e = this.constructor.DefaultType) { + for (const [n, s] of Object.entries(e)) { + const e = t[n], + r = o(e) + ? "element" + : null == (i = e) + ? `${i}` + : Object.prototype.toString + .call(i) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(s).test(r)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".` + ); + } + var i; + } + } + class W extends H { + constructor(t, i) { + super(), + (t = r(t)) && + ((this._element = t), + (this._config = this._getConfig(i)), + e.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + e.remove(this._element, this.constructor.DATA_KEY), + N.off(this._element, this.constructor.EVENT_KEY); + for (const t of Object.getOwnPropertyNames(this)) this[t] = null; + } + _queueCallback(t, e, i = !0) { + _(t, e, i); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t, this._element)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + static getInstance(t) { + return e.get(r(t), this.DATA_KEY); + } + static getOrCreateInstance(t, e = {}) { + return ( + this.getInstance(t) || + new this(t, "object" == typeof e ? e : null) + ); + } + static get VERSION() { + return "5.3.2"; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(t) { + return `${t}${this.EVENT_KEY}`; + } + } + const B = (t) => { + let e = t.getAttribute("data-bs-target"); + if (!e || "#" === e) { + let i = t.getAttribute("href"); + if (!i || (!i.includes("#") && !i.startsWith("."))) return null; + i.includes("#") && + !i.startsWith("#") && + (i = `#${i.split("#")[1]}`), + (e = i && "#" !== i ? n(i.trim()) : null); + } + return e; + }, + z = { + find: (t, e = document.documentElement) => + [].concat(...Element.prototype.querySelectorAll.call(e, t)), + findOne: (t, e = document.documentElement) => + Element.prototype.querySelector.call(e, t), + children: (t, e) => + [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const i = []; + let n = t.parentNode.closest(e); + for (; n; ) i.push(n), (n = n.parentNode.closest(e)); + return i; + }, + prev(t, e) { + let i = t.previousElementSibling; + for (; i; ) { + if (i.matches(e)) return [i]; + i = i.previousElementSibling; + } + return []; + }, + next(t, e) { + let i = t.nextElementSibling; + for (; i; ) { + if (i.matches(e)) return [i]; + i = i.nextElementSibling; + } + return []; + }, + focusableChildren(t) { + const e = [ + "a", + "button", + "input", + "textarea", + "select", + "details", + "[tabindex]", + '[contenteditable="true"]', + ] + .map((t) => `${t}:not([tabindex^="-"])`) + .join(","); + return this.find(e, t).filter((t) => !l(t) && a(t)); + }, + getSelectorFromElement(t) { + const e = B(t); + return e && z.findOne(e) ? e : null; + }, + getElementFromSelector(t) { + const e = B(t); + return e ? z.findOne(e) : null; + }, + getMultipleElementsFromSelector(t) { + const e = B(t); + return e ? z.find(e) : []; + }, + }, + R = (t, e = "hide") => { + const i = `click.dismiss${t.EVENT_KEY}`, + n = t.NAME; + N.on(document, i, `[data-bs-dismiss="${n}"]`, function (i) { + if ( + (["A", "AREA"].includes(this.tagName) && i.preventDefault(), + l(this)) + ) + return; + const s = + z.getElementFromSelector(this) || this.closest(`.${n}`); + t.getOrCreateInstance(s)[e](); + }); + }, + q = ".bs.alert", + V = `close${q}`, + K = `closed${q}`; + class Q extends W { + static get NAME() { + return "alert"; + } + close() { + if (N.trigger(this._element, V).defaultPrevented) return; + this._element.classList.remove("show"); + const t = this._element.classList.contains("fade"); + this._queueCallback(() => this._destroyElement(), this._element, t); + } + _destroyElement() { + this._element.remove(), N.trigger(this._element, K), this.dispose(); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Q.getOrCreateInstance(this); + if ("string" == typeof t) { + if ( + void 0 === e[t] || + t.startsWith("_") || + "constructor" === t + ) + throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + R(Q, "close"), m(Q); + const X = '[data-bs-toggle="button"]'; + class Y extends W { + static get NAME() { + return "button"; + } + toggle() { + this._element.setAttribute( + "aria-pressed", + this._element.classList.toggle("active") + ); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Y.getOrCreateInstance(this); + "toggle" === t && e[t](); + }); + } + } + N.on(document, "click.bs.button.data-api", X, (t) => { + t.preventDefault(); + const e = t.target.closest(X); + Y.getOrCreateInstance(e).toggle(); + }), + m(Y); + const U = ".bs.swipe", + G = `touchstart${U}`, + J = `touchmove${U}`, + Z = `touchend${U}`, + tt = `pointerdown${U}`, + et = `pointerup${U}`, + it = { endCallback: null, leftCallback: null, rightCallback: null }, + nt = { + endCallback: "(function|null)", + leftCallback: "(function|null)", + rightCallback: "(function|null)", + }; + class st extends H { + constructor(t, e) { + super(), + (this._element = t), + t && + st.isSupported() && + ((this._config = this._getConfig(e)), + (this._deltaX = 0), + (this._supportPointerEvents = Boolean(window.PointerEvent)), + this._initEvents()); + } + static get Default() { + return it; + } + static get DefaultType() { + return nt; + } + static get NAME() { + return "swipe"; + } + dispose() { + N.off(this._element, U); + } + _start(t) { + this._supportPointerEvents + ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX) + : (this._deltaX = t.touches[0].clientX); + } + _end(t) { + this._eventIsPointerPenTouch(t) && + (this._deltaX = t.clientX - this._deltaX), + this._handleSwipe(), + g(this._config.endCallback); + } + _move(t) { + this._deltaX = + t.touches && t.touches.length > 1 + ? 0 + : t.touches[0].clientX - this._deltaX; + } + _handleSwipe() { + const t = Math.abs(this._deltaX); + if (t <= 40) return; + const e = t / this._deltaX; + (this._deltaX = 0), + e && + g( + e > 0 + ? this._config.rightCallback + : this._config.leftCallback + ); + } + _initEvents() { + this._supportPointerEvents + ? (N.on(this._element, tt, (t) => this._start(t)), + N.on(this._element, et, (t) => this._end(t)), + this._element.classList.add("pointer-event")) + : (N.on(this._element, G, (t) => this._start(t)), + N.on(this._element, J, (t) => this._move(t)), + N.on(this._element, Z, (t) => this._end(t))); + } + _eventIsPointerPenTouch(t) { + return ( + this._supportPointerEvents && + ("pen" === t.pointerType || "touch" === t.pointerType) + ); + } + static isSupported() { + return ( + "ontouchstart" in document.documentElement || + navigator.maxTouchPoints > 0 + ); + } + } + const ot = ".bs.carousel", + rt = ".data-api", + at = "next", + lt = "prev", + ct = "left", + ht = "right", + dt = `slide${ot}`, + ut = `slid${ot}`, + ft = `keydown${ot}`, + pt = `mouseenter${ot}`, + mt = `mouseleave${ot}`, + gt = `dragstart${ot}`, + _t = `load${ot}${rt}`, + bt = `click${ot}${rt}`, + vt = "carousel", + yt = "active", + wt = ".active", + At = ".carousel-item", + Et = wt + At, + Tt = { ArrowLeft: ht, ArrowRight: ct }, + Ct = { + interval: 5e3, + keyboard: !0, + pause: "hover", + ride: !1, + touch: !0, + wrap: !0, + }, + Ot = { + interval: "(number|boolean)", + keyboard: "boolean", + pause: "(string|boolean)", + ride: "(boolean|string)", + touch: "boolean", + wrap: "boolean", + }; + class xt extends W { + constructor(t, e) { + super(t, e), + (this._interval = null), + (this._activeElement = null), + (this._isSliding = !1), + (this.touchTimeout = null), + (this._swipeHelper = null), + (this._indicatorsElement = z.findOne( + ".carousel-indicators", + this._element + )), + this._addEventListeners(), + this._config.ride === vt && this.cycle(); + } + static get Default() { + return Ct; + } + static get DefaultType() { + return Ot; + } + static get NAME() { + return "carousel"; + } + next() { + this._slide(at); + } + nextWhenVisible() { + !document.hidden && a(this._element) && this.next(); + } + prev() { + this._slide(lt); + } + pause() { + this._isSliding && s(this._element), this._clearInterval(); + } + cycle() { + this._clearInterval(), + this._updateInterval(), + (this._interval = setInterval( + () => this.nextWhenVisible(), + this._config.interval + )); + } + _maybeEnableCycle() { + this._config.ride && + (this._isSliding + ? N.one(this._element, ut, () => this.cycle()) + : this.cycle()); + } + to(t) { + const e = this._getItems(); + if (t > e.length - 1 || t < 0) return; + if (this._isSliding) + return void N.one(this._element, ut, () => this.to(t)); + const i = this._getItemIndex(this._getActive()); + if (i === t) return; + const n = t > i ? at : lt; + this._slide(n, e[t]); + } + dispose() { + this._swipeHelper && this._swipeHelper.dispose(), super.dispose(); + } + _configAfterMerge(t) { + return (t.defaultInterval = t.interval), t; + } + _addEventListeners() { + this._config.keyboard && + N.on(this._element, ft, (t) => this._keydown(t)), + "hover" === this._config.pause && + (N.on(this._element, pt, () => this.pause()), + N.on(this._element, mt, () => this._maybeEnableCycle())), + this._config.touch && + st.isSupported() && + this._addTouchEventListeners(); + } + _addTouchEventListeners() { + for (const t of z.find(".carousel-item img", this._element)) + N.on(t, gt, (t) => t.preventDefault()); + const t = { + leftCallback: () => this._slide(this._directionToOrder(ct)), + rightCallback: () => this._slide(this._directionToOrder(ht)), + endCallback: () => { + "hover" === this._config.pause && + (this.pause(), + this.touchTimeout && clearTimeout(this.touchTimeout), + (this.touchTimeout = setTimeout( + () => this._maybeEnableCycle(), + 500 + this._config.interval + ))); + }, + }; + this._swipeHelper = new st(this._element, t); + } + _keydown(t) { + if (/input|textarea/i.test(t.target.tagName)) return; + const e = Tt[t.key]; + e && (t.preventDefault(), this._slide(this._directionToOrder(e))); + } + _getItemIndex(t) { + return this._getItems().indexOf(t); + } + _setActiveIndicatorElement(t) { + if (!this._indicatorsElement) return; + const e = z.findOne(wt, this._indicatorsElement); + e.classList.remove(yt), e.removeAttribute("aria-current"); + const i = z.findOne( + `[data-bs-slide-to="${t}"]`, + this._indicatorsElement + ); + i && (i.classList.add(yt), i.setAttribute("aria-current", "true")); + } + _updateInterval() { + const t = this._activeElement || this._getActive(); + if (!t) return; + const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10); + this._config.interval = e || this._config.defaultInterval; + } + _slide(t, e = null) { + if (this._isSliding) return; + const i = this._getActive(), + n = t === at, + s = e || b(this._getItems(), i, n, this._config.wrap); + if (s === i) return; + const o = this._getItemIndex(s), + r = (e) => + N.trigger(this._element, e, { + relatedTarget: s, + direction: this._orderToDirection(t), + from: this._getItemIndex(i), + to: o, + }); + if (r(dt).defaultPrevented) return; + if (!i || !s) return; + const a = Boolean(this._interval); + this.pause(), + (this._isSliding = !0), + this._setActiveIndicatorElement(o), + (this._activeElement = s); + const l = n ? "carousel-item-start" : "carousel-item-end", + c = n ? "carousel-item-next" : "carousel-item-prev"; + s.classList.add(c), + d(s), + i.classList.add(l), + s.classList.add(l), + this._queueCallback( + () => { + s.classList.remove(l, c), + s.classList.add(yt), + i.classList.remove(yt, c, l), + (this._isSliding = !1), + r(ut); + }, + i, + this._isAnimated() + ), + a && this.cycle(); + } + _isAnimated() { + return this._element.classList.contains("slide"); + } + _getActive() { + return z.findOne(Et, this._element); + } + _getItems() { + return z.find(At, this._element); + } + _clearInterval() { + this._interval && + (clearInterval(this._interval), (this._interval = null)); + } + _directionToOrder(t) { + return p() ? (t === ct ? lt : at) : t === ct ? at : lt; + } + _orderToDirection(t) { + return p() ? (t === lt ? ct : ht) : t === lt ? ht : ct; + } + static jQueryInterface(t) { + return this.each(function () { + const e = xt.getOrCreateInstance(this, t); + if ("number" != typeof t) { + if ("string" == typeof t) { + if ( + void 0 === e[t] || + t.startsWith("_") || + "constructor" === t + ) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + } else e.to(t); + }); + } + } + N.on(document, bt, "[data-bs-slide], [data-bs-slide-to]", function (t) { + const e = z.getElementFromSelector(this); + if (!e || !e.classList.contains(vt)) return; + t.preventDefault(); + const i = xt.getOrCreateInstance(e), + n = this.getAttribute("data-bs-slide-to"); + return n + ? (i.to(n), void i._maybeEnableCycle()) + : "next" === F.getDataAttribute(this, "slide") + ? (i.next(), void i._maybeEnableCycle()) + : (i.prev(), void i._maybeEnableCycle()); + }), + N.on(window, _t, () => { + const t = z.find('[data-bs-ride="carousel"]'); + for (const e of t) xt.getOrCreateInstance(e); + }), + m(xt); + const kt = ".bs.collapse", + Lt = `show${kt}`, + St = `shown${kt}`, + Dt = `hide${kt}`, + $t = `hidden${kt}`, + It = `click${kt}.data-api`, + Nt = "show", + Pt = "collapse", + Mt = "collapsing", + jt = `:scope .${Pt} .${Pt}`, + Ft = '[data-bs-toggle="collapse"]', + Ht = { parent: null, toggle: !0 }, + Wt = { parent: "(null|element)", toggle: "boolean" }; + class Bt extends W { + constructor(t, e) { + super(t, e), + (this._isTransitioning = !1), + (this._triggerArray = []); + const i = z.find(Ft); + for (const t of i) { + const e = z.getSelectorFromElement(t), + i = z.find(e).filter((t) => t === this._element); + null !== e && i.length && this._triggerArray.push(t); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass( + this._triggerArray, + this._isShown() + ), + this._config.toggle && this.toggle(); + } + static get Default() { + return Ht; + } + static get DefaultType() { + return Wt; + } + static get NAME() { + return "collapse"; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let t = []; + if ( + (this._config.parent && + (t = this._getFirstLevelChildren( + ".collapse.show, .collapse.collapsing" + ) + .filter((t) => t !== this._element) + .map((t) => Bt.getOrCreateInstance(t, { toggle: !1 }))), + t.length && t[0]._isTransitioning) + ) + return; + if (N.trigger(this._element, Lt).defaultPrevented) return; + for (const e of t) e.hide(); + const e = this._getDimension(); + this._element.classList.remove(Pt), + this._element.classList.add(Mt), + (this._element.style[e] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const i = `scroll${e[0].toUpperCase() + e.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Mt), + this._element.classList.add(Pt, Nt), + (this._element.style[e] = ""), + N.trigger(this._element, St); + }, + this._element, + !0 + ), + (this._element.style[e] = `${this._element[i]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (N.trigger(this._element, Dt).defaultPrevented) return; + const t = this._getDimension(); + (this._element.style[t] = `${ + this._element.getBoundingClientRect()[t] + }px`), + d(this._element), + this._element.classList.add(Mt), + this._element.classList.remove(Pt, Nt); + for (const t of this._triggerArray) { + const e = z.getElementFromSelector(t); + e && + !this._isShown(e) && + this._addAriaAndCollapsedClass([t], !1); + } + (this._isTransitioning = !0), + (this._element.style[t] = ""), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Mt), + this._element.classList.add(Pt), + N.trigger(this._element, $t); + }, + this._element, + !0 + ); + } + _isShown(t = this._element) { + return t.classList.contains(Nt); + } + _configAfterMerge(t) { + return (t.toggle = Boolean(t.toggle)), (t.parent = r(t.parent)), t; + } + _getDimension() { + return this._element.classList.contains("collapse-horizontal") + ? "width" + : "height"; + } + _initializeChildren() { + if (!this._config.parent) return; + const t = this._getFirstLevelChildren(Ft); + for (const e of t) { + const t = z.getElementFromSelector(e); + t && this._addAriaAndCollapsedClass([e], this._isShown(t)); + } + } + _getFirstLevelChildren(t) { + const e = z.find(jt, this._config.parent); + return z.find(t, this._config.parent).filter((t) => !e.includes(t)); + } + _addAriaAndCollapsedClass(t, e) { + if (t.length) + for (const i of t) + i.classList.toggle("collapsed", !e), + i.setAttribute("aria-expanded", e); + } + static jQueryInterface(t) { + const e = {}; + return ( + "string" == typeof t && /show|hide/.test(t) && (e.toggle = !1), + this.each(function () { + const i = Bt.getOrCreateInstance(this, e); + if ("string" == typeof t) { + if (void 0 === i[t]) + throw new TypeError(`No method named "${t}"`); + i[t](); + } + }) + ); + } + } + N.on(document, It, Ft, function (t) { + ("A" === t.target.tagName || + (t.delegateTarget && "A" === t.delegateTarget.tagName)) && + t.preventDefault(); + for (const t of z.getMultipleElementsFromSelector(this)) + Bt.getOrCreateInstance(t, { toggle: !1 }).toggle(); + }), + m(Bt); + var zt = "top", + Rt = "bottom", + qt = "right", + Vt = "left", + Kt = "auto", + Qt = [zt, Rt, qt, Vt], + Xt = "start", + Yt = "end", + Ut = "clippingParents", + Gt = "viewport", + Jt = "popper", + Zt = "reference", + te = Qt.reduce(function (t, e) { + return t.concat([e + "-" + Xt, e + "-" + Yt]); + }, []), + ee = [].concat(Qt, [Kt]).reduce(function (t, e) { + return t.concat([e, e + "-" + Xt, e + "-" + Yt]); + }, []), + ie = "beforeRead", + ne = "read", + se = "afterRead", + oe = "beforeMain", + re = "main", + ae = "afterMain", + le = "beforeWrite", + ce = "write", + he = "afterWrite", + de = [ie, ne, se, oe, re, ae, le, ce, he]; + function ue(t) { + return t ? (t.nodeName || "").toLowerCase() : null; + } + function fe(t) { + if (null == t) return window; + if ("[object Window]" !== t.toString()) { + var e = t.ownerDocument; + return (e && e.defaultView) || window; + } + return t; + } + function pe(t) { + return t instanceof fe(t).Element || t instanceof Element; + } + function me(t) { + return t instanceof fe(t).HTMLElement || t instanceof HTMLElement; + } + function ge(t) { + return ( + "undefined" != typeof ShadowRoot && + (t instanceof fe(t).ShadowRoot || t instanceof ShadowRoot) + ); + } + const _e = { + name: "applyStyles", + enabled: !0, + phase: "write", + fn: function (t) { + var e = t.state; + Object.keys(e.elements).forEach(function (t) { + var i = e.styles[t] || {}, + n = e.attributes[t] || {}, + s = e.elements[t]; + me(s) && + ue(s) && + (Object.assign(s.style, i), + Object.keys(n).forEach(function (t) { + var e = n[t]; + !1 === e + ? s.removeAttribute(t) + : s.setAttribute(t, !0 === e ? "" : e); + })); + }); + }, + effect: function (t) { + var e = t.state, + i = { + popper: { + position: e.options.strategy, + left: "0", + top: "0", + margin: "0", + }, + arrow: { position: "absolute" }, + reference: {}, + }; + return ( + Object.assign(e.elements.popper.style, i.popper), + (e.styles = i), + e.elements.arrow && + Object.assign(e.elements.arrow.style, i.arrow), + function () { + Object.keys(e.elements).forEach(function (t) { + var n = e.elements[t], + s = e.attributes[t] || {}, + o = Object.keys( + e.styles.hasOwnProperty(t) ? e.styles[t] : i[t] + ).reduce(function (t, e) { + return (t[e] = ""), t; + }, {}); + me(n) && + ue(n) && + (Object.assign(n.style, o), + Object.keys(s).forEach(function (t) { + n.removeAttribute(t); + })); + }); + } + ); + }, + requires: ["computeStyles"], + }; + function be(t) { + return t.split("-")[0]; + } + var ve = Math.max, + ye = Math.min, + we = Math.round; + function Ae() { + var t = navigator.userAgentData; + return null != t && t.brands && Array.isArray(t.brands) + ? t.brands + .map(function (t) { + return t.brand + "/" + t.version; + }) + .join(" ") + : navigator.userAgent; + } + function Ee() { + return !/^((?!chrome|android).)*safari/i.test(Ae()); + } + function Te(t, e, i) { + void 0 === e && (e = !1), void 0 === i && (i = !1); + var n = t.getBoundingClientRect(), + s = 1, + o = 1; + e && + me(t) && + ((s = (t.offsetWidth > 0 && we(n.width) / t.offsetWidth) || 1), + (o = (t.offsetHeight > 0 && we(n.height) / t.offsetHeight) || 1)); + var r = (pe(t) ? fe(t) : window).visualViewport, + a = !Ee() && i, + l = (n.left + (a && r ? r.offsetLeft : 0)) / s, + c = (n.top + (a && r ? r.offsetTop : 0)) / o, + h = n.width / s, + d = n.height / o; + return { + width: h, + height: d, + top: c, + right: l + h, + bottom: c + d, + left: l, + x: l, + y: c, + }; + } + function Ce(t) { + var e = Te(t), + i = t.offsetWidth, + n = t.offsetHeight; + return ( + Math.abs(e.width - i) <= 1 && (i = e.width), + Math.abs(e.height - n) <= 1 && (n = e.height), + { x: t.offsetLeft, y: t.offsetTop, width: i, height: n } + ); + } + function Oe(t, e) { + var i = e.getRootNode && e.getRootNode(); + if (t.contains(e)) return !0; + if (i && ge(i)) { + var n = e; + do { + if (n && t.isSameNode(n)) return !0; + n = n.parentNode || n.host; + } while (n); + } + return !1; + } + function xe(t) { + return fe(t).getComputedStyle(t); + } + function ke(t) { + return ["table", "td", "th"].indexOf(ue(t)) >= 0; + } + function Le(t) { + return ( + (pe(t) ? t.ownerDocument : t.document) || window.document + ).documentElement; + } + function Se(t) { + return "html" === ue(t) + ? t + : t.assignedSlot || + t.parentNode || + (ge(t) ? t.host : null) || + Le(t); + } + function De(t) { + return me(t) && "fixed" !== xe(t).position ? t.offsetParent : null; + } + function $e(t) { + for ( + var e = fe(t), i = De(t); + i && ke(i) && "static" === xe(i).position; + + ) + i = De(i); + return i && + ("html" === ue(i) || + ("body" === ue(i) && "static" === xe(i).position)) + ? e + : i || + (function (t) { + var e = /firefox/i.test(Ae()); + if ( + /Trident/i.test(Ae()) && + me(t) && + "fixed" === xe(t).position + ) + return null; + var i = Se(t); + for ( + ge(i) && (i = i.host); + me(i) && ["html", "body"].indexOf(ue(i)) < 0; + + ) { + var n = xe(i); + if ( + "none" !== n.transform || + "none" !== n.perspective || + "paint" === n.contain || + -1 !== + ["transform", "perspective"].indexOf( + n.willChange + ) || + (e && "filter" === n.willChange) || + (e && n.filter && "none" !== n.filter) + ) + return i; + i = i.parentNode; + } + return null; + })(t) || + e; + } + function Ie(t) { + return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"; + } + function Ne(t, e, i) { + return ve(t, ye(e, i)); + } + function Pe(t) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t); + } + function Me(t, e) { + return e.reduce(function (e, i) { + return (e[i] = t), e; + }, {}); + } + const je = { + name: "arrow", + enabled: !0, + phase: "main", + fn: function (t) { + var e, + i = t.state, + n = t.name, + s = t.options, + o = i.elements.arrow, + r = i.modifiersData.popperOffsets, + a = be(i.placement), + l = Ie(a), + c = [Vt, qt].indexOf(a) >= 0 ? "height" : "width"; + if (o && r) { + var h = (function (t, e) { + return Pe( + "number" != + typeof (t = + "function" == typeof t + ? t( + Object.assign({}, e.rects, { + placement: e.placement, + }) + ) + : t) + ? t + : Me(t, Qt) + ); + })(s.padding, i), + d = Ce(o), + u = "y" === l ? zt : Vt, + f = "y" === l ? Rt : qt, + p = + i.rects.reference[c] + + i.rects.reference[l] - + r[l] - + i.rects.popper[c], + m = r[l] - i.rects.reference[l], + g = $e(o), + _ = g + ? "y" === l + ? g.clientHeight || 0 + : g.clientWidth || 0 + : 0, + b = p / 2 - m / 2, + v = h[u], + y = _ - d[c] - h[f], + w = _ / 2 - d[c] / 2 + b, + A = Ne(v, w, y), + E = l; + i.modifiersData[n] = + (((e = {})[E] = A), (e.centerOffset = A - w), e); + } + }, + effect: function (t) { + var e = t.state, + i = t.options.element, + n = void 0 === i ? "[data-popper-arrow]" : i; + null != n && + ("string" != typeof n || + (n = e.elements.popper.querySelector(n))) && + Oe(e.elements.popper, n) && + (e.elements.arrow = n); + }, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"], + }; + function Fe(t) { + return t.split("-")[1]; + } + var He = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; + function We(t) { + var e, + i = t.popper, + n = t.popperRect, + s = t.placement, + o = t.variation, + r = t.offsets, + a = t.position, + l = t.gpuAcceleration, + c = t.adaptive, + h = t.roundOffsets, + d = t.isFixed, + u = r.x, + f = void 0 === u ? 0 : u, + p = r.y, + m = void 0 === p ? 0 : p, + g = "function" == typeof h ? h({ x: f, y: m }) : { x: f, y: m }; + (f = g.x), (m = g.y); + var _ = r.hasOwnProperty("x"), + b = r.hasOwnProperty("y"), + v = Vt, + y = zt, + w = window; + if (c) { + var A = $e(i), + E = "clientHeight", + T = "clientWidth"; + A === fe(i) && + "static" !== xe((A = Le(i))).position && + "absolute" === a && + ((E = "scrollHeight"), (T = "scrollWidth")), + (s === zt || ((s === Vt || s === qt) && o === Yt)) && + ((y = Rt), + (m -= + (d && A === w && w.visualViewport + ? w.visualViewport.height + : A[E]) - n.height), + (m *= l ? 1 : -1)), + (s !== Vt && ((s !== zt && s !== Rt) || o !== Yt)) || + ((v = qt), + (f -= + (d && A === w && w.visualViewport + ? w.visualViewport.width + : A[T]) - n.width), + (f *= l ? 1 : -1)); + } + var C, + O = Object.assign({ position: a }, c && He), + x = + !0 === h + ? (function (t, e) { + var i = t.x, + n = t.y, + s = e.devicePixelRatio || 1; + return { + x: we(i * s) / s || 0, + y: we(n * s) / s || 0, + }; + })({ x: f, y: m }, fe(i)) + : { x: f, y: m }; + return ( + (f = x.x), + (m = x.y), + l + ? Object.assign( + {}, + O, + (((C = {})[y] = b ? "0" : ""), + (C[v] = _ ? "0" : ""), + (C.transform = + (w.devicePixelRatio || 1) <= 1 + ? "translate(" + f + "px, " + m + "px)" + : "translate3d(" + f + "px, " + m + "px, 0)"), + C) + ) + : Object.assign( + {}, + O, + (((e = {})[y] = b ? m + "px" : ""), + (e[v] = _ ? f + "px" : ""), + (e.transform = ""), + e) + ) + ); + } + const Be = { + name: "computeStyles", + enabled: !0, + phase: "beforeWrite", + fn: function (t) { + var e = t.state, + i = t.options, + n = i.gpuAcceleration, + s = void 0 === n || n, + o = i.adaptive, + r = void 0 === o || o, + a = i.roundOffsets, + l = void 0 === a || a, + c = { + placement: be(e.placement), + variation: Fe(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: s, + isFixed: "fixed" === e.options.strategy, + }; + null != e.modifiersData.popperOffsets && + (e.styles.popper = Object.assign( + {}, + e.styles.popper, + We( + Object.assign({}, c, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: r, + roundOffsets: l, + }) + ) + )), + null != e.modifiersData.arrow && + (e.styles.arrow = Object.assign( + {}, + e.styles.arrow, + We( + Object.assign({}, c, { + offsets: e.modifiersData.arrow, + position: "absolute", + adaptive: !1, + roundOffsets: l, + }) + ) + )), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + "data-popper-placement": e.placement, + })); + }, + data: {}, + }; + var ze = { passive: !0 }; + const Re = { + name: "eventListeners", + enabled: !0, + phase: "write", + fn: function () {}, + effect: function (t) { + var e = t.state, + i = t.instance, + n = t.options, + s = n.scroll, + o = void 0 === s || s, + r = n.resize, + a = void 0 === r || r, + l = fe(e.elements.popper), + c = [].concat( + e.scrollParents.reference, + e.scrollParents.popper + ); + return ( + o && + c.forEach(function (t) { + t.addEventListener("scroll", i.update, ze); + }), + a && l.addEventListener("resize", i.update, ze), + function () { + o && + c.forEach(function (t) { + t.removeEventListener("scroll", i.update, ze); + }), + a && l.removeEventListener("resize", i.update, ze); + } + ); + }, + data: {}, + }; + var qe = { left: "right", right: "left", bottom: "top", top: "bottom" }; + function Ve(t) { + return t.replace(/left|right|bottom|top/g, function (t) { + return qe[t]; + }); + } + var Ke = { start: "end", end: "start" }; + function Qe(t) { + return t.replace(/start|end/g, function (t) { + return Ke[t]; + }); + } + function Xe(t) { + var e = fe(t); + return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset }; + } + function Ye(t) { + return Te(Le(t)).left + Xe(t).scrollLeft; + } + function Ue(t) { + var e = xe(t), + i = e.overflow, + n = e.overflowX, + s = e.overflowY; + return /auto|scroll|overlay|hidden/.test(i + s + n); + } + function Ge(t) { + return ["html", "body", "#document"].indexOf(ue(t)) >= 0 + ? t.ownerDocument.body + : me(t) && Ue(t) + ? t + : Ge(Se(t)); + } + function Je(t, e) { + var i; + void 0 === e && (e = []); + var n = Ge(t), + s = n === (null == (i = t.ownerDocument) ? void 0 : i.body), + o = fe(n), + r = s ? [o].concat(o.visualViewport || [], Ue(n) ? n : []) : n, + a = e.concat(r); + return s ? a : a.concat(Je(Se(r))); + } + function Ze(t) { + return Object.assign({}, t, { + left: t.x, + top: t.y, + right: t.x + t.width, + bottom: t.y + t.height, + }); + } + function ti(t, e, i) { + return e === Gt + ? Ze( + (function (t, e) { + var i = fe(t), + n = Le(t), + s = i.visualViewport, + o = n.clientWidth, + r = n.clientHeight, + a = 0, + l = 0; + if (s) { + (o = s.width), (r = s.height); + var c = Ee(); + (c || (!c && "fixed" === e)) && + ((a = s.offsetLeft), (l = s.offsetTop)); + } + return { width: o, height: r, x: a + Ye(t), y: l }; + })(t, i) + ) + : pe(e) + ? (function (t, e) { + var i = Te(t, !1, "fixed" === e); + return ( + (i.top = i.top + t.clientTop), + (i.left = i.left + t.clientLeft), + (i.bottom = i.top + t.clientHeight), + (i.right = i.left + t.clientWidth), + (i.width = t.clientWidth), + (i.height = t.clientHeight), + (i.x = i.left), + (i.y = i.top), + i + ); + })(e, i) + : Ze( + (function (t) { + var e, + i = Le(t), + n = Xe(t), + s = null == (e = t.ownerDocument) ? void 0 : e.body, + o = ve( + i.scrollWidth, + i.clientWidth, + s ? s.scrollWidth : 0, + s ? s.clientWidth : 0 + ), + r = ve( + i.scrollHeight, + i.clientHeight, + s ? s.scrollHeight : 0, + s ? s.clientHeight : 0 + ), + a = -n.scrollLeft + Ye(t), + l = -n.scrollTop; + return ( + "rtl" === xe(s || i).direction && + (a += + ve(i.clientWidth, s ? s.clientWidth : 0) - o), + { width: o, height: r, x: a, y: l } + ); + })(Le(t)) + ); + } + function ei(t) { + var e, + i = t.reference, + n = t.element, + s = t.placement, + o = s ? be(s) : null, + r = s ? Fe(s) : null, + a = i.x + i.width / 2 - n.width / 2, + l = i.y + i.height / 2 - n.height / 2; + switch (o) { + case zt: + e = { x: a, y: i.y - n.height }; + break; + case Rt: + e = { x: a, y: i.y + i.height }; + break; + case qt: + e = { x: i.x + i.width, y: l }; + break; + case Vt: + e = { x: i.x - n.width, y: l }; + break; + default: + e = { x: i.x, y: i.y }; + } + var c = o ? Ie(o) : null; + if (null != c) { + var h = "y" === c ? "height" : "width"; + switch (r) { + case Xt: + e[c] = e[c] - (i[h] / 2 - n[h] / 2); + break; + case Yt: + e[c] = e[c] + (i[h] / 2 - n[h] / 2); + } + } + return e; + } + function ii(t, e) { + void 0 === e && (e = {}); + var i = e, + n = i.placement, + s = void 0 === n ? t.placement : n, + o = i.strategy, + r = void 0 === o ? t.strategy : o, + a = i.boundary, + l = void 0 === a ? Ut : a, + c = i.rootBoundary, + h = void 0 === c ? Gt : c, + d = i.elementContext, + u = void 0 === d ? Jt : d, + f = i.altBoundary, + p = void 0 !== f && f, + m = i.padding, + g = void 0 === m ? 0 : m, + _ = Pe("number" != typeof g ? g : Me(g, Qt)), + b = u === Jt ? Zt : Jt, + v = t.rects.popper, + y = t.elements[p ? b : u], + w = (function (t, e, i, n) { + var s = + "clippingParents" === e + ? (function (t) { + var e = Je(Se(t)), + i = + ["absolute", "fixed"].indexOf( + xe(t).position + ) >= 0 && me(t) + ? $e(t) + : t; + return pe(i) + ? e.filter(function (t) { + return ( + pe(t) && + Oe(t, i) && + "body" !== ue(t) + ); + }) + : []; + })(t) + : [].concat(e), + o = [].concat(s, [i]), + r = o[0], + a = o.reduce(function (e, i) { + var s = ti(t, i, n); + return ( + (e.top = ve(s.top, e.top)), + (e.right = ye(s.right, e.right)), + (e.bottom = ye(s.bottom, e.bottom)), + (e.left = ve(s.left, e.left)), + e + ); + }, ti(t, r, n)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + })(pe(y) ? y : y.contextElement || Le(t.elements.popper), l, h, r), + A = Te(t.elements.reference), + E = ei({ + reference: A, + element: v, + strategy: "absolute", + placement: s, + }), + T = Ze(Object.assign({}, v, E)), + C = u === Jt ? T : A, + O = { + top: w.top - C.top + _.top, + bottom: C.bottom - w.bottom + _.bottom, + left: w.left - C.left + _.left, + right: C.right - w.right + _.right, + }, + x = t.modifiersData.offset; + if (u === Jt && x) { + var k = x[s]; + Object.keys(O).forEach(function (t) { + var e = [qt, Rt].indexOf(t) >= 0 ? 1 : -1, + i = [zt, Rt].indexOf(t) >= 0 ? "y" : "x"; + O[t] += k[i] * e; + }); + } + return O; + } + function ni(t, e) { + void 0 === e && (e = {}); + var i = e, + n = i.placement, + s = i.boundary, + o = i.rootBoundary, + r = i.padding, + a = i.flipVariations, + l = i.allowedAutoPlacements, + c = void 0 === l ? ee : l, + h = Fe(n), + d = h + ? a + ? te + : te.filter(function (t) { + return Fe(t) === h; + }) + : Qt, + u = d.filter(function (t) { + return c.indexOf(t) >= 0; + }); + 0 === u.length && (u = d); + var f = u.reduce(function (e, i) { + return ( + (e[i] = ii(t, { + placement: i, + boundary: s, + rootBoundary: o, + padding: r, + })[be(i)]), + e + ); + }, {}); + return Object.keys(f).sort(function (t, e) { + return f[t] - f[e]; + }); + } + const si = { + name: "flip", + enabled: !0, + phase: "main", + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name; + if (!e.modifiersData[n]._skip) { + for ( + var s = i.mainAxis, + o = void 0 === s || s, + r = i.altAxis, + a = void 0 === r || r, + l = i.fallbackPlacements, + c = i.padding, + h = i.boundary, + d = i.rootBoundary, + u = i.altBoundary, + f = i.flipVariations, + p = void 0 === f || f, + m = i.allowedAutoPlacements, + g = e.options.placement, + _ = be(g), + b = + l || + (_ !== g && p + ? (function (t) { + if (be(t) === Kt) return []; + var e = Ve(t); + return [Qe(t), e, Qe(e)]; + })(g) + : [Ve(g)]), + v = [g].concat(b).reduce(function (t, i) { + return t.concat( + be(i) === Kt + ? ni(e, { + placement: i, + boundary: h, + rootBoundary: d, + padding: c, + flipVariations: p, + allowedAutoPlacements: m, + }) + : i + ); + }, []), + y = e.rects.reference, + w = e.rects.popper, + A = new Map(), + E = !0, + T = v[0], + C = 0; + C < v.length; + C++ + ) { + var O = v[C], + x = be(O), + k = Fe(O) === Xt, + L = [zt, Rt].indexOf(x) >= 0, + S = L ? "width" : "height", + D = ii(e, { + placement: O, + boundary: h, + rootBoundary: d, + altBoundary: u, + padding: c, + }), + $ = L ? (k ? qt : Vt) : k ? Rt : zt; + y[S] > w[S] && ($ = Ve($)); + var I = Ve($), + N = []; + if ( + (o && N.push(D[x] <= 0), + a && N.push(D[$] <= 0, D[I] <= 0), + N.every(function (t) { + return t; + })) + ) { + (T = O), (E = !1); + break; + } + A.set(O, N); + } + if (E) + for ( + var P = function (t) { + var e = v.find(function (e) { + var i = A.get(e); + if (i) + return i + .slice(0, t) + .every(function (t) { + return t; + }); + }); + if (e) return (T = e), "break"; + }, + M = p ? 3 : 1; + M > 0 && "break" !== P(M); + M-- + ); + e.placement !== T && + ((e.modifiersData[n]._skip = !0), + (e.placement = T), + (e.reset = !0)); + } + }, + requiresIfExists: ["offset"], + data: { _skip: !1 }, + }; + function oi(t, e, i) { + return ( + void 0 === i && (i = { x: 0, y: 0 }), + { + top: t.top - e.height - i.y, + right: t.right - e.width + i.x, + bottom: t.bottom - e.height + i.y, + left: t.left - e.width - i.x, + } + ); + } + function ri(t) { + return [zt, qt, Rt, Vt].some(function (e) { + return t[e] >= 0; + }); + } + const ai = { + name: "hide", + enabled: !0, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: function (t) { + var e = t.state, + i = t.name, + n = e.rects.reference, + s = e.rects.popper, + o = e.modifiersData.preventOverflow, + r = ii(e, { elementContext: "reference" }), + a = ii(e, { altBoundary: !0 }), + l = oi(r, n), + c = oi(a, s, o), + h = ri(l), + d = ri(c); + (e.modifiersData[i] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: h, + hasPopperEscaped: d, + }), + (e.attributes.popper = Object.assign( + {}, + e.attributes.popper, + { + "data-popper-reference-hidden": h, + "data-popper-escaped": d, + } + )); + }, + }, + li = { + name: "offset", + enabled: !0, + phase: "main", + requires: ["popperOffsets"], + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name, + s = i.offset, + o = void 0 === s ? [0, 0] : s, + r = ee.reduce(function (t, i) { + return ( + (t[i] = (function (t, e, i) { + var n = be(t), + s = [Vt, zt].indexOf(n) >= 0 ? -1 : 1, + o = + "function" == typeof i + ? i( + Object.assign({}, e, { + placement: t, + }) + ) + : i, + r = o[0], + a = o[1]; + return ( + (r = r || 0), + (a = (a || 0) * s), + [Vt, qt].indexOf(n) >= 0 + ? { x: a, y: r } + : { x: r, y: a } + ); + })(i, e.rects, o)), + t + ); + }, {}), + a = r[e.placement], + l = a.x, + c = a.y; + null != e.modifiersData.popperOffsets && + ((e.modifiersData.popperOffsets.x += l), + (e.modifiersData.popperOffsets.y += c)), + (e.modifiersData[n] = r); + }, + }, + ci = { + name: "popperOffsets", + enabled: !0, + phase: "read", + fn: function (t) { + var e = t.state, + i = t.name; + e.modifiersData[i] = ei({ + reference: e.rects.reference, + element: e.rects.popper, + strategy: "absolute", + placement: e.placement, + }); + }, + data: {}, + }, + hi = { + name: "preventOverflow", + enabled: !0, + phase: "main", + fn: function (t) { + var e = t.state, + i = t.options, + n = t.name, + s = i.mainAxis, + o = void 0 === s || s, + r = i.altAxis, + a = void 0 !== r && r, + l = i.boundary, + c = i.rootBoundary, + h = i.altBoundary, + d = i.padding, + u = i.tether, + f = void 0 === u || u, + p = i.tetherOffset, + m = void 0 === p ? 0 : p, + g = ii(e, { + boundary: l, + rootBoundary: c, + padding: d, + altBoundary: h, + }), + _ = be(e.placement), + b = Fe(e.placement), + v = !b, + y = Ie(_), + w = "x" === y ? "y" : "x", + A = e.modifiersData.popperOffsets, + E = e.rects.reference, + T = e.rects.popper, + C = + "function" == typeof m + ? m( + Object.assign({}, e.rects, { + placement: e.placement, + }) + ) + : m, + O = + "number" == typeof C + ? { mainAxis: C, altAxis: C } + : Object.assign({ mainAxis: 0, altAxis: 0 }, C), + x = e.modifiersData.offset + ? e.modifiersData.offset[e.placement] + : null, + k = { x: 0, y: 0 }; + if (A) { + if (o) { + var L, + S = "y" === y ? zt : Vt, + D = "y" === y ? Rt : qt, + $ = "y" === y ? "height" : "width", + I = A[y], + N = I + g[S], + P = I - g[D], + M = f ? -T[$] / 2 : 0, + j = b === Xt ? E[$] : T[$], + F = b === Xt ? -T[$] : -E[$], + H = e.elements.arrow, + W = f && H ? Ce(H) : { width: 0, height: 0 }, + B = e.modifiersData["arrow#persistent"] + ? e.modifiersData["arrow#persistent"].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + z = B[S], + R = B[D], + q = Ne(0, E[$], W[$]), + V = v + ? E[$] / 2 - M - q - z - O.mainAxis + : j - q - z - O.mainAxis, + K = v + ? -E[$] / 2 + M + q + R + O.mainAxis + : F + q + R + O.mainAxis, + Q = e.elements.arrow && $e(e.elements.arrow), + X = Q + ? "y" === y + ? Q.clientTop || 0 + : Q.clientLeft || 0 + : 0, + Y = null != (L = null == x ? void 0 : x[y]) ? L : 0, + U = I + K - Y, + G = Ne( + f ? ye(N, I + V - Y - X) : N, + I, + f ? ve(P, U) : P + ); + (A[y] = G), (k[y] = G - I); + } + if (a) { + var J, + Z = "x" === y ? zt : Vt, + tt = "x" === y ? Rt : qt, + et = A[w], + it = "y" === w ? "height" : "width", + nt = et + g[Z], + st = et - g[tt], + ot = -1 !== [zt, Vt].indexOf(_), + rt = + null != (J = null == x ? void 0 : x[w]) ? J : 0, + at = ot ? nt : et - E[it] - T[it] - rt + O.altAxis, + lt = ot ? et + E[it] + T[it] - rt - O.altAxis : st, + ct = + f && ot + ? (function (t, e, i) { + var n = Ne(t, e, i); + return n > i ? i : n; + })(at, et, lt) + : Ne(f ? at : nt, et, f ? lt : st); + (A[w] = ct), (k[w] = ct - et); + } + e.modifiersData[n] = k; + } + }, + requiresIfExists: ["offset"], + }; + function di(t, e, i) { + void 0 === i && (i = !1); + var n, + s, + o = me(e), + r = + me(e) && + (function (t) { + var e = t.getBoundingClientRect(), + i = we(e.width) / t.offsetWidth || 1, + n = we(e.height) / t.offsetHeight || 1; + return 1 !== i || 1 !== n; + })(e), + a = Le(e), + l = Te(t, r, i), + c = { scrollLeft: 0, scrollTop: 0 }, + h = { x: 0, y: 0 }; + return ( + (o || (!o && !i)) && + (("body" !== ue(e) || Ue(a)) && + (c = + (n = e) !== fe(n) && me(n) + ? { + scrollLeft: (s = n).scrollLeft, + scrollTop: s.scrollTop, + } + : Xe(n)), + me(e) + ? (((h = Te(e, !0)).x += e.clientLeft), + (h.y += e.clientTop)) + : a && (h.x = Ye(a))), + { + x: l.left + c.scrollLeft - h.x, + y: l.top + c.scrollTop - h.y, + width: l.width, + height: l.height, + } + ); + } + function ui(t) { + var e = new Map(), + i = new Set(), + n = []; + function s(t) { + i.add(t.name), + [] + .concat(t.requires || [], t.requiresIfExists || []) + .forEach(function (t) { + if (!i.has(t)) { + var n = e.get(t); + n && s(n); + } + }), + n.push(t); + } + return ( + t.forEach(function (t) { + e.set(t.name, t); + }), + t.forEach(function (t) { + i.has(t.name) || s(t); + }), + n + ); + } + var fi = { placement: "bottom", modifiers: [], strategy: "absolute" }; + function pi() { + for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) + e[i] = arguments[i]; + return !e.some(function (t) { + return !(t && "function" == typeof t.getBoundingClientRect); + }); + } + function mi(t) { + void 0 === t && (t = {}); + var e = t, + i = e.defaultModifiers, + n = void 0 === i ? [] : i, + s = e.defaultOptions, + o = void 0 === s ? fi : s; + return function (t, e, i) { + void 0 === i && (i = o); + var s, + r, + a = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, fi, o), + modifiersData: {}, + elements: { reference: t, popper: e }, + attributes: {}, + styles: {}, + }, + l = [], + c = !1, + h = { + state: a, + setOptions: function (i) { + var s = "function" == typeof i ? i(a.options) : i; + d(), + (a.options = Object.assign({}, o, a.options, s)), + (a.scrollParents = { + reference: pe(t) + ? Je(t) + : t.contextElement + ? Je(t.contextElement) + : [], + popper: Je(e), + }); + var r, + c, + u = (function (t) { + var e = ui(t); + return de.reduce(function (t, i) { + return t.concat( + e.filter(function (t) { + return t.phase === i; + }) + ); + }, []); + })( + ((r = [].concat(n, a.options.modifiers)), + (c = r.reduce(function (t, e) { + var i = t[e.name]; + return ( + (t[e.name] = i + ? Object.assign({}, i, e, { + options: Object.assign( + {}, + i.options, + e.options + ), + data: Object.assign( + {}, + i.data, + e.data + ), + }) + : e), + t + ); + }, {})), + Object.keys(c).map(function (t) { + return c[t]; + })) + ); + return ( + (a.orderedModifiers = u.filter(function (t) { + return t.enabled; + })), + a.orderedModifiers.forEach(function (t) { + var e = t.name, + i = t.options, + n = void 0 === i ? {} : i, + s = t.effect; + if ("function" == typeof s) { + var o = s({ + state: a, + name: e, + instance: h, + options: n, + }); + l.push(o || function () {}); + } + }), + h.update() + ); + }, + forceUpdate: function () { + if (!c) { + var t = a.elements, + e = t.reference, + i = t.popper; + if (pi(e, i)) { + (a.rects = { + reference: di( + e, + $e(i), + "fixed" === a.options.strategy + ), + popper: Ce(i), + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (t) { + return (a.modifiersData[t.name] = + Object.assign({}, t.data)); + }); + for ( + var n = 0; + n < a.orderedModifiers.length; + n++ + ) + if (!0 !== a.reset) { + var s = a.orderedModifiers[n], + o = s.fn, + r = s.options, + l = void 0 === r ? {} : r, + d = s.name; + "function" == typeof o && + (a = + o({ + state: a, + options: l, + name: d, + instance: h, + }) || a); + } else (a.reset = !1), (n = -1); + } + } + }, + update: + ((s = function () { + return new Promise(function (t) { + h.forceUpdate(), t(a); + }); + }), + function () { + return ( + r || + (r = new Promise(function (t) { + Promise.resolve().then(function () { + (r = void 0), t(s()); + }); + })), + r + ); + }), + destroy: function () { + d(), (c = !0); + }, + }; + if (!pi(t, e)) return h; + function d() { + l.forEach(function (t) { + return t(); + }), + (l = []); + } + return ( + h.setOptions(i).then(function (t) { + !c && i.onFirstUpdate && i.onFirstUpdate(t); + }), + h + ); + }; + } + var gi = mi(), + _i = mi({ defaultModifiers: [Re, ci, Be, _e] }), + bi = mi({ defaultModifiers: [Re, ci, Be, _e, li, si, hi, je, ai] }); + const vi = Object.freeze( + Object.defineProperty( + { + __proto__: null, + afterMain: ae, + afterRead: se, + afterWrite: he, + applyStyles: _e, + arrow: je, + auto: Kt, + basePlacements: Qt, + beforeMain: oe, + beforeRead: ie, + beforeWrite: le, + bottom: Rt, + clippingParents: Ut, + computeStyles: Be, + createPopper: bi, + createPopperBase: gi, + createPopperLite: _i, + detectOverflow: ii, + end: Yt, + eventListeners: Re, + flip: si, + hide: ai, + left: Vt, + main: re, + modifierPhases: de, + offset: li, + placements: ee, + popper: Jt, + popperGenerator: mi, + popperOffsets: ci, + preventOverflow: hi, + read: ne, + reference: Zt, + right: qt, + start: Xt, + top: zt, + variationPlacements: te, + viewport: Gt, + write: ce, + }, + Symbol.toStringTag, + { value: "Module" } + ) + ), + yi = "dropdown", + wi = ".bs.dropdown", + Ai = ".data-api", + Ei = "ArrowUp", + Ti = "ArrowDown", + Ci = `hide${wi}`, + Oi = `hidden${wi}`, + xi = `show${wi}`, + ki = `shown${wi}`, + Li = `click${wi}${Ai}`, + Si = `keydown${wi}${Ai}`, + Di = `keyup${wi}${Ai}`, + $i = "show", + Ii = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)', + Ni = `${Ii}.${$i}`, + Pi = ".dropdown-menu", + Mi = p() ? "top-end" : "top-start", + ji = p() ? "top-start" : "top-end", + Fi = p() ? "bottom-end" : "bottom-start", + Hi = p() ? "bottom-start" : "bottom-end", + Wi = p() ? "left-start" : "right-start", + Bi = p() ? "right-start" : "left-start", + zi = { + autoClose: !0, + boundary: "clippingParents", + display: "dynamic", + offset: [0, 2], + popperConfig: null, + reference: "toggle", + }, + Ri = { + autoClose: "(boolean|string)", + boundary: "(string|element)", + display: "string", + offset: "(array|string|function)", + popperConfig: "(null|object|function)", + reference: "(string|element|object)", + }; + class qi extends W { + constructor(t, e) { + super(t, e), + (this._popper = null), + (this._parent = this._element.parentNode), + (this._menu = + z.next(this._element, Pi)[0] || + z.prev(this._element, Pi)[0] || + z.findOne(Pi, this._parent)), + (this._inNavbar = this._detectNavbar()); + } + static get Default() { + return zi; + } + static get DefaultType() { + return Ri; + } + static get NAME() { + return yi; + } + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + show() { + if (l(this._element) || this._isShown()) return; + const t = { relatedTarget: this._element }; + if (!N.trigger(this._element, xi, t).defaultPrevented) { + if ( + (this._createPopper(), + "ontouchstart" in document.documentElement && + !this._parent.closest(".navbar-nav")) + ) + for (const t of [].concat(...document.body.children)) + N.on(t, "mouseover", h); + this._element.focus(), + this._element.setAttribute("aria-expanded", !0), + this._menu.classList.add($i), + this._element.classList.add($i), + N.trigger(this._element, ki, t); + } + } + hide() { + if (l(this._element) || !this._isShown()) return; + const t = { relatedTarget: this._element }; + this._completeHide(t); + } + dispose() { + this._popper && this._popper.destroy(), super.dispose(); + } + update() { + (this._inNavbar = this._detectNavbar()), + this._popper && this._popper.update(); + } + _completeHide(t) { + if (!N.trigger(this._element, Ci, t).defaultPrevented) { + if ("ontouchstart" in document.documentElement) + for (const t of [].concat(...document.body.children)) + N.off(t, "mouseover", h); + this._popper && this._popper.destroy(), + this._menu.classList.remove($i), + this._element.classList.remove($i), + this._element.setAttribute("aria-expanded", "false"), + F.removeDataAttribute(this._menu, "popper"), + N.trigger(this._element, Oi, t); + } + } + _getConfig(t) { + if ( + "object" == typeof (t = super._getConfig(t)).reference && + !o(t.reference) && + "function" != typeof t.reference.getBoundingClientRect + ) + throw new TypeError( + `${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.` + ); + return t; + } + _createPopper() { + if (void 0 === vi) + throw new TypeError( + "Bootstrap's dropdowns require Popper (https://popper.js.org)" + ); + let t = this._element; + "parent" === this._config.reference + ? (t = this._parent) + : o(this._config.reference) + ? (t = r(this._config.reference)) + : "object" == typeof this._config.reference && + (t = this._config.reference); + const e = this._getPopperConfig(); + this._popper = bi(t, this._menu, e); + } + _isShown() { + return this._menu.classList.contains($i); + } + _getPlacement() { + const t = this._parent; + if (t.classList.contains("dropend")) return Wi; + if (t.classList.contains("dropstart")) return Bi; + if (t.classList.contains("dropup-center")) return "top"; + if (t.classList.contains("dropdown-center")) return "bottom"; + const e = + "end" === + getComputedStyle(this._menu) + .getPropertyValue("--bs-position") + .trim(); + return t.classList.contains("dropup") ? (e ? ji : Mi) : e ? Hi : Fi; + } + _detectNavbar() { + return null !== this._element.closest(".navbar"); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _getPopperConfig() { + const t = { + placement: this._getPlacement(), + modifiers: [ + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + ], + }; + return ( + (this._inNavbar || "static" === this._config.display) && + (F.setDataAttribute(this._menu, "popper", "static"), + (t.modifiers = [{ name: "applyStyles", enabled: !1 }])), + { ...t, ...g(this._config.popperConfig, [t]) } + ); + } + _selectMenuItem({ key: t, target: e }) { + const i = z + .find( + ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", + this._menu + ) + .filter((t) => a(t)); + i.length && b(i, e, t === Ti, !i.includes(e)).focus(); + } + static jQueryInterface(t) { + return this.each(function () { + const e = qi.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + static clearMenus(t) { + if (2 === t.button || ("keyup" === t.type && "Tab" !== t.key)) + return; + const e = z.find(Ni); + for (const i of e) { + const e = qi.getInstance(i); + if (!e || !1 === e._config.autoClose) continue; + const n = t.composedPath(), + s = n.includes(e._menu); + if ( + n.includes(e._element) || + ("inside" === e._config.autoClose && !s) || + ("outside" === e._config.autoClose && s) + ) + continue; + if ( + e._menu.contains(t.target) && + (("keyup" === t.type && "Tab" === t.key) || + /input|select|option|textarea|form/i.test( + t.target.tagName + )) + ) + continue; + const o = { relatedTarget: e._element }; + "click" === t.type && (o.clickEvent = t), e._completeHide(o); + } + } + static dataApiKeydownHandler(t) { + const e = /input|textarea/i.test(t.target.tagName), + i = "Escape" === t.key, + n = [Ei, Ti].includes(t.key); + if (!n && !i) return; + if (e && !i) return; + t.preventDefault(); + const s = this.matches(Ii) + ? this + : z.prev(this, Ii)[0] || + z.next(this, Ii)[0] || + z.findOne(Ii, t.delegateTarget.parentNode), + o = qi.getOrCreateInstance(s); + if (n) + return t.stopPropagation(), o.show(), void o._selectMenuItem(t); + o._isShown() && (t.stopPropagation(), o.hide(), s.focus()); + } + } + N.on(document, Si, Ii, qi.dataApiKeydownHandler), + N.on(document, Si, Pi, qi.dataApiKeydownHandler), + N.on(document, Li, qi.clearMenus), + N.on(document, Di, qi.clearMenus), + N.on(document, Li, Ii, function (t) { + t.preventDefault(), qi.getOrCreateInstance(this).toggle(); + }), + m(qi); + const Vi = "backdrop", + Ki = "show", + Qi = `mousedown.bs.${Vi}`, + Xi = { + className: "modal-backdrop", + clickCallback: null, + isAnimated: !1, + isVisible: !0, + rootElement: "body", + }, + Yi = { + className: "string", + clickCallback: "(function|null)", + isAnimated: "boolean", + isVisible: "boolean", + rootElement: "(element|string)", + }; + class Ui extends H { + constructor(t) { + super(), + (this._config = this._getConfig(t)), + (this._isAppended = !1), + (this._element = null); + } + static get Default() { + return Xi; + } + static get DefaultType() { + return Yi; + } + static get NAME() { + return Vi; + } + show(t) { + if (!this._config.isVisible) return void g(t); + this._append(); + const e = this._getElement(); + this._config.isAnimated && d(e), + e.classList.add(Ki), + this._emulateAnimation(() => { + g(t); + }); + } + hide(t) { + this._config.isVisible + ? (this._getElement().classList.remove(Ki), + this._emulateAnimation(() => { + this.dispose(), g(t); + })) + : g(t); + } + dispose() { + this._isAppended && + (N.off(this._element, Qi), + this._element.remove(), + (this._isAppended = !1)); + } + _getElement() { + if (!this._element) { + const t = document.createElement("div"); + (t.className = this._config.className), + this._config.isAnimated && t.classList.add("fade"), + (this._element = t); + } + return this._element; + } + _configAfterMerge(t) { + return (t.rootElement = r(t.rootElement)), t; + } + _append() { + if (this._isAppended) return; + const t = this._getElement(); + this._config.rootElement.append(t), + N.on(t, Qi, () => { + g(this._config.clickCallback); + }), + (this._isAppended = !0); + } + _emulateAnimation(t) { + _(t, this._getElement(), this._config.isAnimated); + } + } + const Gi = ".bs.focustrap", + Ji = `focusin${Gi}`, + Zi = `keydown.tab${Gi}`, + tn = "backward", + en = { autofocus: !0, trapElement: null }, + nn = { autofocus: "boolean", trapElement: "element" }; + class sn extends H { + constructor(t) { + super(), + (this._config = this._getConfig(t)), + (this._isActive = !1), + (this._lastTabNavDirection = null); + } + static get Default() { + return en; + } + static get DefaultType() { + return nn; + } + static get NAME() { + return "focustrap"; + } + activate() { + this._isActive || + (this._config.autofocus && this._config.trapElement.focus(), + N.off(document, Gi), + N.on(document, Ji, (t) => this._handleFocusin(t)), + N.on(document, Zi, (t) => this._handleKeydown(t)), + (this._isActive = !0)); + } + deactivate() { + this._isActive && ((this._isActive = !1), N.off(document, Gi)); + } + _handleFocusin(t) { + const { trapElement: e } = this._config; + if (t.target === document || t.target === e || e.contains(t.target)) + return; + const i = z.focusableChildren(e); + 0 === i.length + ? e.focus() + : this._lastTabNavDirection === tn + ? i[i.length - 1].focus() + : i[0].focus(); + } + _handleKeydown(t) { + "Tab" === t.key && + (this._lastTabNavDirection = t.shiftKey ? tn : "forward"); + } + } + const on = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + rn = ".sticky-top", + an = "padding-right", + ln = "margin-right"; + class cn { + constructor() { + this._element = document.body; + } + getWidth() { + const t = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - t); + } + hide() { + const t = this.getWidth(); + this._disableOverFlow(), + this._setElementAttributes(this._element, an, (e) => e + t), + this._setElementAttributes(on, an, (e) => e + t), + this._setElementAttributes(rn, ln, (e) => e - t); + } + reset() { + this._resetElementAttributes(this._element, "overflow"), + this._resetElementAttributes(this._element, an), + this._resetElementAttributes(on, an), + this._resetElementAttributes(rn, ln); + } + isOverflowing() { + return this.getWidth() > 0; + } + _disableOverFlow() { + this._saveInitialAttribute(this._element, "overflow"), + (this._element.style.overflow = "hidden"); + } + _setElementAttributes(t, e, i) { + const n = this.getWidth(); + this._applyManipulationCallback(t, (t) => { + if ( + t !== this._element && + window.innerWidth > t.clientWidth + n + ) + return; + this._saveInitialAttribute(t, e); + const s = window.getComputedStyle(t).getPropertyValue(e); + t.style.setProperty(e, `${i(Number.parseFloat(s))}px`); + }); + } + _saveInitialAttribute(t, e) { + const i = t.style.getPropertyValue(e); + i && F.setDataAttribute(t, e, i); + } + _resetElementAttributes(t, e) { + this._applyManipulationCallback(t, (t) => { + const i = F.getDataAttribute(t, e); + null !== i + ? (F.removeDataAttribute(t, e), t.style.setProperty(e, i)) + : t.style.removeProperty(e); + }); + } + _applyManipulationCallback(t, e) { + if (o(t)) e(t); + else for (const i of z.find(t, this._element)) e(i); + } + } + const hn = ".bs.modal", + dn = `hide${hn}`, + un = `hidePrevented${hn}`, + fn = `hidden${hn}`, + pn = `show${hn}`, + mn = `shown${hn}`, + gn = `resize${hn}`, + _n = `click.dismiss${hn}`, + bn = `mousedown.dismiss${hn}`, + vn = `keydown.dismiss${hn}`, + yn = `click${hn}.data-api`, + wn = "modal-open", + An = "show", + En = "modal-static", + Tn = { backdrop: !0, focus: !0, keyboard: !0 }, + Cn = { + backdrop: "(boolean|string)", + focus: "boolean", + keyboard: "boolean", + }; + class On extends W { + constructor(t, e) { + super(t, e), + (this._dialog = z.findOne(".modal-dialog", this._element)), + (this._backdrop = this._initializeBackDrop()), + (this._focustrap = this._initializeFocusTrap()), + (this._isShown = !1), + (this._isTransitioning = !1), + (this._scrollBar = new cn()), + this._addEventListeners(); + } + static get Default() { + return Tn; + } + static get DefaultType() { + return Cn; + } + static get NAME() { + return "modal"; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + this._isTransitioning || + N.trigger(this._element, pn, { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + (this._isTransitioning = !0), + this._scrollBar.hide(), + document.body.classList.add(wn), + this._adjustDialog(), + this._backdrop.show(() => this._showElement(t))); + } + hide() { + this._isShown && + !this._isTransitioning && + (N.trigger(this._element, dn).defaultPrevented || + ((this._isShown = !1), + (this._isTransitioning = !0), + this._focustrap.deactivate(), + this._element.classList.remove(An), + this._queueCallback( + () => this._hideModal(), + this._element, + this._isAnimated() + ))); + } + dispose() { + N.off(window, hn), + N.off(this._dialog, hn), + this._backdrop.dispose(), + this._focustrap.deactivate(), + super.dispose(); + } + handleUpdate() { + this._adjustDialog(); + } + _initializeBackDrop() { + return new Ui({ + isVisible: Boolean(this._config.backdrop), + isAnimated: this._isAnimated(), + }); + } + _initializeFocusTrap() { + return new sn({ trapElement: this._element }); + } + _showElement(t) { + document.body.contains(this._element) || + document.body.append(this._element), + (this._element.style.display = "block"), + this._element.removeAttribute("aria-hidden"), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + (this._element.scrollTop = 0); + const e = z.findOne(".modal-body", this._dialog); + e && (e.scrollTop = 0), + d(this._element), + this._element.classList.add(An), + this._queueCallback( + () => { + this._config.focus && this._focustrap.activate(), + (this._isTransitioning = !1), + N.trigger(this._element, mn, { relatedTarget: t }); + }, + this._dialog, + this._isAnimated() + ); + } + _addEventListeners() { + N.on(this._element, vn, (t) => { + "Escape" === t.key && + (this._config.keyboard + ? this.hide() + : this._triggerBackdropTransition()); + }), + N.on(window, gn, () => { + this._isShown && + !this._isTransitioning && + this._adjustDialog(); + }), + N.on(this._element, bn, (t) => { + N.one(this._element, _n, (e) => { + this._element === t.target && + this._element === e.target && + ("static" !== this._config.backdrop + ? this._config.backdrop && this.hide() + : this._triggerBackdropTransition()); + }); + }); + } + _hideModal() { + (this._element.style.display = "none"), + this._element.setAttribute("aria-hidden", !0), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + (this._isTransitioning = !1), + this._backdrop.hide(() => { + document.body.classList.remove(wn), + this._resetAdjustments(), + this._scrollBar.reset(), + N.trigger(this._element, fn); + }); + } + _isAnimated() { + return this._element.classList.contains("fade"); + } + _triggerBackdropTransition() { + if (N.trigger(this._element, un).defaultPrevented) return; + const t = + this._element.scrollHeight > + document.documentElement.clientHeight, + e = this._element.style.overflowY; + "hidden" === e || + this._element.classList.contains(En) || + (t || (this._element.style.overflowY = "hidden"), + this._element.classList.add(En), + this._queueCallback(() => { + this._element.classList.remove(En), + this._queueCallback(() => { + this._element.style.overflowY = e; + }, this._dialog); + }, this._dialog), + this._element.focus()); + } + _adjustDialog() { + const t = + this._element.scrollHeight > + document.documentElement.clientHeight, + e = this._scrollBar.getWidth(), + i = e > 0; + if (i && !t) { + const t = p() ? "paddingLeft" : "paddingRight"; + this._element.style[t] = `${e}px`; + } + if (!i && t) { + const t = p() ? "paddingRight" : "paddingLeft"; + this._element.style[t] = `${e}px`; + } + } + _resetAdjustments() { + (this._element.style.paddingLeft = ""), + (this._element.style.paddingRight = ""); + } + static jQueryInterface(t, e) { + return this.each(function () { + const i = On.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === i[t]) + throw new TypeError(`No method named "${t}"`); + i[t](e); + } + }); + } + } + N.on(document, yn, '[data-bs-toggle="modal"]', function (t) { + const e = z.getElementFromSelector(this); + ["A", "AREA"].includes(this.tagName) && t.preventDefault(), + N.one(e, pn, (t) => { + t.defaultPrevented || + N.one(e, fn, () => { + a(this) && this.focus(); + }); + }); + const i = z.findOne(".modal.show"); + i && On.getInstance(i).hide(), On.getOrCreateInstance(e).toggle(this); + }), + R(On), + m(On); + const xn = ".bs.offcanvas", + kn = ".data-api", + Ln = `load${xn}${kn}`, + Sn = "show", + Dn = "showing", + $n = "hiding", + In = ".offcanvas.show", + Nn = `show${xn}`, + Pn = `shown${xn}`, + Mn = `hide${xn}`, + jn = `hidePrevented${xn}`, + Fn = `hidden${xn}`, + Hn = `resize${xn}`, + Wn = `click${xn}${kn}`, + Bn = `keydown.dismiss${xn}`, + zn = { backdrop: !0, keyboard: !0, scroll: !1 }, + Rn = { + backdrop: "(boolean|string)", + keyboard: "boolean", + scroll: "boolean", + }; + class qn extends W { + constructor(t, e) { + super(t, e), + (this._isShown = !1), + (this._backdrop = this._initializeBackDrop()), + (this._focustrap = this._initializeFocusTrap()), + this._addEventListeners(); + } + static get Default() { + return zn; + } + static get DefaultType() { + return Rn; + } + static get NAME() { + return "offcanvas"; + } + toggle(t) { + return this._isShown ? this.hide() : this.show(t); + } + show(t) { + this._isShown || + N.trigger(this._element, Nn, { relatedTarget: t }) + .defaultPrevented || + ((this._isShown = !0), + this._backdrop.show(), + this._config.scroll || new cn().hide(), + this._element.setAttribute("aria-modal", !0), + this._element.setAttribute("role", "dialog"), + this._element.classList.add(Dn), + this._queueCallback( + () => { + (this._config.scroll && !this._config.backdrop) || + this._focustrap.activate(), + this._element.classList.add(Sn), + this._element.classList.remove(Dn), + N.trigger(this._element, Pn, { relatedTarget: t }); + }, + this._element, + !0 + )); + } + hide() { + this._isShown && + (N.trigger(this._element, Mn).defaultPrevented || + (this._focustrap.deactivate(), + this._element.blur(), + (this._isShown = !1), + this._element.classList.add($n), + this._backdrop.hide(), + this._queueCallback( + () => { + this._element.classList.remove(Sn, $n), + this._element.removeAttribute("aria-modal"), + this._element.removeAttribute("role"), + this._config.scroll || new cn().reset(), + N.trigger(this._element, Fn); + }, + this._element, + !0 + ))); + } + dispose() { + this._backdrop.dispose(), + this._focustrap.deactivate(), + super.dispose(); + } + _initializeBackDrop() { + const t = Boolean(this._config.backdrop); + return new Ui({ + className: "offcanvas-backdrop", + isVisible: t, + isAnimated: !0, + rootElement: this._element.parentNode, + clickCallback: t + ? () => { + "static" !== this._config.backdrop + ? this.hide() + : N.trigger(this._element, jn); + } + : null, + }); + } + _initializeFocusTrap() { + return new sn({ trapElement: this._element }); + } + _addEventListeners() { + N.on(this._element, Bn, (t) => { + "Escape" === t.key && + (this._config.keyboard + ? this.hide() + : N.trigger(this._element, jn)); + }); + } + static jQueryInterface(t) { + return this.each(function () { + const e = qn.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if ( + void 0 === e[t] || + t.startsWith("_") || + "constructor" === t + ) + throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + N.on(document, Wn, '[data-bs-toggle="offcanvas"]', function (t) { + const e = z.getElementFromSelector(this); + if ( + (["A", "AREA"].includes(this.tagName) && t.preventDefault(), + l(this)) + ) + return; + N.one(e, Fn, () => { + a(this) && this.focus(); + }); + const i = z.findOne(In); + i && i !== e && qn.getInstance(i).hide(), + qn.getOrCreateInstance(e).toggle(this); + }), + N.on(window, Ln, () => { + for (const t of z.find(In)) qn.getOrCreateInstance(t).show(); + }), + N.on(window, Hn, () => { + for (const t of z.find( + "[aria-modal][class*=show][class*=offcanvas-]" + )) + "fixed" !== getComputedStyle(t).position && + qn.getOrCreateInstance(t).hide(); + }), + R(qn), + m(qn); + const Vn = { + "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [], + }, + Kn = new Set([ + "background", + "cite", + "href", + "itemtype", + "longdesc", + "poster", + "src", + "xlink:href", + ]), + Qn = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Xn = (t, e) => { + const i = t.nodeName.toLowerCase(); + return e.includes(i) + ? !Kn.has(i) || Boolean(Qn.test(t.nodeValue)) + : e.filter((t) => t instanceof RegExp).some((t) => t.test(i)); + }, + Yn = { + allowList: Vn, + content: {}, + extraClass: "", + html: !1, + sanitize: !0, + sanitizeFn: null, + template: "
", + }, + Un = { + allowList: "object", + content: "object", + extraClass: "(string|function)", + html: "boolean", + sanitize: "boolean", + sanitizeFn: "(null|function)", + template: "string", + }, + Gn = { + entry: "(string|element|function|null)", + selector: "(string|element)", + }; + class Jn extends H { + constructor(t) { + super(), (this._config = this._getConfig(t)); + } + static get Default() { + return Yn; + } + static get DefaultType() { + return Un; + } + static get NAME() { + return "TemplateFactory"; + } + getContent() { + return Object.values(this._config.content) + .map((t) => this._resolvePossibleFunction(t)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(t) { + return ( + this._checkContent(t), + (this._config.content = { ...this._config.content, ...t }), + this + ); + } + toHtml() { + const t = document.createElement("div"); + t.innerHTML = this._maybeSanitize(this._config.template); + for (const [e, i] of Object.entries(this._config.content)) + this._setContent(t, i, e); + const e = t.children[0], + i = this._resolvePossibleFunction(this._config.extraClass); + return i && e.classList.add(...i.split(" ")), e; + } + _typeCheckConfig(t) { + super._typeCheckConfig(t), this._checkContent(t.content); + } + _checkContent(t) { + for (const [e, i] of Object.entries(t)) + super._typeCheckConfig({ selector: e, entry: i }, Gn); + } + _setContent(t, e, i) { + const n = z.findOne(i, t); + n && + ((e = this._resolvePossibleFunction(e)) + ? o(e) + ? this._putElementInTemplate(r(e), n) + : this._config.html + ? (n.innerHTML = this._maybeSanitize(e)) + : (n.textContent = e) + : n.remove()); + } + _maybeSanitize(t) { + return this._config.sanitize + ? (function (t, e, i) { + if (!t.length) return t; + if (i && "function" == typeof i) return i(t); + const n = new window.DOMParser().parseFromString( + t, + "text/html" + ), + s = [].concat(...n.body.querySelectorAll("*")); + for (const t of s) { + const i = t.nodeName.toLowerCase(); + if (!Object.keys(e).includes(i)) { + t.remove(); + continue; + } + const n = [].concat(...t.attributes), + s = [].concat(e["*"] || [], e[i] || []); + for (const e of n) + Xn(e, s) || t.removeAttribute(e.nodeName); + } + return n.body.innerHTML; + })(t, this._config.allowList, this._config.sanitizeFn) + : t; + } + _resolvePossibleFunction(t) { + return g(t, [this]); + } + _putElementInTemplate(t, e) { + if (this._config.html) return (e.innerHTML = ""), void e.append(t); + e.textContent = t.textContent; + } + } + const Zn = new Set(["sanitize", "allowList", "sanitizeFn"]), + ts = "fade", + es = "show", + is = ".modal", + ns = "hide.bs.modal", + ss = "hover", + os = "focus", + rs = { + AUTO: "auto", + TOP: "top", + RIGHT: p() ? "left" : "right", + BOTTOM: "bottom", + LEFT: p() ? "right" : "left", + }, + as = { + allowList: Vn, + animation: !0, + boundary: "clippingParents", + container: !1, + customClass: "", + delay: 0, + fallbackPlacements: ["top", "right", "bottom", "left"], + html: !1, + offset: [0, 6], + placement: "top", + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: "", + trigger: "hover focus", + }, + ls = { + allowList: "object", + animation: "boolean", + boundary: "(string|element)", + container: "(string|element|boolean)", + customClass: "(string|function)", + delay: "(number|object)", + fallbackPlacements: "array", + html: "boolean", + offset: "(array|string|function)", + placement: "(string|function)", + popperConfig: "(null|object|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + selector: "(string|boolean)", + template: "string", + title: "(string|element|function)", + trigger: "string", + }; + class cs extends W { + constructor(t, e) { + if (void 0 === vi) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(t, e), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return as; + } + static get DefaultType() { + return ls; + } + static get NAME() { + return "tooltip"; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + N.off(this._element.closest(is), ns, this._hideModalHandler), + this._element.getAttribute("data-bs-original-title") && + this._element.setAttribute( + "title", + this._element.getAttribute("data-bs-original-title") + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ("none" === this._element.style.display) + throw new Error("Please use show on visible elements"); + if (!this._isWithContent() || !this._isEnabled) return; + const t = N.trigger( + this._element, + this.constructor.eventName("show") + ), + e = ( + c(this._element) || + this._element.ownerDocument.documentElement + ).contains(this._element); + if (t.defaultPrevented || !e) return; + this._disposePopper(); + const i = this._getTipElement(); + this._element.setAttribute( + "aria-describedby", + i.getAttribute("id") + ); + const { container: n } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains( + this.tip + ) || + (n.append(i), + N.trigger( + this._element, + this.constructor.eventName("inserted") + )), + (this._popper = this._createPopper(i)), + i.classList.add(es), + "ontouchstart" in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + N.on(t, "mouseover", h); + this._queueCallback( + () => { + N.trigger( + this._element, + this.constructor.eventName("shown") + ), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if ( + this._isShown() && + !N.trigger(this._element, this.constructor.eventName("hide")) + .defaultPrevented + ) { + if ( + (this._getTipElement().classList.remove(es), + "ontouchstart" in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + N.off(t, "mouseover", h); + (this._activeTrigger.click = !1), + (this._activeTrigger[os] = !1), + (this._activeTrigger[ss] = !1), + (this._isHovered = null), + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute( + "aria-describedby" + ), + N.trigger( + this._element, + this.constructor.eventName("hidden") + )); + }, + this.tip, + this._isAnimated() + ); + } + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(t) { + const e = this._getTemplateFactory(t).toHtml(); + if (!e) return null; + e.classList.remove(ts, es), + e.classList.add(`bs-${this.constructor.NAME}-auto`); + const i = ((t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + })(this.constructor.NAME).toString(); + return ( + e.setAttribute("id", i), + this._isAnimated() && e.classList.add(ts), + e + ); + } + setContent(t) { + (this._newContent = t), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(t) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(t) + : (this._templateFactory = new Jn({ + ...this._config, + content: t, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ), + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { ".tooltip-inner": this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute("data-bs-original-title") + ); + } + _initializeOnDelegatedTarget(t) { + return this.constructor.getOrCreateInstance( + t.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || + (this.tip && this.tip.classList.contains(ts)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains(es); + } + _createPopper(t) { + const e = g(this._config.placement, [this, t, this._element]), + i = rs[e.toUpperCase()]; + return bi(this._element, t, this._getPopperConfig(i)); + } + _getOffset() { + const { offset: t } = this._config; + return "string" == typeof t + ? t.split(",").map((t) => Number.parseInt(t, 10)) + : "function" == typeof t + ? (e) => t(e, this._element) + : t; + } + _resolvePossibleFunction(t) { + return g(t, [this._element]); + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: "flip", + options: { + fallbackPlacements: this._config.fallbackPlacements, + }, + }, + { name: "offset", options: { offset: this._getOffset() } }, + { + name: "preventOverflow", + options: { boundary: this._config.boundary }, + }, + { + name: "arrow", + options: { element: `.${this.constructor.NAME}-arrow` }, + }, + { + name: "preSetPlacement", + enabled: !0, + phase: "beforeMain", + fn: (t) => { + this._getTipElement().setAttribute( + "data-popper-placement", + t.state.placement + ); + }, + }, + ], + }; + return { ...e, ...g(this._config.popperConfig, [e]) }; + } + _setListeners() { + const t = this._config.trigger.split(" "); + for (const e of t) + if ("click" === e) + N.on( + this._element, + this.constructor.eventName("click"), + this._config.selector, + (t) => { + this._initializeOnDelegatedTarget(t).toggle(); + } + ); + else if ("manual" !== e) { + const t = + e === ss + ? this.constructor.eventName("mouseenter") + : this.constructor.eventName("focusin"), + i = + e === ss + ? this.constructor.eventName("mouseleave") + : this.constructor.eventName("focusout"); + N.on(this._element, t, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger["focusin" === t.type ? os : ss] = !0), + e._enter(); + }), + N.on(this._element, i, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger["focusout" === t.type ? os : ss] = + e._element.contains(t.relatedTarget)), + e._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + N.on(this._element.closest(is), ns, this._hideModalHandler); + } + _fixTitle() { + const t = this._element.getAttribute("title"); + t && + (this._element.getAttribute("aria-label") || + this._element.textContent.trim() || + this._element.setAttribute("aria-label", t), + this._element.setAttribute("data-bs-original-title", t), + this._element.removeAttribute("title")); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(t, e) { + clearTimeout(this._timeout), (this._timeout = setTimeout(t, e)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(t) { + const e = F.getDataAttributes(this._element); + for (const t of Object.keys(e)) Zn.has(t) && delete e[t]; + return ( + (t = { ...e, ...("object" == typeof t && t ? t : {}) }), + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return ( + (t.container = + !1 === t.container ? document.body : r(t.container)), + "number" == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + "number" == typeof t.title && (t.title = t.title.toString()), + "number" == typeof t.content && + (t.content = t.content.toString()), + t + ); + } + _getDelegateConfig() { + const t = {}; + for (const [e, i] of Object.entries(this._config)) + this.constructor.Default[e] !== i && (t[e] = i); + return (t.selector = !1), (t.trigger = "manual"), t; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = cs.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + m(cs); + const hs = { + ...cs.Default, + content: "", + offset: [0, 8], + placement: "right", + template: + '', + trigger: "click", + }, + ds = { ...cs.DefaultType, content: "(null|string|element|function)" }; + class us extends cs { + static get Default() { + return hs; + } + static get DefaultType() { + return ds; + } + static get NAME() { + return "popover"; + } + _isWithContent() { + return this._getTitle() || this._getContent(); + } + _getContentForTemplate() { + return { + ".popover-header": this._getTitle(), + ".popover-body": this._getContent(), + }; + } + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } + static jQueryInterface(t) { + return this.each(function () { + const e = us.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + m(us); + const fs = ".bs.scrollspy", + ps = `activate${fs}`, + ms = `click${fs}`, + gs = `load${fs}.data-api`, + _s = "active", + bs = "[href]", + vs = ".nav-link", + ys = `${vs}, .nav-item > ${vs}, .list-group-item`, + ws = { + offset: null, + rootMargin: "0px 0px -25%", + smoothScroll: !1, + target: null, + threshold: [0.1, 0.5, 1], + }, + As = { + offset: "(number|null)", + rootMargin: "string", + smoothScroll: "boolean", + target: "element", + threshold: "array", + }; + class Es extends W { + constructor(t, e) { + super(t, e), + (this._targetLinks = new Map()), + (this._observableSections = new Map()), + (this._rootElement = + "visible" === getComputedStyle(this._element).overflowY + ? null + : this._element), + (this._activeTarget = null), + (this._observer = null), + (this._previousScrollData = { + visibleEntryTop: 0, + parentScrollTop: 0, + }), + this.refresh(); + } + static get Default() { + return ws; + } + static get DefaultType() { + return As; + } + static get NAME() { + return "scrollspy"; + } + refresh() { + this._initializeTargetsAndObservables(), + this._maybeEnableSmoothScroll(), + this._observer + ? this._observer.disconnect() + : (this._observer = this._getNewObserver()); + for (const t of this._observableSections.values()) + this._observer.observe(t); + } + dispose() { + this._observer.disconnect(), super.dispose(); + } + _configAfterMerge(t) { + return ( + (t.target = r(t.target) || document.body), + (t.rootMargin = t.offset + ? `${t.offset}px 0px -30%` + : t.rootMargin), + "string" == typeof t.threshold && + (t.threshold = t.threshold + .split(",") + .map((t) => Number.parseFloat(t))), + t + ); + } + _maybeEnableSmoothScroll() { + this._config.smoothScroll && + (N.off(this._config.target, ms), + N.on(this._config.target, ms, bs, (t) => { + const e = this._observableSections.get(t.target.hash); + if (e) { + t.preventDefault(); + const i = this._rootElement || window, + n = e.offsetTop - this._element.offsetTop; + if (i.scrollTo) + return void i.scrollTo({ + top: n, + behavior: "smooth", + }); + i.scrollTop = n; + } + })); + } + _getNewObserver() { + const t = { + root: this._rootElement, + threshold: this._config.threshold, + rootMargin: this._config.rootMargin, + }; + return new IntersectionObserver( + (t) => this._observerCallback(t), + t + ); + } + _observerCallback(t) { + const e = (t) => this._targetLinks.get(`#${t.target.id}`), + i = (t) => { + (this._previousScrollData.visibleEntryTop = + t.target.offsetTop), + this._process(e(t)); + }, + n = (this._rootElement || document.documentElement).scrollTop, + s = n >= this._previousScrollData.parentScrollTop; + this._previousScrollData.parentScrollTop = n; + for (const o of t) { + if (!o.isIntersecting) { + (this._activeTarget = null), this._clearActiveClass(e(o)); + continue; + } + const t = + o.target.offsetTop >= + this._previousScrollData.visibleEntryTop; + if (s && t) { + if ((i(o), !n)) return; + } else s || t || i(o); + } + } + _initializeTargetsAndObservables() { + (this._targetLinks = new Map()), + (this._observableSections = new Map()); + const t = z.find(bs, this._config.target); + for (const e of t) { + if (!e.hash || l(e)) continue; + const t = z.findOne(decodeURI(e.hash), this._element); + a(t) && + (this._targetLinks.set(decodeURI(e.hash), e), + this._observableSections.set(e.hash, t)); + } + } + _process(t) { + this._activeTarget !== t && + (this._clearActiveClass(this._config.target), + (this._activeTarget = t), + t.classList.add(_s), + this._activateParents(t), + N.trigger(this._element, ps, { relatedTarget: t })); + } + _activateParents(t) { + if (t.classList.contains("dropdown-item")) + z.findOne( + ".dropdown-toggle", + t.closest(".dropdown") + ).classList.add(_s); + else + for (const e of z.parents(t, ".nav, .list-group")) + for (const t of z.prev(e, ys)) t.classList.add(_s); + } + _clearActiveClass(t) { + t.classList.remove(_s); + const e = z.find(`${bs}.${_s}`, t); + for (const t of e) t.classList.remove(_s); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Es.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if ( + void 0 === e[t] || + t.startsWith("_") || + "constructor" === t + ) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + N.on(window, gs, () => { + for (const t of z.find('[data-bs-spy="scroll"]')) + Es.getOrCreateInstance(t); + }), + m(Es); + const Ts = ".bs.tab", + Cs = `hide${Ts}`, + Os = `hidden${Ts}`, + xs = `show${Ts}`, + ks = `shown${Ts}`, + Ls = `click${Ts}`, + Ss = `keydown${Ts}`, + Ds = `load${Ts}`, + $s = "ArrowLeft", + Is = "ArrowRight", + Ns = "ArrowUp", + Ps = "ArrowDown", + Ms = "Home", + js = "End", + Fs = "active", + Hs = "fade", + Ws = "show", + Bs = ".dropdown-toggle", + zs = `:not(${Bs})`, + Rs = + '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]', + qs = `.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`, + Vs = `.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`; + class Ks extends W { + constructor(t) { + super(t), + (this._parent = this._element.closest( + '.list-group, .nav, [role="tablist"]' + )), + this._parent && + (this._setInitialAttributes( + this._parent, + this._getChildren() + ), + N.on(this._element, Ss, (t) => this._keydown(t))); + } + static get NAME() { + return "tab"; + } + show() { + const t = this._element; + if (this._elemIsActive(t)) return; + const e = this._getActiveElem(), + i = e ? N.trigger(e, Cs, { relatedTarget: t }) : null; + N.trigger(t, xs, { relatedTarget: e }).defaultPrevented || + (i && i.defaultPrevented) || + (this._deactivate(e, t), this._activate(t, e)); + } + _activate(t, e) { + t && + (t.classList.add(Fs), + this._activate(z.getElementFromSelector(t)), + this._queueCallback( + () => { + "tab" === t.getAttribute("role") + ? (t.removeAttribute("tabindex"), + t.setAttribute("aria-selected", !0), + this._toggleDropDown(t, !0), + N.trigger(t, ks, { relatedTarget: e })) + : t.classList.add(Ws); + }, + t, + t.classList.contains(Hs) + )); + } + _deactivate(t, e) { + t && + (t.classList.remove(Fs), + t.blur(), + this._deactivate(z.getElementFromSelector(t)), + this._queueCallback( + () => { + "tab" === t.getAttribute("role") + ? (t.setAttribute("aria-selected", !1), + t.setAttribute("tabindex", "-1"), + this._toggleDropDown(t, !1), + N.trigger(t, Os, { relatedTarget: e })) + : t.classList.remove(Ws); + }, + t, + t.classList.contains(Hs) + )); + } + _keydown(t) { + if (![$s, Is, Ns, Ps, Ms, js].includes(t.key)) return; + t.stopPropagation(), t.preventDefault(); + const e = this._getChildren().filter((t) => !l(t)); + let i; + if ([Ms, js].includes(t.key)) + i = e[t.key === Ms ? 0 : e.length - 1]; + else { + const n = [Is, Ps].includes(t.key); + i = b(e, t.target, n, !0); + } + i && + (i.focus({ preventScroll: !0 }), + Ks.getOrCreateInstance(i).show()); + } + _getChildren() { + return z.find(qs, this._parent); + } + _getActiveElem() { + return ( + this._getChildren().find((t) => this._elemIsActive(t)) || null + ); + } + _setInitialAttributes(t, e) { + this._setAttributeIfNotExists(t, "role", "tablist"); + for (const t of e) this._setInitialAttributesOnChild(t); + } + _setInitialAttributesOnChild(t) { + t = this._getInnerElement(t); + const e = this._elemIsActive(t), + i = this._getOuterElement(t); + t.setAttribute("aria-selected", e), + i !== t && + this._setAttributeIfNotExists(i, "role", "presentation"), + e || t.setAttribute("tabindex", "-1"), + this._setAttributeIfNotExists(t, "role", "tab"), + this._setInitialAttributesOnTargetPanel(t); + } + _setInitialAttributesOnTargetPanel(t) { + const e = z.getElementFromSelector(t); + e && + (this._setAttributeIfNotExists(e, "role", "tabpanel"), + t.id && + this._setAttributeIfNotExists( + e, + "aria-labelledby", + `${t.id}` + )); + } + _toggleDropDown(t, e) { + const i = this._getOuterElement(t); + if (!i.classList.contains("dropdown")) return; + const n = (t, n) => { + const s = z.findOne(t, i); + s && s.classList.toggle(n, e); + }; + n(Bs, Fs), + n(".dropdown-menu", Ws), + i.setAttribute("aria-expanded", e); + } + _setAttributeIfNotExists(t, e, i) { + t.hasAttribute(e) || t.setAttribute(e, i); + } + _elemIsActive(t) { + return t.classList.contains(Fs); + } + _getInnerElement(t) { + return t.matches(qs) ? t : z.findOne(qs, t); + } + _getOuterElement(t) { + return t.closest(".nav-item, .list-group-item") || t; + } + static jQueryInterface(t) { + return this.each(function () { + const e = Ks.getOrCreateInstance(this); + if ("string" == typeof t) { + if ( + void 0 === e[t] || + t.startsWith("_") || + "constructor" === t + ) + throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + N.on(document, Ls, Rs, function (t) { + ["A", "AREA"].includes(this.tagName) && t.preventDefault(), + l(this) || Ks.getOrCreateInstance(this).show(); + }), + N.on(window, Ds, () => { + for (const t of z.find(Vs)) Ks.getOrCreateInstance(t); + }), + m(Ks); + const Qs = ".bs.toast", + Xs = `mouseover${Qs}`, + Ys = `mouseout${Qs}`, + Us = `focusin${Qs}`, + Gs = `focusout${Qs}`, + Js = `hide${Qs}`, + Zs = `hidden${Qs}`, + to = `show${Qs}`, + eo = `shown${Qs}`, + io = "hide", + no = "show", + so = "showing", + oo = { animation: "boolean", autohide: "boolean", delay: "number" }, + ro = { animation: !0, autohide: !0, delay: 5e3 }; + class ao extends W { + constructor(t, e) { + super(t, e), + (this._timeout = null), + (this._hasMouseInteraction = !1), + (this._hasKeyboardInteraction = !1), + this._setListeners(); + } + static get Default() { + return ro; + } + static get DefaultType() { + return oo; + } + static get NAME() { + return "toast"; + } + show() { + N.trigger(this._element, to).defaultPrevented || + (this._clearTimeout(), + this._config.animation && this._element.classList.add("fade"), + this._element.classList.remove(io), + d(this._element), + this._element.classList.add(no, so), + this._queueCallback( + () => { + this._element.classList.remove(so), + N.trigger(this._element, eo), + this._maybeScheduleHide(); + }, + this._element, + this._config.animation + )); + } + hide() { + this.isShown() && + (N.trigger(this._element, Js).defaultPrevented || + (this._element.classList.add(so), + this._queueCallback( + () => { + this._element.classList.add(io), + this._element.classList.remove(so, no), + N.trigger(this._element, Zs); + }, + this._element, + this._config.animation + ))); + } + dispose() { + this._clearTimeout(), + this.isShown() && this._element.classList.remove(no), + super.dispose(); + } + isShown() { + return this._element.classList.contains(no); + } + _maybeScheduleHide() { + this._config.autohide && + (this._hasMouseInteraction || + this._hasKeyboardInteraction || + (this._timeout = setTimeout(() => { + this.hide(); + }, this._config.delay))); + } + _onInteraction(t, e) { + switch (t.type) { + case "mouseover": + case "mouseout": + this._hasMouseInteraction = e; + break; + case "focusin": + case "focusout": + this._hasKeyboardInteraction = e; + } + if (e) return void this._clearTimeout(); + const i = t.relatedTarget; + this._element === i || + this._element.contains(i) || + this._maybeScheduleHide(); + } + _setListeners() { + N.on(this._element, Xs, (t) => this._onInteraction(t, !0)), + N.on(this._element, Ys, (t) => this._onInteraction(t, !1)), + N.on(this._element, Us, (t) => this._onInteraction(t, !0)), + N.on(this._element, Gs, (t) => this._onInteraction(t, !1)); + } + _clearTimeout() { + clearTimeout(this._timeout), (this._timeout = null); + } + static jQueryInterface(t) { + return this.each(function () { + const e = ao.getOrCreateInstance(this, t); + if ("string" == typeof t) { + if (void 0 === e[t]) + throw new TypeError(`No method named "${t}"`); + e[t](this); + } + }); + } + } + return ( + R(ao), + m(ao), + { + Alert: Q, + Button: Y, + Carousel: xt, + Collapse: Bt, + Dropdown: qi, + Modal: On, + Offcanvas: qn, + Popover: us, + ScrollSpy: Es, + Tab: Ks, + Toast: ao, + Tooltip: cs, + } + ); +}); +//# sourceMappingURL=bootstrap.bundle.min.js.map diff --git a/data_embed/bootstrap.js.gz b/data_embed/bootstrap.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..b9c2bc216f4ee6dc871b3d6aa30a176eaaeb484e GIT binary patch literal 30641 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 literal 0 HcmV?d00001 diff --git a/data_embed/favicon.png b/data_embed/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..af967cd77b09ee70077d57b0eb6ff7799ff80268 GIT binary patch literal 813 zcmV+|1JeA7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0>Vi|K~!i%)tF6g z+b|G?y^>bRwQ`1po{L4O;3}iKo>2_p&l)A=8+uz*is+x!HzT>z9&+$oy$G+ z>*eL^$2finpW}GN;r~OwUthne0Pz*4&#h$IFifu~JEx543MfC9(iL{`^!x|I&Y@_2 z82`>DhtjY{>dz9QcIDHJTPK7(I)uK`(R61knP5kS2$O#)j8y4tC*g zj|@>vychBictnWuN;ztn4?02?K zoUCk=uM#saztDfnmE;QS5-37g(*2 zPGA7LTx@_@ZoFsagcB)HiEZK5dpt8|Xd1y`cSL z#0<3A@k44aF(W?8Flcv-m?1;s#zmWB#f*8t@N|9DFn~&N6%FiinT7$B4 r%NRfNwy7x?zNY^i$a@^#S(nQ{T{pUfRSG{k00000NkvXXu0mjfB(!u^ literal 0 HcmV?d00001 diff --git a/data_embed/favicon.png.gz b/data_embed/favicon.png.gz new file mode 100644 index 0000000000000000000000000000000000000000..27992fb94c97f758d12213bc7d4c26134ed3f242 GIT binary patch literal 836 zcmV-K1H1emiwFQv=<;R){{bxn()@`~PDc$28VUda01ZhpH!bwCyRA@uhm`!fmFc5{kl2*yJa-Loy2QpBgi|&(6Pm`uV7cI)69xZa_ksSTl zQXlZajx-#;CsMMV%RTh#<>l+gIDQD9<9Nm4|3klDU%#mU@fD}ftz_CTOs^>|IQ|d(y&JA&k~|`<U`K@rlYc3U zROxId;fN5_2n7Mm%BWzE3{gzH7xEBzM2PZAI<`l_(7(Cw8G=pt^X=`-OmSgo6T zgrF0JE1H{*ytf1J706c-@1LH(W9sd?H6@Qo69Du-2Wre=F#R@_%`KnAyb#ZKJ`+5^ z#yYWv8fIQtwE~sEu(M3J2A!+O%nPixOJgqB@`*L5!ORPJjb}CT8uK2(V6Uw>aKYYX z=7o4Z_9-6#OT%bjlZy@L!ORP+b~X704ew#MR4VXXp&VvjV71%GKPyy-aNwGsTmmyM zm|Arei*w3c|M&##ceYNPtZbC85;HI4^{X%;3F#{bJ?Vs*m+wWab{k|hLVy?|{Bd<9 z2J;G#??OP2sp6iu5x}g1dym$)P##i`NyM5?faXIb{Dz3;lXO9CaDJSb7v}nUfCvIK zjpk&5VY^gO?0}gUSgnsvU;w*ZY=BvAyl3WxTU}A_Ggl+65^T1m2Xl6~i4E1S${PvIrw~?S3A(2S zHnxd1ZruYp@v56(^LFCBCoug!ViO3-h%s7Q4OPQ>3Yd0ZwQn>hjvkoqKC124+LOf8 zH)~ctZI((K=smx^p#5XS47AztLuxNEBR + + + + + LoRa Tracker & Digi software − Ricardo Guzman CA2RXU + + + + + + +
+ + +
+
+
+

Last 20 received packets list

+ + + + + + + + + + + + +
Time*FrameRSSISNR
+ List refresh automatically every 15 seconds.
+ * - For now time is measured from board boot up. +
+
+
+
+ +
+
+
+
+
+
+ + + + + Station +
+ Add your Ham callsign and SSID. +
+
+ You can leave a comment describing your station. +
+
+ In the bottom there is a field for personal note that can only be seen in WEB GUI. +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ +
+
+
+ + + + + + + WiFi Access +
+ Add all Wi-Fi Networks intended to be used. +
+
+ + +
+ +
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + APRS-IS +
+ Enter you APRS-IS server and + credentials. +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+
+ +
+
+
+ + + + Beaconing +
+ Set APRS beacon attributes. +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+ +
+ + minutes + +
+
+
+
+
+
+ +
+
+
+ + + + Digipeating +
+ Define the Digipeater mode +
+
+
+
+ + +
+
+
+
+
+ +
+
+
+ + + + LoRa +
+ Config LoRa APRS Xmitting settings. +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+ + + + Hz + +
+
+
+ +
+ + Hz + +
+
+
+
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + dBm +
+
+
+
+
+
+ +
+
+
+ + + + Display +
+ OLED screen configuration. +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+ + seconds +
+
+
+ +
+ + minutes +
+
+
+
+
+
+ +
+
+
+ + + + + Battery +
+ + Battery Monitor & Health +
+
+ Max Voltage on input pin is 3.3V. +
+
+ Calculate voltage divider accordingly. +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + volts +
+
+
+
+
+ + +
+
+ + +
+
+ +
+ + volts +
+
+
+ + +
+
+ +
+ + kOhm +
+
+
+ +
+ + kOhm +
+
+
+
+
+
+
+ +
+
+
+ + + + Telemetry +
+ Define Wx telemetry +
+
+
+
+
+ + +
+
+
+
+
+ +
+ + meters +
+
+
+ +
+ + +
+
+
+
+
+
+ +
+
+
+ + + + Syslog +
+ Broadcast the system log over the + network. +
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+ +
+
+
+ + + + + + + TNC +
+ TNC and KISS configuration +
+
+
+
+
+
+ Server will be available at port 8001 +
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+ + + + + Reboot Time +
+
+
+
+
+
+ + +
+
+
+
+
+ +
+ + hours +
+
+
+
+
+
+ +
+
+
+ + + + + + + Auto AP +
+ Add your password and power off timeout to + auto access point. Auto AP will start if + there is no WiFi connection. Timeout will + count from startup or last client + disconnected. +
+
+
+ + +
+
+ + +
+ Set to 0 if you don't + want this option. +
+
+
+
+
+ +
+
+
+ + + + OTA +
+ Set your username and password to allow + firmware updating over-the-air. +
+
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+ + + + Admin +
+ Set your username and password to allow + access to the web interface. +
+
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+ + + + + Experimental +
+ You can test new features. Use at your own risk! +
+
+
+
+
+
+ When "only" iGate Mode loses WiFi, it will change into a Digirepeater Mode and after 15 min check if WiFi available and return to "only" iGate Mode. +
+ + +
+
+
+
+
+ WiFi disabled. Sleep mode. Best for solar Digi with SX126X. +
+ + +
+
+
+ + + Volts +
+ MCU will deep sleep when below provided battery voltage to save power. Set to 0 if you don't want this option. Please calibrate your voltage reading first! +
+
+
+
+
+
+
+ +
+
+ + +
+ +
+ + + + \ No newline at end of file diff --git a/data_embed/index.html.gz b/data_embed/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..39064acb32189a77e1f16c72565d3cd3da706782 GIT binary patch literal 42549 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 literal 0 HcmV?d00001 diff --git a/data_embed/script.js b/data_embed/script.js new file mode 100644 index 0000000..6932a41 --- /dev/null +++ b/data_embed/script.js @@ -0,0 +1,550 @@ +// Custom scripts + +let currentSettings = null; + +function backupSettings() { + const data = + "data:text/json;charset=utf-8," + + encodeURIComponent(JSON.stringify(currentSettings)); + const a = document.createElement("a"); + a.setAttribute("href", data); + a.setAttribute("download", "TrackerConfigurationBackup.json"); + a.click(); +} + +document.getElementById("backup").onclick = backupSettings; + +document.getElementById("restore").onclick = function (e) { + e.preventDefault(); + + document.querySelector("input[type=file]").click(); +}; + +document.querySelector("input[type=file]").onchange = function () { + const files = document.querySelector("input[type=file]").files; + + if (!files.length) return; + + const file = files.item(0); + + const reader = new FileReader(); + reader.readAsText(file); + reader.onload = () => { + const data = JSON.parse(reader.result); + + loadSettings(data); + }; +}; + +function fetchSettings() { + fetch("/configuration.json") + .then((response) => response.json()) + .then((settings) => { + loadSettings(settings); + }) + .catch((err) => { + console.error(err); + + alert(`Failed to load configuration`); + }); +} + +const alwaysOnCheckbox = document.querySelector( + 'input[name="display.alwaysOn"]' +); +const timeoutInput = document.querySelector('input[name="display.timeout"]'); + +alwaysOnCheckbox.addEventListener("change", function () { + timeoutInput.disabled = this.checked; +}); + +// timeoutInput.addEventListener("change", function () { +// alwaysOnCheckbox.disabled = this.value !== ""; +// }); + +const logCheckbox = document.querySelector('input[name="syslog.active"]'); +const serverField = document.querySelector('input[name="syslog.server"]'); +const portField = document.querySelector('input[name="syslog.port"]'); + +logCheckbox.addEventListener("change", function () { + serverField.disabled = !this.checked; + portField.disabled = !this.checked; +}); + +function loadSettings(settings) { + currentSettings = settings; + // General + document.getElementById("callsign").value = settings.callsign; + document.getElementById("beacon.comment").value = settings.beacon.comment; + document.getElementById("beacon.path").value = settings.beacon.path; + document.getElementById("beacon.symbol").value = settings.beacon.symbol; + document.getElementById("beacon.overlay").value = settings.beacon.overlay; + document.getElementById("personalNote").value = settings.personalNote; + document.getElementById("action.symbol").value = settings.beacon.overlay + settings.beacon.symbol; + + document.querySelector(".list-networks").innerHTML = ""; + + // Networks + const wifiNetworks = settings.wifi.AP || []; + const networksContainer = document.querySelector(".list-networks"); + + let networkCount = 0; + + wifiNetworks.forEach((network) => { + const networkElement = document.createElement("div"); + networkElement.classList.add("row", "network", "border-bottom", "py-2"); + + // Increment the name, id, and for attributes + const attributeName = `wifi.AP.${networkCount}`; + networkElement.innerHTML = ` +
+ + +
+
+ + +
+
+
+ +
+
+ `; + networksContainer.appendChild(networkElement); + networkCount++; + }); + + // APRS-IS + document.getElementById("aprs_is.active").checked = settings.aprs_is.active; + document.getElementById("aprs_is.messagesToRF").checked = settings.aprs_is.messagesToRF; + document.getElementById("aprs_is.objectsToRF").checked = settings.aprs_is.objectsToRF; + document.getElementById("aprs_is.server").value = settings.aprs_is.server; + document.getElementById("aprs_is.port").value = settings.aprs_is.port; + document.getElementById("aprs_is.filter").value = settings.aprs_is.filter; + document.getElementById("aprs_is.passcode").value = settings.aprs_is.passcode; + + // Beacon + document.getElementById("beacon.latitude").value = settings.beacon.latitude; + document.getElementById("beacon.longitude").value = settings.beacon.longitude; + document.getElementById("beacon.interval").value = settings.beacon.interval; + document.getElementById("other.rememberStationTime").value = settings.other.rememberStationTime; + document.getElementById("beacon.sendViaAPRSIS").checked = settings.beacon.sendViaAPRSIS; + document.getElementById("beacon.sendViaRF").checked = settings.beacon.sendViaRF; + + // Digi + document.getElementById("digi.mode").value = settings.digi.mode; + + // LoRa + document.getElementById("lora.txFreq").value = settings.lora.txFreq; + document.getElementById("lora.rxFreq").value = settings.lora.rxFreq; + document.getElementById("lora.txActive").checked = settings.lora.txActive; + document.getElementById("lora.rxActive").checked = settings.lora.rxActive; + document.getElementById("lora.spreadingFactor").value = settings.lora.spreadingFactor; + document.getElementById("lora.signalBandwidth").value = settings.lora.signalBandwidth; + document.getElementById("lora.codingRate4").value = settings.lora.codingRate4; + document.getElementById("lora.power").value = settings.lora.power; + + // Display + document.getElementById("display.alwaysOn").checked = settings.display.alwaysOn; + document.getElementById("display.turn180").checked = settings.display.turn180; + document.getElementById("display.timeout").value = settings.display.timeout; + + if (settings.display.alwaysOn) { + timeoutInput.disabled = true; + } + + // BATTERY + document.getElementById("battery.sendInternalVoltage").checked = settings.battery.sendInternalVoltage; + document.getElementById("battery.monitorInternalVoltage").checked = settings.battery.monitorInternalVoltage; + document.getElementById("battery.internalSleepVoltage").value = settings.battery.internalSleepVoltage.toFixed(1); + document.getElementById("battery.sendExternalVoltage").checked = settings.battery.sendExternalVoltage; + document.getElementById("battery.externalVoltagePin").value = settings.battery.externalVoltagePin; + document.getElementById("battery.voltageDividerR1").value = settings.battery.voltageDividerR1.toFixed(1); + document.getElementById("battery.voltageDividerR2").value = settings.battery.voltageDividerR2.toFixed(1); + document.getElementById("battery.monitorExternalVoltage").checked = settings.battery.monitorExternalVoltage; + document.getElementById("battery.externalSleepVoltage").value = settings.battery.externalSleepVoltage.toFixed(1); + document.getElementById("battery.sendVoltageAsTelemetry").checked = settings.battery.sendVoltageAsTelemetry; + + // TELEMETRY BME/WX + document.getElementById("bme.active").checked = settings.bme.active; + document.getElementById("bme.heightCorrection").value = settings.bme.heightCorrection; + document.getElementById("bme.temperatureCorrection").value = settings.bme.temperatureCorrection.toFixed(1); + + // SYSLOG + document.getElementById("syslog.active").checked = settings.syslog.active; + document.getElementById("syslog.server").value = settings.syslog.server; + document.getElementById("syslog.port").value = settings.syslog.port; + + if (settings.syslog.active) { + serverField.disabled = false; + portField.disabled = false; + } + + // TNC + if (settings.tnc) { + document.getElementById("tnc.enableServer").checked = settings.tnc.enableServer; + document.getElementById("tnc.enableSerial").checked = settings.tnc.enableSerial; + document.getElementById("tnc.acceptOwn").checked = settings.tnc.acceptOwn; + } + + // Reboot + document.getElementById("other.rebootMode").checked = settings.other.rebootMode; + document.getElementById("other.rebootModeTime").value = settings.other.rebootModeTime; + + // WiFi Auto AP + document.getElementById("wifi.autoAP.password").value = settings.wifi.autoAP.password; + document.getElementById("wifi.autoAP.powerOff").value = settings.wifi.autoAP.powerOff; + + // OTA + document.getElementById("ota.username").value = settings.ota.username; + document.getElementById("ota.password").value = settings.ota.password; + + // Webadmin + document.getElementById("webadmin.active").checked = settings.webadmin.active; + document.getElementById("webadmin.username").value = settings.webadmin.username; + document.getElementById("webadmin.password").value = settings.webadmin.password; + + // Experimental + document.getElementById("other.backupDigiMode").checked = settings.other.backupDigiMode; + + document.getElementById("other.lowPowerMode").checked = settings.other.lowPowerMode; + document.getElementById("other.lowVoltageCutOff").value = settings.other.lowVoltageCutOff || 0 + + updateImage(); + refreshSpeedStandard(); + toggleFields(); +} + +function showToast(message) { + const el = document.querySelector('#toast'); + + el.querySelector('.toast-body').innerHTML = message; + + (new bootstrap.Toast(el)).show(); +} + +document.getElementById('send-beacon').addEventListener('click', function (e) { + e.preventDefault(); + + fetch("/action?type=send-beacon", { method: "POST" }); + + showToast("Your beacon will be sent in a moment.
This action will be ignored if you have APRSIS and LoRa TX disabled!"); +}); + +document.getElementById('reboot').addEventListener('click', function (e) { + e.preventDefault(); + + fetch("/action?type=reboot", { method: "POST" }); + + showToast("Your device will be rebooted in a while"); +}); + +const bmeCheckbox = document.querySelector("input[name='bme.active']"); + +const stationModeSelect = document.querySelector("select[name='stationMode']"); + +function updateImage() { + const value = document.getElementById("beacon.overlay").value + document.getElementById("beacon.symbol").value; + + const image = document.querySelector("img"); + + switch (value) { + case "L&": + image.src = + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ6SURBVHgB7d0/axRBGMfx50IMWPoKkpA02gUsLfZdqOCLOPBFWAliHbCUVNpaxQNrIY0WVjZaJlUsIsZ5uDu9bGb/zMwzs/PM/L7wIG4Ocflwl7ndvVsihBBCmTajunpk5uHG33+aOSGkvhdmLs1cW+bKzDEhle2a+UZ22Pacrx6PlMRYXc/arrkkIKvIBxfISgrBBXLmSeACOdMkcYGcWTFwgZxJMXGBPHEpcIE8USlxgSzcbGD2KD0ukIXKGRfIAuWOC+TANOACOSAtuEAemQ10a2P2KV9cIA+0ZZltMzurOaT8cYHcUx+wJlwgd9QFrBEXyJZswAekFxfIrdq4GhZUQO7Itlq+QzoXVEC21AdcIm51yF3AJeNWhWwDLmFBBeRVmg4/Atmj2nGLR/bCbZrm2qWx/+7Ekwx5i9LGO/XFzF2qO97/r5QAOSUwcG+WBDkVMHDtRUdOAcz/ed4J4NqLihwbGLjjioYcExi4bkVBjgUMXL/EkWMAAzcsUWRpYODKJIYsCQxc2USQpYCBG6dgZAlg4MYtCDkUGLhp8kYOAQZu2ryQfYGT4S7PAKJVzsg+wEmfubNZbd+XOpgTsiswXpbzaDSyCzBw82oU8lhg4ObZIPIYYODmXS/yEDBwdcQ+72w/6AMGrq6OaHnLghv1AQNXX6/bG7qAPxNwNbbf3mAD5qf5EaEisgG/IVRMNuA9QsVkA94mpLWP7Q2pP5uE4vayvQHA5bQw86m90Qb8i5C22Kyx/cAG/IGQphj3ftcPbcBzM78JaWiN+73rATZgfvAzWn4SHeXbIC7Xtcg6MfOUgJxro3C5vlU0kPNsNC439DYJyHnlhMuNeR8M5DxyxuXGHugA8rR54XIuR7KAPE3euJzroUogpy0Il/M5Fg3kNAXjcr4nG4AcNxFcLuTc78nqz7e0/A7KLDo9PbV+nkn6Q2xnZ2c0n88pQmK4XOjJ/eyQm6YhxYnichLng/FyLZM4Lid1wh/IYUXB5SSv6ACyX9FwOelLdoDsVlRcLsY1WUAeV3RcLtZFd0Duj3EfUGRcLuZVlUC2lwyXi32Re/D75IuLC1osFtYDFXxAo73dts21MV/8wgc6PEqKm7LHZv5QnndASTV8p5U9unl7oaJ6QvUi23CLA+YdqhGZcQ/Jfmu/olrvVE3Ia9wdqgB4sxp+JzPuPv2/+XV1lYzcxq32Q34lvlzbcKsF5h0vCZlxD+g2btXApSCvF1TbBOB/ba4oNSOvn7lr3KpWzC5pXHgVf4RKOk3P5CqOUEmn5eW6CxfAA2n4ndyHC+AR5YwMXOFyWngx7i4h8XJABm7kpkQGbqKmQAZu4lIiA3eiUiADd+JiIgM3k2IgAzezJJGBm2kSyMDNvBBk4CrJBxm4ynJB/kHAVRnf3OucumGvzBxTBZV+eouhn5u5t7HtvZlXhBBCCCEUsb+qGDWF0d8l5AAAAABJRU5ErkJggg=="; + break; + case "L#": + image.src = + "data:image/png;base64,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"; + break; + case "L_": + image.src = + "data:image/png;base64,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"; + break; + case "La": + image.src = + "data:image/png;base64,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"; + break; + } +} + +function toggleFields() { + const sendExternalVoltageCheckbox = document.querySelector( + 'input[name="battery.sendExternalVoltage"]' + ); + const externalVoltagePinInput = document.querySelector( + 'input[name="battery.externalVoltagePin"]' + ); + + externalVoltagePinInput.disabled = !sendExternalVoltageCheckbox.checked; + voltageDividerR1.disabled = !sendExternalVoltageCheckbox.checked; + voltageDividerR2.disabled = !sendExternalVoltageCheckbox.checked; + + const WebadminCheckbox = document.querySelector( + 'input[name="webadmin.active"]' + ); + + const WebadminUsername = document.querySelector( + 'input[name="webadmin.username"]' + ); + + const WebadminPassword = document.querySelector( + 'input[name="webadmin.password"]' + ); + WebadminUsername.disabled = !WebadminCheckbox.checked; + WebadminPassword.disabled = !WebadminCheckbox.checked; +} + +const sendExternalVoltageCheckbox = document.querySelector( + 'input[name="battery.sendExternalVoltage"]' +); +const externalVoltagePinInput = document.querySelector( + 'input[name="battery.externalVoltagePin"]' +); + +const voltageDividerR1 = document.querySelector( + 'input[name="battery.voltageDividerR1"]' +); + +const voltageDividerR2 = document.querySelector( + 'input[name="battery.voltageDividerR2"]' +); + +sendExternalVoltageCheckbox.addEventListener("change", function () { + externalVoltagePinInput.disabled = !this.checked; + voltageDividerR1.disabled = !this.checked; + voltageDividerR2.disabled = !this.checked; +}); + +const WebadminCheckbox = document.querySelector( + 'input[name="webadmin.active"]' +); + +const WebadminUsername = document.querySelector( + 'input[name="webadmin.username"]' +); + +const WebadminPassword = document.querySelector( + 'input[name="webadmin.password"]' +); +WebadminCheckbox.addEventListener("change", function () { + WebadminUsername.disabled = !this.checked; + WebadminPassword.disabled = !this.checked; +}); + +document.querySelector(".new button").addEventListener("click", function () { + const networksContainer = document.querySelector(".list-networks"); + + let networkCount = document.querySelectorAll(".network").length; + + const networkElement = document.createElement("div"); + + networkElement.classList.add("row", "network", "border-bottom", "py-2"); + + // Increment the name, id, and for attributes + const attributeName = `wifi.AP.${networkCount}`; + networkElement.innerHTML = ` +
+ + +
+
+ + +
+
+
+ +
+
+ `; + networksContainer.appendChild(networkElement); + + networkCount++; + + // Add the new network element to the end of the document + document.querySelector(".new").before(networkElement); +}); + +document + .getElementById("action.symbol") + .addEventListener("change", function () { + const value = document.getElementById("action.symbol").value; + + document.getElementById("beacon.overlay").value = value[0]; + document.getElementById("beacon.symbol").value = value[1]; + + updateImage(); + }); + +const speedStandards = { + 300: [125, 5, 12], + 244: [125, 6, 12], + 209: [125, 7, 12], + 183: [125, 8, 12], + 610: [125, 8, 10], + 1200: [125, 7, 9], +}; + +function refreshSpeedStandard() { + const bw = Number(document.getElementById("lora.signalBandwidth").value); + const cr4 = Number(document.getElementById("lora.codingRate4").value); + const sf = Number(document.getElementById("lora.spreadingFactor").value); + + let found = false; + + for (const speed in speedStandards) { + const standard = speedStandards[speed]; + + if (standard[0] !== bw / 1000) continue; + if (standard[1] !== cr4) continue; + if (standard[2] !== sf) continue; + + document.getElementById("action.speed").value = speed; + found = true; + + break; + } + + if (!found) { + document.getElementById("action.speed").value = ""; + } +} + +document + .getElementById("lora.signalBandwidth") + .addEventListener("focusout", refreshSpeedStandard); +document + .getElementById("lora.codingRate4") + .addEventListener("focusout", refreshSpeedStandard); +document + .getElementById("lora.spreadingFactor") + .addEventListener("focusout", refreshSpeedStandard); + +document.getElementById("action.speed").addEventListener("change", function () { + const speed = document.getElementById("action.speed").value; + + if (speed !== "") { + const value = speedStandards[Number(speed)]; + + const bw = value[0]; + const cr4 = value[1]; + const sf = value[2]; + + document.getElementById("lora.signalBandwidth").value = bw * 1000; + document.getElementById("lora.codingRate4").value = cr4; + document.getElementById("lora.spreadingFactor").value = sf; + } +}); + +const form = document.querySelector("form"); + +const saveModal = new bootstrap.Modal(document.getElementById("saveModal"), { + backdrop: "static", + keyboard: false, +}); + +const savedModal = new bootstrap.Modal( + document.getElementById("savedModal"), + {} +); + +function checkConnection() { + const controller = new AbortController(); + + setTimeout(() => controller.abort(), 2000); + + fetch("/status?_t=" + Date.now(), { signal: controller.signal }) + .then(() => { + saveModal.hide(); + + savedModal.show(); + + setTimeout(function () { + savedModal.hide(); + }, 3000); + + fetchSettings(); + }) + .catch((err) => { + setTimeout(checkConnection, 0); + }); +} + +form.addEventListener("submit", async (event) => { + event.preventDefault(); + + document.getElementById("wifi.APs").value = + document.querySelectorAll(".network").length; + + fetch(form.action, { + method: form.method, + body: new FormData(form), + }); + + saveModal.show(); + + setTimeout(checkConnection, 2000); +}); + +fetchSettings(); + +function loadReceivedPackets(packets) { + if (packets) { + document.querySelector('#received-packets tbody').innerHTML = ''; + + const container = document.querySelector("#received-packets tbody"); + + container.innerHTML = ''; + + const date = new Date(); + + packets.forEach((packet) => { + const element = document.createElement("tr"); + + date.setTime(packet.millis); + + const p = date.toUTCString().split(' ') + + element.innerHTML = ` + ${p[p.length-2]} + ${packet.packet} + ${packet.RSSI} + ${packet.SNR} + `; + + container.appendChild(element); + }) + } + + setTimeout(fetchReceivedPackets, 15000); +} + +function fetchReceivedPackets() { + fetch("/received-packets.json") + .then((response) => response.json()) + .then((packets) => { + loadReceivedPackets(packets); + }) + .catch((err) => { + console.error(err); + + console.error(`Failed to load received packets`); + }); +} + +document.querySelector('a[href="/received-packets"]').addEventListener('click', function (e) { + e.preventDefault(); + + document.getElementById('received-packets').classList.remove('d-none'); + document.getElementById('configuration').classList.add('d-none'); + + document.querySelector('button[type=submit]').remove(); + + fetchReceivedPackets(); +}) \ No newline at end of file diff --git a/data_embed/script.js.gz b/data_embed/script.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d8255d3db2f5ac437acf9ab15b4dfd4a33afbe3 GIT binary patch literal 13133 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 +#include "configuration.h" +#include "web_utils.h" +#include "display.h" +#include "utils.h" + +extern Configuration Config; + +extern const char web_index_html[] asm("_binary_data_embed_index_html_gz_start"); +extern const char web_index_html_end[] asm("_binary_data_embed_index_html_gz_end"); +extern const size_t web_index_html_len = web_index_html_end - web_index_html; + +extern const char web_style_css[] asm("_binary_data_embed_style_css_gz_start"); +extern const char web_style_css_end[] asm("_binary_data_embed_style_css_gz_end"); +extern const size_t web_style_css_len = web_style_css_end - web_style_css; + +extern const char web_script_js[] asm("_binary_data_embed_script_js_gz_start"); +extern const char web_script_js_end[] asm("_binary_data_embed_script_js_gz_end"); +extern const size_t web_script_js_len = web_script_js_end - web_script_js; + +extern const char web_bootstrap_css[] asm("_binary_data_embed_bootstrap_css_gz_start"); +extern const char web_bootstrap_css_end[] asm("_binary_data_embed_bootstrap_css_gz_end"); +extern const size_t web_bootstrap_css_len = web_bootstrap_css_end - web_bootstrap_css; + +extern const char web_bootstrap_js[] asm("_binary_data_embed_bootstrap_js_gz_start"); +extern const char web_bootstrap_js_end[] asm("_binary_data_embed_bootstrap_js_gz_end"); +extern const size_t web_bootstrap_js_len = web_bootstrap_js_end - web_bootstrap_js; + +// Declare external symbols for the embedded image data +extern const unsigned char favicon_data[] asm("_binary_data_embed_favicon_png_gz_start"); +extern const unsigned char favicon_data_end[] asm("_binary_data_embed_favicon_png_gz_end"); +extern const size_t favicon_data_len = favicon_data_end - favicon_data; + +namespace WEB_Utils { + + AsyncWebServer server(80); + + void handleNotFound(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(404, "text/plain", "Not found"); + response->addHeader("Cache-Control", "max-age=3600"); + request->send(response); + } + + void handleStatus(AsyncWebServerRequest *request) { + request->send(200, "text/plain", "OK"); + } + + void handleHome(AsyncWebServerRequest *request) { + + AsyncWebServerResponse *response = request->beginResponse(200, "text/html", (const uint8_t*)web_index_html, web_index_html_len); + response->addHeader("Content-Encoding", "gzip"); + request->send(response); + } + + void handleFavicon(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(200, "image/x-icon", (const uint8_t*)favicon_data, favicon_data_len); + response->addHeader("Content-Encoding", "gzip"); + request->send(response); + } + + void handleReadConfiguration(AsyncWebServerRequest *request) { + + File file = SPIFFS.open("/tracker_conf.json"); + + String fileContent; + while(file.available()){ + fileContent += String((char)file.read()); + } + + request->send(200, "application/json", fileContent); + } + + void handleReceivedPackets(AsyncWebServerRequest *request) { + StaticJsonDocument<2048> data; + + String buffer; + + serializeJson(data, buffer); + + request->send(200, "application/json", buffer); + } + + void handleWriteConfiguration(AsyncWebServerRequest *request) { + Serial.println("Got new config from www"); + + if (request->hasParam("display.ecoMode", true)) { + Config.display.ecoMode = true; + if (request->hasParam("display.timeout", true)) { + Config.display.timeout = request->getParam("display.timeout", true)->value().toInt(); + } + } else { + Config.display.ecoMode = false; + } + + Config.display.turn180 = request->hasParam("display.turn180", true); + Config.display.showSymbol = request->hasParam("display.showSymbol", true); + + if (request->hasParam("winlink.password", true)) { + Config.winlink.password = request->getParam("winlink.password", true)->value(); + } + + /*Config.bme.active = request->hasParam("bme.active", true); + Config.bme.temperatureCorrection = request->getParam("bme.temperatureCorrection", true)->value().toFloat(); + Config.bme.sendTelemetry = request->hasParam("bme.sendTelemetry", true); + + Config.notification.ledTx = request->hasParam("notification.ledTx", true); + Config.notification.ledTxPin = request->getParam("notification.ledTxPin", true)->value().toInt(); + Config.notification.ledMessage = request->hasParam("notification.ledMessage", true); + Config.notification.ledMessagePin = request->getParam("notification.ledMessagePin", true)->value().toInt(); + Config.notification.ledFlashlight = request->hasParam("notification.ledFlashlight", true); + Config.notification.ledFlashlightPin = request->getParam("notification.ledFlashlightPin", true)->value().toInt(); + Config.notification.buzzerActive = request->hasParam("notification.buzzerActive", true); + Config.notification.buzzerPinTone = request->getParam("notification.buzzerPinTone", true)->value().toInt(); + Config.notification.buzzerPinVcc = request->getParam("notification.buzzerPinVcc", true)->value().toInt(); + Config.notification.bootUpBeep = request->hasParam("notification.bootUpBeep", true); + Config.notification.txBeep = request->hasParam("notification.txBeep", true); + Config.notification.messageRxBeep = request->hasParam("notification.messageRxBeep", true); + Config.notification.stationBeep = request->hasParam("notification.stationBeep", true); + Config.notification.lowBatteryBeep = request->hasParam("notification.lowBatteryBeep", true); + Config.notification.shutDownBeep = request->hasParam("notification.shutDownBeep", true); + + Config.ptt.active = request->hasParam("ptt.active", true); + Config.ptt.io_pin = request->getParam("ptt.io_pin", true)->value().toInt(); + Config.ptt.preDelay = request->getParam("ptt.preDelay", true)->value().toInt(); + Config.ptt.postDelay = request->getParam("ptt.postDelay", true)->value().toInt(); + Config.ptt.reverse = request->hasParam("ptt.reverse", true); + + Config.simplifiedTrackerMode = request->hasParam("other.simplifiedTrackerMode", true); + Config.sendCommentAfterXBeacons = request->getParam("other.sendCommentAfterXBeacons", true)->value().toInt(); + Config.path = request->getParam("other.path", true)->value(); + Config.nonSmartBeaconRate = request->getParam("other.nonSmartBeaconRate", true)->value().toInt(); + Config.rememberStationTime = request->getParam("other.rememberStationTime", true)->value().toInt(); + Config.maxDistanceToTracker = request->getParam("other.maxDistanceToTracker", true)->value().toInt(); + Config.standingUpdateTime = request->getParam("other.standingUpdateTime", true)->value().toInt(); + Config.sendAltitude = request->hasParam("other.sendAltitude", true); + Config.sendBatteryInfo = request->hasParam("other.sendBatteryInfo", true); + Config.bluetoothType = request->getParam("other.bluetoothType", true)->value().toInt(); + Config.bluetoothActive = request->hasParam("other.bluetoothActive", true); + Config.disableGPS = request->hasParam("other.disableGPS", true);*/ + + Config.writeFile(); + + AsyncWebServerResponse *response = request->beginResponse(302, "text/html", ""); + response->addHeader("Location", "/"); + request->send(response); + displayToggle(false); + delay(500); + ESP.restart(); + } + + void handleAction(AsyncWebServerRequest *request) { + String type = request->getParam("type", false)->value(); + + if (type == "send-beacon") { + //lastBeaconTx = 0; + + request->send(200, "text/plain", "Beacon will be sent in a while"); + } else if (type == "reboot") { + displayToggle(false); + ESP.restart(); + } else { + request->send(404, "text/plain", "Not Found"); + } + } + + void handleStyle(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(200, "text/css", (const uint8_t*)web_style_css, web_style_css_len); + response->addHeader("Content-Encoding", "gzip"); + request->send(response); + } + + void handleScript(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(200, "text/javascript", (const uint8_t*)web_script_js, web_script_js_len); + response->addHeader("Content-Encoding", "gzip"); + request->send(response); + } + + void handleBootstrapStyle(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(200, "text/css", (const uint8_t*)web_bootstrap_css, web_bootstrap_css_len); + response->addHeader("Content-Encoding", "gzip"); + response->addHeader("Cache-Control", "max-age=3600"); + request->send(response); + } + + void handleBootstrapScript(AsyncWebServerRequest *request) { + AsyncWebServerResponse *response = request->beginResponse(200, "text/javascript", (const uint8_t*)web_bootstrap_js, web_bootstrap_js_len); + response->addHeader("Content-Encoding", "gzip"); + response->addHeader("Cache-Control", "max-age=3600"); + request->send(response); + } + + void setup() { + server.on("/", HTTP_GET, handleHome); + server.on("/status", HTTP_GET, handleStatus); + //server.on("/received-packets.json", HTTP_GET, handleReceivedPackets); + server.on("/configuration.json", HTTP_GET, handleReadConfiguration); + server.on("/configuration.json", HTTP_POST, handleWriteConfiguration); + server.on("/action", HTTP_POST, handleAction); + server.on("/style.css", HTTP_GET, handleStyle); + server.on("/script.js", HTTP_GET, handleScript); + server.on("/bootstrap.css", HTTP_GET, handleBootstrapStyle); + server.on("/bootstrap.js", HTTP_GET, handleBootstrapScript); + server.on("/favicon.png", HTTP_GET, handleFavicon); + + server.onNotFound(handleNotFound); + + server.begin(); + } + +} \ No newline at end of file diff --git a/src/web_utils.h b/src/web_utils.h new file mode 100644 index 0000000..02f170a --- /dev/null +++ b/src/web_utils.h @@ -0,0 +1,29 @@ +#ifndef WEB_UTILS_H_ +#define WEB_UTILS_H_ + +#include +#include +#include +#include +#include + + +namespace WEB_Utils { + + void handleNotFound(AsyncWebServerRequest *request); + void handleStatus(AsyncWebServerRequest *request); + void handleHome(AsyncWebServerRequest *request); + + //void handleReadConfiguration(AsyncWebServerRequest *request); + //void handleWriteConfiguration(AsyncWebServerRequest *request); + + void handleStyle(AsyncWebServerRequest *request); + void handleScript(AsyncWebServerRequest *request); + void handleBootstrapStyle(AsyncWebServerRequest *request); + void handleBootstrapScript(AsyncWebServerRequest *request); + + void setup(); + +} + +#endif \ No newline at end of file diff --git a/tools/compress.py b/tools/compress.py new file mode 100644 index 0000000..10d7561 --- /dev/null +++ b/tools/compress.py @@ -0,0 +1,42 @@ +import gzip +import os +import datetime +Import("env") + +files = [ + 'data_embed/index.html', + 'data_embed/script.js', + 'data_embed/style.css', + 'data_embed/bootstrap.js', + 'data_embed/bootstrap.css', + 'data_embed/favicon.png', +] + +string_to_find_str = "String" +string_to_find_ver = "versionDate" + +with open('src/LoRa_APRS_Tracker.cpp', encoding='utf-8') as cpp_file: + for line in cpp_file: + if string_to_find_str in line and string_to_find_ver in line: + start = line.find('"') + 1 + end = line.find('"', start) + if start > 0 and end > start: + versionDate = line[start:end] + break + +for src in files: + out = src + ".gz" + + + with open(src, 'rb') as f: + content = f.read() + + if src == 'data_embed/index.html': + env_vars = env["BOARD"] + "
" + ','.join(env["BUILD_FLAGS"]).replace('-Werror -Wall,', '').replace(',-DELEGANTOTA_USE_ASYNC_WEBSERVER=1', '') + "
" + "Version date: " + versionDate + current_date = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') + " UTC" + build_info = f'{env_vars}
Build date: {current_date}'.encode() + + content = content.replace(b'%BUILD_INFO%', build_info) + + with open(out, 'wb') as f: + f.write(gzip.compress(content, compresslevel=9)) \ No newline at end of file