From 622318c4614d6430dd592ff0905a701112dc8441 Mon Sep 17 00:00:00 2001 From: lllllllillllllillll Date: Mon, 29 Jul 2024 17:49:04 -0700 Subject: [PATCH] Almost a complete rewrite, part 1. --- controllers/account.js | 76 +- controllers/apps.js | 628 +- controllers/dashboard.js | 513 +- controllers/images.js | 112 +- controllers/login.js | 111 +- controllers/networks.js | 112 +- controllers/preferences.js | 71 + controllers/register.js | 162 +- controllers/settings.js | 214 +- controllers/supporters.js | 34 - controllers/syslogs.js | 66 +- controllers/users.js | 52 +- controllers/volumes.js | 142 +- database/config.js | 249 + database/models.js | 272 - database/sessions.sqlite | Bin 0 -> 12288 bytes database/settings.sqlite | Bin 0 -> 36864 bytes languages/chinese.json | 14 + package-lock.json | 384 +- package.json | 12 +- public/css/demo.css | 276 + public/css/demo.min.css | 4 +- public/css/demo.rtl.css | 276 + public/css/demo.rtl.min.css | 9 + public/css/{meters.css => dweebui.css} | 90 +- public/css/tabler-social.css | 10 + public/css/tabler-social.min.css | 8 + public/css/tabler-social.rtl.css | 10 + public/css/tabler-social.rtl.min.css | 8 + public/css/tabler.css | 25813 ++++++++++++ public/css/tabler.min.css | 28578 +------------- public/css/tabler.rtl.css | 25777 ++++++++++++ public/css/tabler.rtl.min.css | 13 + public/js/demo-theme.js | 6 +- public/js/demo-theme.min.js | 9 + public/js/demo.js | 4 +- public/js/demo.min.js | 4 +- public/js/dweebui.js | 27 + public/js/htmx-sse.js | 593 +- public/js/htmx.min.js | 2 +- public/js/tabler.esm.js | 7482 ++++ public/js/tabler.esm.min.js | 15 + public/js/tabler.js | 7543 ++++ public/js/tabler.min.js | 8 +- public/libs/apexcharts/dist/apexcharts.js | 32956 ++++++++++++++++ .../bootstrap/dist/js/bootstrap.bundle.js | 6314 +++ .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.min.js | 7 + .../dist/js/bootstrap.bundle.min.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.esm.js | 4447 +++ .../bootstrap/dist/js/bootstrap.esm.js.map | 1 + .../bootstrap/dist/js/bootstrap.esm.min.js | 7 + .../dist/js/bootstrap.esm.min.js.map | 1 + public/libs/bootstrap/dist/js/bootstrap.js | 4494 +++ .../libs/bootstrap/dist/js/bootstrap.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.min.js | 7 + .../bootstrap/dist/js/bootstrap.min.js.map | 1 + public/libs/countup.js/dist/countUp.d.ts | 66 + public/libs/countup.js/dist/countUp.js | 300 + public/libs/countup.js/dist/countUp.min.js | 1 + public/libs/countup.js/dist/countUp.umd.js | 1 + .../dist/requestAnimationFrame.polyfill.js | 26 + public/libs/dropzone/dist/basic.css | 1 + public/libs/dropzone/dist/basic.css.map | 1 + public/libs/dropzone/dist/dropzone-min.js | 2 + public/libs/dropzone/dist/dropzone-min.js.map | 1 + public/libs/dropzone/dist/dropzone.css | 1 + public/libs/dropzone/dist/dropzone.css.map | 1 + public/libs/dropzone/dist/dropzone.js | 3068 ++ public/libs/dropzone/dist/dropzone.js.map | 1 + public/libs/dropzone/dist/dropzone.mjs | 2111 + public/libs/dropzone/dist/dropzone.mjs.map | 1 + public/libs/fslightbox/LICENSE | 21 + public/libs/fslightbox/README.md | 68 + public/libs/fslightbox/index.js | 1 + public/libs/fslightbox/package.json | 38 + .../libs/jsvectormap/dist/js/jsvectormap.js | 2318 ++ .../jsvectormap/dist/js/jsvectormap.min.js | 1 + .../libs/jsvectormap/dist/maps/world-merc.js | 1 + public/libs/jsvectormap/dist/maps/world.js | 1 + public/libs/litepicker/dist/bundle.js | 52 + .../libs/litepicker/dist/css/litepicker.css | 13 + .../dist/css/plugins/keyboardnav.js.css | 12 + .../dist/css/plugins/mobilefriendly.js.css | 133 + .../dist/css/plugins/multiselect.js.css | 54 + .../litepicker/dist/css/plugins/ranges.js.css | 81 + public/libs/litepicker/dist/js/main.js | 13 + public/libs/litepicker/dist/litepicker.amd.js | 12 + .../litepicker/dist/litepicker.commonjs2.js | 12 + public/libs/litepicker/dist/litepicker.js | 12 + public/libs/litepicker/dist/litepicker.umd.js | 12 + .../litepicker/dist/nocss/litepicker.amd.js | 12 + .../dist/nocss/litepicker.commonjs2.js | 12 + .../libs/litepicker/dist/nocss/litepicker.js | 12 + .../litepicker/dist/nocss/litepicker.umd.js | 12 + .../dist/nocss/plugins/keyboardnav.js | 11 + .../dist/nocss/plugins/mobilefriendly.js | 11 + .../dist/nocss/plugins/multiselect.js | 11 + .../litepicker/dist/nocss/plugins/ranges.js | 11 + .../litepicker/dist/plugins/keyboardnav.js | 11 + .../litepicker/dist/plugins/mobilefriendly.js | 11 + .../litepicker/dist/plugins/multiselect.js | 11 + public/libs/litepicker/dist/plugins/ranges.js | 11 + .../libs/litepicker/dist/types/calendar.d.ts | 14 + public/libs/litepicker/dist/types/core.d.ts | 23 + .../libs/litepicker/dist/types/datetime.d.ts | 41 + public/libs/litepicker/dist/types/index.d.ts | 4 + .../litepicker/dist/types/interfaces.d.ts | 80 + .../litepicker/dist/types/litepicker.d.ts | 25 + .../libs/litepicker/dist/types/methods.d.ts | 20 + public/libs/litepicker/dist/types/utils.d.ts | 4 + public/libs/litepicker/dist/types/window.d.ts | 6 + .../libs/melloware/coloris/dist/coloris.css | 577 + .../libs/melloware/coloris/dist/coloris.d.ts | 475 + .../melloware/coloris/dist/coloris.min.css | 1 + .../melloware/coloris/dist/esm/coloris.js | 1266 + .../melloware/coloris/dist/esm/coloris.min.js | 9 + .../melloware/coloris/dist/esm/package.json | 3 + .../melloware/coloris/dist/umd/coloris.js | 1288 + .../melloware/coloris/dist/umd/coloris.min.js | 9 + .../melloware/coloris/dist/umd/package.json | 3 + public/libs/nouislider/dist/nouislider.css | 304 + public/libs/nouislider/dist/nouislider.d.ts | 200 + public/libs/nouislider/dist/nouislider.js | 2282 ++ .../libs/nouislider/dist/nouislider.min.css | 1 + public/libs/nouislider/dist/nouislider.min.js | 1 + .../libs/nouislider/dist/nouislider.min.mjs | 1 + public/libs/nouislider/dist/nouislider.mjs | 2271 ++ public/libs/plyr/dist/plyr.css | 1 + public/libs/plyr/dist/plyr.js | 8758 ++++ public/libs/plyr/dist/plyr.min.js | 2 + public/libs/plyr/dist/plyr.min.js.map | 1 + public/libs/plyr/dist/plyr.min.mjs | 1 + public/libs/plyr/dist/plyr.min.mjs.map | 1 + public/libs/plyr/dist/plyr.mjs | 8750 ++++ public/libs/plyr/dist/plyr.polyfilled.js | 9230 +++++ public/libs/plyr/dist/plyr.polyfilled.min.js | 2 + .../libs/plyr/dist/plyr.polyfilled.min.js.map | 1 + public/libs/plyr/dist/plyr.polyfilled.min.mjs | 1 + .../plyr/dist/plyr.polyfilled.min.mjs.map | 1 + public/libs/plyr/dist/plyr.polyfilled.mjs | 9222 +++++ public/libs/plyr/dist/plyr.svg | 1 + .../star-rating.js/dist/star-rating.cjs.js | 481 + .../libs/star-rating.js/dist/star-rating.css | 220 + .../star-rating.js/dist/star-rating.esm.js | 479 + .../dist/star-rating.esm.min.js | 1 + .../libs/star-rating.js/dist/star-rating.js | 491 + .../star-rating.js/dist/star-rating.min.css | 8 + .../star-rating.js/dist/star-rating.min.js | 8 + public/libs/tinymce/CHANGELOG.md | 3163 ++ public/libs/tinymce/README.md | 71 + public/libs/tinymce/bower.json | 27 + public/libs/tinymce/composer.json | 52 + public/libs/tinymce/icons/default/icons.js | 189 + .../libs/tinymce/icons/default/icons.min.js | 1 + public/libs/tinymce/icons/default/index.js | 7 + public/libs/tinymce/license.txt | 21 + public/libs/tinymce/models/dom/index.js | 7 + public/libs/tinymce/models/dom/model.js | 8035 ++++ public/libs/tinymce/models/dom/model.min.js | 4 + public/libs/tinymce/package.json | 32 + public/libs/tinymce/plugins/advlist/index.js | 7 + public/libs/tinymce/plugins/advlist/plugin.js | 259 + .../tinymce/plugins/advlist/plugin.min.js | 4 + public/libs/tinymce/plugins/anchor/index.js | 7 + public/libs/tinymce/plugins/anchor/plugin.js | 196 + .../libs/tinymce/plugins/anchor/plugin.min.js | 4 + public/libs/tinymce/plugins/autolink/index.js | 7 + .../libs/tinymce/plugins/autolink/plugin.js | 228 + .../tinymce/plugins/autolink/plugin.min.js | 4 + .../libs/tinymce/plugins/autoresize/index.js | 7 + .../libs/tinymce/plugins/autoresize/plugin.js | 192 + .../tinymce/plugins/autoresize/plugin.min.js | 4 + public/libs/tinymce/plugins/autosave/index.js | 7 + .../libs/tinymce/plugins/autosave/plugin.js | 233 + .../tinymce/plugins/autosave/plugin.min.js | 4 + public/libs/tinymce/plugins/charmap/index.js | 7 + public/libs/tinymce/plugins/charmap/plugin.js | 1646 + .../tinymce/plugins/charmap/plugin.min.js | 4 + public/libs/tinymce/plugins/code/index.js | 7 + public/libs/tinymce/plugins/code/plugin.js | 85 + .../libs/tinymce/plugins/code/plugin.min.js | 4 + .../libs/tinymce/plugins/codesample/index.js | 7 + .../libs/tinymce/plugins/codesample/plugin.js | 2449 ++ .../tinymce/plugins/codesample/plugin.min.js | 4 + .../tinymce/plugins/directionality/index.js | 7 + .../tinymce/plugins/directionality/plugin.js | 384 + .../plugins/directionality/plugin.min.js | 4 + .../libs/tinymce/plugins/emoticons/index.js | 7 + .../plugins/emoticons/js/emojiimages.js | 1 + .../plugins/emoticons/js/emojiimages.min.js | 3 + .../tinymce/plugins/emoticons/js/emojis.js | 1 + .../plugins/emoticons/js/emojis.min.js | 2 + .../libs/tinymce/plugins/emoticons/plugin.js | 583 + .../tinymce/plugins/emoticons/plugin.min.js | 4 + .../libs/tinymce/plugins/fullscreen/index.js | 7 + .../libs/tinymce/plugins/fullscreen/plugin.js | 1196 + .../tinymce/plugins/fullscreen/plugin.min.js | 4 + public/libs/tinymce/plugins/help/index.js | 7 + public/libs/tinymce/plugins/help/plugin.js | 939 + .../libs/tinymce/plugins/help/plugin.min.js | 4 + public/libs/tinymce/plugins/image/index.js | 7 + public/libs/tinymce/plugins/image/plugin.js | 1488 + .../libs/tinymce/plugins/image/plugin.min.js | 4 + .../libs/tinymce/plugins/importcss/index.js | 7 + .../libs/tinymce/plugins/importcss/plugin.js | 344 + .../tinymce/plugins/importcss/plugin.min.js | 4 + .../tinymce/plugins/insertdatetime/index.js | 7 + .../tinymce/plugins/insertdatetime/plugin.js | 175 + .../plugins/insertdatetime/plugin.min.js | 4 + public/libs/tinymce/plugins/link/index.js | 7 + public/libs/tinymce/plugins/link/plugin.js | 1227 + .../libs/tinymce/plugins/link/plugin.min.js | 4 + public/libs/tinymce/plugins/lists/index.js | 7 + public/libs/tinymce/plugins/lists/plugin.js | 1948 + .../libs/tinymce/plugins/lists/plugin.min.js | 4 + public/libs/tinymce/plugins/media/index.js | 7 + public/libs/tinymce/plugins/media/plugin.js | 1177 + .../libs/tinymce/plugins/media/plugin.min.js | 4 + .../libs/tinymce/plugins/nonbreaking/index.js | 7 + .../tinymce/plugins/nonbreaking/plugin.js | 111 + .../tinymce/plugins/nonbreaking/plugin.min.js | 4 + .../libs/tinymce/plugins/pagebreak/index.js | 7 + .../libs/tinymce/plugins/pagebreak/plugin.js | 105 + .../tinymce/plugins/pagebreak/plugin.min.js | 4 + public/libs/tinymce/plugins/preview/index.js | 7 + public/libs/tinymce/plugins/preview/plugin.js | 97 + .../tinymce/plugins/preview/plugin.min.js | 4 + .../libs/tinymce/plugins/quickbars/index.js | 7 + .../libs/tinymce/plugins/quickbars/plugin.js | 437 + .../tinymce/plugins/quickbars/plugin.min.js | 4 + public/libs/tinymce/plugins/save/index.js | 7 + public/libs/tinymce/plugins/save/plugin.js | 118 + .../libs/tinymce/plugins/save/plugin.min.js | 4 + .../tinymce/plugins/searchreplace/index.js | 7 + .../tinymce/plugins/searchreplace/plugin.js | 1092 + .../plugins/searchreplace/plugin.min.js | 4 + public/libs/tinymce/plugins/table/index.js | 7 + public/libs/tinymce/plugins/table/plugin.js | 3416 ++ .../libs/tinymce/plugins/table/plugin.min.js | 4 + public/libs/tinymce/plugins/template/index.js | 7 + .../libs/tinymce/plugins/template/plugin.js | 554 + .../tinymce/plugins/template/plugin.min.js | 4 + .../tinymce/plugins/visualblocks/index.js | 7 + .../tinymce/plugins/visualblocks/plugin.js | 98 + .../plugins/visualblocks/plugin.min.js | 4 + .../libs/tinymce/plugins/visualchars/index.js | 7 + .../tinymce/plugins/visualchars/plugin.js | 560 + .../tinymce/plugins/visualchars/plugin.min.js | 4 + .../libs/tinymce/plugins/wordcount/index.js | 7 + .../libs/tinymce/plugins/wordcount/plugin.js | 405 + .../tinymce/plugins/wordcount/plugin.min.js | 4 + .../tinymce/skins/content/dark/content.css | 66 + .../skins/content/dark/content.min.css | 1 + .../tinymce/skins/content/default/content.css | 61 + .../skins/content/default/content.min.css | 1 + .../skins/content/document/content.css | 66 + .../skins/content/document/content.min.css | 1 + .../skins/content/tinymce-5-dark/content.css | 66 + .../content/tinymce-5-dark/content.min.css | 1 + .../skins/content/tinymce-5/content.css | 61 + .../skins/content/tinymce-5/content.min.css | 1 + .../tinymce/skins/content/writer/content.css | 62 + .../skins/content/writer/content.min.css | 1 + .../tinymce/skins/ui/oxide-dark/content.css | 759 + .../skins/ui/oxide-dark/content.inline.css | 772 + .../ui/oxide-dark/content.inline.min.css | 1 + .../skins/ui/oxide-dark/content.min.css | 1 + .../libs/tinymce/skins/ui/oxide-dark/skin.css | 3634 ++ .../tinymce/skins/ui/oxide-dark/skin.min.css | 1 + .../skins/ui/oxide-dark/skin.shadowdom.css | 30 + .../ui/oxide-dark/skin.shadowdom.min.css | 1 + .../libs/tinymce/skins/ui/oxide/content.css | 778 + .../tinymce/skins/ui/oxide/content.inline.css | 772 + .../skins/ui/oxide/content.inline.min.css | 1 + .../tinymce/skins/ui/oxide/content.min.css | 1 + public/libs/tinymce/skins/ui/oxide/skin.css | 3631 ++ .../libs/tinymce/skins/ui/oxide/skin.min.css | 1 + .../tinymce/skins/ui/oxide/skin.shadowdom.css | 30 + .../skins/ui/oxide/skin.shadowdom.min.css | 1 + .../skins/ui/tinymce-5-dark/content.css | 759 + .../ui/tinymce-5-dark/content.inline.css | 772 + .../ui/tinymce-5-dark/content.inline.min.css | 1 + .../skins/ui/tinymce-5-dark/content.min.css | 1 + .../tinymce/skins/ui/tinymce-5-dark/skin.css | 3725 ++ .../skins/ui/tinymce-5-dark/skin.min.css | 1 + .../ui/tinymce-5-dark/skin.shadowdom.css | 30 + .../ui/tinymce-5-dark/skin.shadowdom.min.css | 1 + .../tinymce/skins/ui/tinymce-5/content.css | 778 + .../skins/ui/tinymce-5/content.inline.css | 772 + .../skins/ui/tinymce-5/content.inline.min.css | 1 + .../skins/ui/tinymce-5/content.min.css | 1 + .../libs/tinymce/skins/ui/tinymce-5/skin.css | 3725 ++ .../tinymce/skins/ui/tinymce-5/skin.min.css | 1 + .../skins/ui/tinymce-5/skin.shadowdom.css | 30 + .../skins/ui/tinymce-5/skin.shadowdom.min.css | 1 + public/libs/tinymce/themes/silver/index.js | 7 + public/libs/tinymce/themes/silver/theme.js | 29996 ++++++++++++++ .../libs/tinymce/themes/silver/theme.min.js | 4 + public/libs/tinymce/tinymce.d.ts | 3185 ++ public/libs/tinymce/tinymce.js | 30598 ++++++++++++++ public/libs/tinymce/tinymce.min.js | 4 + .../dist/js/plugins/caret_position.js | 223 + .../dist/js/plugins/caret_position.js.map | 1 + .../dist/js/plugins/change_listener.js | 58 + .../dist/js/plugins/change_listener.js.map | 1 + .../dist/js/plugins/checkbox_options.js | 236 + .../dist/js/plugins/checkbox_options.js.map | 1 + .../dist/js/plugins/clear_button.js | 153 + .../dist/js/plugins/clear_button.js.map | 1 + .../tom-select/dist/js/plugins/drag_drop.js | 70 + .../dist/js/plugins/drag_drop.js.map | 1 + .../dist/js/plugins/dropdown_header.js | 180 + .../dist/js/plugins/dropdown_header.js.map | 1 + .../dist/js/plugins/dropdown_input.js | 293 + .../dist/js/plugins/dropdown_input.js.map | 1 + .../dist/js/plugins/input_autogrow.js | 84 + .../dist/js/plugins/input_autogrow.js.map | 1 + .../dist/js/plugins/no_active_items.js | 33 + .../dist/js/plugins/no_active_items.js.map | 1 + .../dist/js/plugins/no_backspace_delete.js | 40 + .../js/plugins/no_backspace_delete.js.map | 1 + .../dist/js/plugins/optgroup_columns.js | 171 + .../dist/js/plugins/optgroup_columns.js.map | 1 + .../dist/js/plugins/remove_button.js | 208 + .../dist/js/plugins/remove_button.js.map | 1 + .../dist/js/plugins/restore_on_backspace.js | 51 + .../js/plugins/restore_on_backspace.js.map | 1 + .../dist/js/plugins/virtual_scroll.js | 336 + .../dist/js/plugins/virtual_scroll.js.map | 1 + .../tom-select/dist/js/tom-select.base.js | 4687 +++ .../tom-select/dist/js/tom-select.base.js.map | 1 + .../tom-select/dist/js/tom-select.base.min.js | 359 + .../dist/js/tom-select.base.min.js.map | 1 + .../tom-select/dist/js/tom-select.complete.js | 5504 +++ .../dist/js/tom-select.complete.js.map | 1 + .../dist/js/tom-select.complete.min.js | 421 + .../dist/js/tom-select.complete.min.js.map | 1 + .../tom-select/dist/js/tom-select.popular.js | 4941 +++ .../dist/js/tom-select.popular.js.map | 1 + .../dist/js/tom-select.popular.min.js | 379 + .../dist/js/tom-select.popular.min.js.map | 1 + public/{img => static}/add to zip.jpg | Bin public/{img => static}/dweebui.svg | 0 public/{img => static}/logo.png | Bin router.js | 86 + router/index.js | 107 - server.js | 38 +- templates/compose/.gitignore | 2 - templates/json/default.json | 5539 --- templates/tmp/.gitignore | 2 - utils/docker.js | 89 +- utils/install.js | 208 - utils/permissions.js | 28 +- utils/system.js | 66 + utils/uninstall.js | 49 - views/account.html | 229 +- views/apps.html | 24 +- views/dashboard.html | 706 +- views/images.html | 21 +- views/login.html | 123 +- views/modals/compose.html | 28 - views/modals/details.html | 956 - views/modals/import.html | 20 - views/modals/json.html | 728 - views/modals/learnmore.html | 13 - views/modals/permissions.html | 22 - views/modals/uninstall.html | 77 - views/networks.html | 23 +- views/partials/appCard.html | 22 - views/partials/app_card.html | 20 + views/partials/containerFull.html | 77 - views/partials/containerSimple.html | 71 - views/partials/container_card.html | 52 + views/partials/footer.html | 14 +- views/partials/navbar.html | 557 +- views/partials/settings.html | 136 - views/partials/sidebar.html | 27 +- views/partials/user_permissions.html | 183 - views/preferences.html | 112 + views/register.html | 150 +- views/settings.html | 246 +- views/supporters.html | 6 +- views/syslogs.html | 4 +- views/users.html | 20 +- views/volumes.html | 22 +- 386 files changed, 310761 insertions(+), 40629 deletions(-) create mode 100644 controllers/preferences.js delete mode 100644 controllers/supporters.js create mode 100644 database/config.js delete mode 100644 database/models.js create mode 100644 database/sessions.sqlite create mode 100644 database/settings.sqlite create mode 100644 languages/chinese.json create mode 100644 public/css/demo.css create mode 100644 public/css/demo.rtl.css create mode 100644 public/css/demo.rtl.min.css rename public/css/{meters.css => dweebui.css} (63%) create mode 100644 public/css/tabler-social.css create mode 100644 public/css/tabler-social.min.css create mode 100644 public/css/tabler-social.rtl.css create mode 100644 public/css/tabler-social.rtl.min.css create mode 100644 public/css/tabler.css create mode 100644 public/css/tabler.rtl.css create mode 100644 public/css/tabler.rtl.min.css create mode 100644 public/js/demo-theme.min.js create mode 100644 public/js/dweebui.js create mode 100644 public/js/tabler.esm.js create mode 100644 public/js/tabler.esm.min.js create mode 100644 public/js/tabler.js create mode 100644 public/libs/apexcharts/dist/apexcharts.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.bundle.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.bundle.js.map create mode 100644 public/libs/bootstrap/dist/js/bootstrap.bundle.min.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.bundle.min.js.map create mode 100644 public/libs/bootstrap/dist/js/bootstrap.esm.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.esm.js.map create mode 100644 public/libs/bootstrap/dist/js/bootstrap.esm.min.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.esm.min.js.map create mode 100644 public/libs/bootstrap/dist/js/bootstrap.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.js.map create mode 100644 public/libs/bootstrap/dist/js/bootstrap.min.js create mode 100644 public/libs/bootstrap/dist/js/bootstrap.min.js.map create mode 100644 public/libs/countup.js/dist/countUp.d.ts create mode 100644 public/libs/countup.js/dist/countUp.js create mode 100644 public/libs/countup.js/dist/countUp.min.js create mode 100644 public/libs/countup.js/dist/countUp.umd.js create mode 100644 public/libs/countup.js/dist/requestAnimationFrame.polyfill.js create mode 100644 public/libs/dropzone/dist/basic.css create mode 100644 public/libs/dropzone/dist/basic.css.map create mode 100644 public/libs/dropzone/dist/dropzone-min.js create mode 100644 public/libs/dropzone/dist/dropzone-min.js.map create mode 100644 public/libs/dropzone/dist/dropzone.css create mode 100644 public/libs/dropzone/dist/dropzone.css.map create mode 100644 public/libs/dropzone/dist/dropzone.js create mode 100644 public/libs/dropzone/dist/dropzone.js.map create mode 100644 public/libs/dropzone/dist/dropzone.mjs create mode 100644 public/libs/dropzone/dist/dropzone.mjs.map create mode 100644 public/libs/fslightbox/LICENSE create mode 100644 public/libs/fslightbox/README.md create mode 100644 public/libs/fslightbox/index.js create mode 100644 public/libs/fslightbox/package.json create mode 100644 public/libs/jsvectormap/dist/js/jsvectormap.js create mode 100644 public/libs/jsvectormap/dist/js/jsvectormap.min.js create mode 100644 public/libs/jsvectormap/dist/maps/world-merc.js create mode 100644 public/libs/jsvectormap/dist/maps/world.js create mode 100644 public/libs/litepicker/dist/bundle.js create mode 100644 public/libs/litepicker/dist/css/litepicker.css create mode 100644 public/libs/litepicker/dist/css/plugins/keyboardnav.js.css create mode 100644 public/libs/litepicker/dist/css/plugins/mobilefriendly.js.css create mode 100644 public/libs/litepicker/dist/css/plugins/multiselect.js.css create mode 100644 public/libs/litepicker/dist/css/plugins/ranges.js.css create mode 100644 public/libs/litepicker/dist/js/main.js create mode 100644 public/libs/litepicker/dist/litepicker.amd.js create mode 100644 public/libs/litepicker/dist/litepicker.commonjs2.js create mode 100644 public/libs/litepicker/dist/litepicker.js create mode 100644 public/libs/litepicker/dist/litepicker.umd.js create mode 100644 public/libs/litepicker/dist/nocss/litepicker.amd.js create mode 100644 public/libs/litepicker/dist/nocss/litepicker.commonjs2.js create mode 100644 public/libs/litepicker/dist/nocss/litepicker.js create mode 100644 public/libs/litepicker/dist/nocss/litepicker.umd.js create mode 100644 public/libs/litepicker/dist/nocss/plugins/keyboardnav.js create mode 100644 public/libs/litepicker/dist/nocss/plugins/mobilefriendly.js create mode 100644 public/libs/litepicker/dist/nocss/plugins/multiselect.js create mode 100644 public/libs/litepicker/dist/nocss/plugins/ranges.js create mode 100644 public/libs/litepicker/dist/plugins/keyboardnav.js create mode 100644 public/libs/litepicker/dist/plugins/mobilefriendly.js create mode 100644 public/libs/litepicker/dist/plugins/multiselect.js create mode 100644 public/libs/litepicker/dist/plugins/ranges.js create mode 100644 public/libs/litepicker/dist/types/calendar.d.ts create mode 100644 public/libs/litepicker/dist/types/core.d.ts create mode 100644 public/libs/litepicker/dist/types/datetime.d.ts create mode 100644 public/libs/litepicker/dist/types/index.d.ts create mode 100644 public/libs/litepicker/dist/types/interfaces.d.ts create mode 100644 public/libs/litepicker/dist/types/litepicker.d.ts create mode 100644 public/libs/litepicker/dist/types/methods.d.ts create mode 100644 public/libs/litepicker/dist/types/utils.d.ts create mode 100644 public/libs/litepicker/dist/types/window.d.ts create mode 100644 public/libs/melloware/coloris/dist/coloris.css create mode 100644 public/libs/melloware/coloris/dist/coloris.d.ts create mode 100644 public/libs/melloware/coloris/dist/coloris.min.css create mode 100644 public/libs/melloware/coloris/dist/esm/coloris.js create mode 100644 public/libs/melloware/coloris/dist/esm/coloris.min.js create mode 100644 public/libs/melloware/coloris/dist/esm/package.json create mode 100644 public/libs/melloware/coloris/dist/umd/coloris.js create mode 100644 public/libs/melloware/coloris/dist/umd/coloris.min.js create mode 100644 public/libs/melloware/coloris/dist/umd/package.json create mode 100644 public/libs/nouislider/dist/nouislider.css create mode 100644 public/libs/nouislider/dist/nouislider.d.ts create mode 100644 public/libs/nouislider/dist/nouislider.js create mode 100644 public/libs/nouislider/dist/nouislider.min.css create mode 100644 public/libs/nouislider/dist/nouislider.min.js create mode 100644 public/libs/nouislider/dist/nouislider.min.mjs create mode 100644 public/libs/nouislider/dist/nouislider.mjs create mode 100644 public/libs/plyr/dist/plyr.css create mode 100644 public/libs/plyr/dist/plyr.js create mode 100644 public/libs/plyr/dist/plyr.min.js create mode 100644 public/libs/plyr/dist/plyr.min.js.map create mode 100644 public/libs/plyr/dist/plyr.min.mjs create mode 100644 public/libs/plyr/dist/plyr.min.mjs.map create mode 100644 public/libs/plyr/dist/plyr.mjs create mode 100644 public/libs/plyr/dist/plyr.polyfilled.js create mode 100644 public/libs/plyr/dist/plyr.polyfilled.min.js create mode 100644 public/libs/plyr/dist/plyr.polyfilled.min.js.map create mode 100644 public/libs/plyr/dist/plyr.polyfilled.min.mjs create mode 100644 public/libs/plyr/dist/plyr.polyfilled.min.mjs.map create mode 100644 public/libs/plyr/dist/plyr.polyfilled.mjs create mode 100644 public/libs/plyr/dist/plyr.svg create mode 100644 public/libs/star-rating.js/dist/star-rating.cjs.js create mode 100644 public/libs/star-rating.js/dist/star-rating.css create mode 100644 public/libs/star-rating.js/dist/star-rating.esm.js create mode 100644 public/libs/star-rating.js/dist/star-rating.esm.min.js create mode 100644 public/libs/star-rating.js/dist/star-rating.js create mode 100644 public/libs/star-rating.js/dist/star-rating.min.css create mode 100644 public/libs/star-rating.js/dist/star-rating.min.js create mode 100644 public/libs/tinymce/CHANGELOG.md create mode 100644 public/libs/tinymce/README.md create mode 100644 public/libs/tinymce/bower.json create mode 100644 public/libs/tinymce/composer.json create mode 100644 public/libs/tinymce/icons/default/icons.js create mode 100644 public/libs/tinymce/icons/default/icons.min.js create mode 100644 public/libs/tinymce/icons/default/index.js create mode 100644 public/libs/tinymce/license.txt create mode 100644 public/libs/tinymce/models/dom/index.js create mode 100644 public/libs/tinymce/models/dom/model.js create mode 100644 public/libs/tinymce/models/dom/model.min.js create mode 100644 public/libs/tinymce/package.json create mode 100644 public/libs/tinymce/plugins/advlist/index.js create mode 100644 public/libs/tinymce/plugins/advlist/plugin.js create mode 100644 public/libs/tinymce/plugins/advlist/plugin.min.js create mode 100644 public/libs/tinymce/plugins/anchor/index.js create mode 100644 public/libs/tinymce/plugins/anchor/plugin.js create mode 100644 public/libs/tinymce/plugins/anchor/plugin.min.js create mode 100644 public/libs/tinymce/plugins/autolink/index.js create mode 100644 public/libs/tinymce/plugins/autolink/plugin.js create mode 100644 public/libs/tinymce/plugins/autolink/plugin.min.js create mode 100644 public/libs/tinymce/plugins/autoresize/index.js create mode 100644 public/libs/tinymce/plugins/autoresize/plugin.js create mode 100644 public/libs/tinymce/plugins/autoresize/plugin.min.js create mode 100644 public/libs/tinymce/plugins/autosave/index.js create mode 100644 public/libs/tinymce/plugins/autosave/plugin.js create mode 100644 public/libs/tinymce/plugins/autosave/plugin.min.js create mode 100644 public/libs/tinymce/plugins/charmap/index.js create mode 100644 public/libs/tinymce/plugins/charmap/plugin.js create mode 100644 public/libs/tinymce/plugins/charmap/plugin.min.js create mode 100644 public/libs/tinymce/plugins/code/index.js create mode 100644 public/libs/tinymce/plugins/code/plugin.js create mode 100644 public/libs/tinymce/plugins/code/plugin.min.js create mode 100644 public/libs/tinymce/plugins/codesample/index.js create mode 100644 public/libs/tinymce/plugins/codesample/plugin.js create mode 100644 public/libs/tinymce/plugins/codesample/plugin.min.js create mode 100644 public/libs/tinymce/plugins/directionality/index.js create mode 100644 public/libs/tinymce/plugins/directionality/plugin.js create mode 100644 public/libs/tinymce/plugins/directionality/plugin.min.js create mode 100644 public/libs/tinymce/plugins/emoticons/index.js create mode 100644 public/libs/tinymce/plugins/emoticons/js/emojiimages.js create mode 100644 public/libs/tinymce/plugins/emoticons/js/emojiimages.min.js create mode 100644 public/libs/tinymce/plugins/emoticons/js/emojis.js create mode 100644 public/libs/tinymce/plugins/emoticons/js/emojis.min.js create mode 100644 public/libs/tinymce/plugins/emoticons/plugin.js create mode 100644 public/libs/tinymce/plugins/emoticons/plugin.min.js create mode 100644 public/libs/tinymce/plugins/fullscreen/index.js create mode 100644 public/libs/tinymce/plugins/fullscreen/plugin.js create mode 100644 public/libs/tinymce/plugins/fullscreen/plugin.min.js create mode 100644 public/libs/tinymce/plugins/help/index.js create mode 100644 public/libs/tinymce/plugins/help/plugin.js create mode 100644 public/libs/tinymce/plugins/help/plugin.min.js create mode 100644 public/libs/tinymce/plugins/image/index.js create mode 100644 public/libs/tinymce/plugins/image/plugin.js create mode 100644 public/libs/tinymce/plugins/image/plugin.min.js create mode 100644 public/libs/tinymce/plugins/importcss/index.js create mode 100644 public/libs/tinymce/plugins/importcss/plugin.js create mode 100644 public/libs/tinymce/plugins/importcss/plugin.min.js create mode 100644 public/libs/tinymce/plugins/insertdatetime/index.js create mode 100644 public/libs/tinymce/plugins/insertdatetime/plugin.js create mode 100644 public/libs/tinymce/plugins/insertdatetime/plugin.min.js create mode 100644 public/libs/tinymce/plugins/link/index.js create mode 100644 public/libs/tinymce/plugins/link/plugin.js create mode 100644 public/libs/tinymce/plugins/link/plugin.min.js create mode 100644 public/libs/tinymce/plugins/lists/index.js create mode 100644 public/libs/tinymce/plugins/lists/plugin.js create mode 100644 public/libs/tinymce/plugins/lists/plugin.min.js create mode 100644 public/libs/tinymce/plugins/media/index.js create mode 100644 public/libs/tinymce/plugins/media/plugin.js create mode 100644 public/libs/tinymce/plugins/media/plugin.min.js create mode 100644 public/libs/tinymce/plugins/nonbreaking/index.js create mode 100644 public/libs/tinymce/plugins/nonbreaking/plugin.js create mode 100644 public/libs/tinymce/plugins/nonbreaking/plugin.min.js create mode 100644 public/libs/tinymce/plugins/pagebreak/index.js create mode 100644 public/libs/tinymce/plugins/pagebreak/plugin.js create mode 100644 public/libs/tinymce/plugins/pagebreak/plugin.min.js create mode 100644 public/libs/tinymce/plugins/preview/index.js create mode 100644 public/libs/tinymce/plugins/preview/plugin.js create mode 100644 public/libs/tinymce/plugins/preview/plugin.min.js create mode 100644 public/libs/tinymce/plugins/quickbars/index.js create mode 100644 public/libs/tinymce/plugins/quickbars/plugin.js create mode 100644 public/libs/tinymce/plugins/quickbars/plugin.min.js create mode 100644 public/libs/tinymce/plugins/save/index.js create mode 100644 public/libs/tinymce/plugins/save/plugin.js create mode 100644 public/libs/tinymce/plugins/save/plugin.min.js create mode 100644 public/libs/tinymce/plugins/searchreplace/index.js create mode 100644 public/libs/tinymce/plugins/searchreplace/plugin.js create mode 100644 public/libs/tinymce/plugins/searchreplace/plugin.min.js create mode 100644 public/libs/tinymce/plugins/table/index.js create mode 100644 public/libs/tinymce/plugins/table/plugin.js create mode 100644 public/libs/tinymce/plugins/table/plugin.min.js create mode 100644 public/libs/tinymce/plugins/template/index.js create mode 100644 public/libs/tinymce/plugins/template/plugin.js create mode 100644 public/libs/tinymce/plugins/template/plugin.min.js create mode 100644 public/libs/tinymce/plugins/visualblocks/index.js create mode 100644 public/libs/tinymce/plugins/visualblocks/plugin.js create mode 100644 public/libs/tinymce/plugins/visualblocks/plugin.min.js create mode 100644 public/libs/tinymce/plugins/visualchars/index.js create mode 100644 public/libs/tinymce/plugins/visualchars/plugin.js create mode 100644 public/libs/tinymce/plugins/visualchars/plugin.min.js create mode 100644 public/libs/tinymce/plugins/wordcount/index.js create mode 100644 public/libs/tinymce/plugins/wordcount/plugin.js create mode 100644 public/libs/tinymce/plugins/wordcount/plugin.min.js create mode 100644 public/libs/tinymce/skins/content/dark/content.css create mode 100644 public/libs/tinymce/skins/content/dark/content.min.css create mode 100644 public/libs/tinymce/skins/content/default/content.css create mode 100644 public/libs/tinymce/skins/content/default/content.min.css create mode 100644 public/libs/tinymce/skins/content/document/content.css create mode 100644 public/libs/tinymce/skins/content/document/content.min.css create mode 100644 public/libs/tinymce/skins/content/tinymce-5-dark/content.css create mode 100644 public/libs/tinymce/skins/content/tinymce-5-dark/content.min.css create mode 100644 public/libs/tinymce/skins/content/tinymce-5/content.css create mode 100644 public/libs/tinymce/skins/content/tinymce-5/content.min.css create mode 100644 public/libs/tinymce/skins/content/writer/content.css create mode 100644 public/libs/tinymce/skins/content/writer/content.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/content.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/content.inline.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/content.inline.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/content.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/skin.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/skin.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/skin.shadowdom.css create mode 100644 public/libs/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide/content.css create mode 100644 public/libs/tinymce/skins/ui/oxide/content.inline.css create mode 100644 public/libs/tinymce/skins/ui/oxide/content.inline.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide/content.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide/skin.css create mode 100644 public/libs/tinymce/skins/ui/oxide/skin.min.css create mode 100644 public/libs/tinymce/skins/ui/oxide/skin.shadowdom.css create mode 100644 public/libs/tinymce/skins/ui/oxide/skin.shadowdom.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/content.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/content.inline.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/content.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/skin.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/skin.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/content.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/content.inline.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/content.inline.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/content.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/skin.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/skin.min.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/skin.shadowdom.css create mode 100644 public/libs/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.css create mode 100644 public/libs/tinymce/themes/silver/index.js create mode 100644 public/libs/tinymce/themes/silver/theme.js create mode 100644 public/libs/tinymce/themes/silver/theme.min.js create mode 100644 public/libs/tinymce/tinymce.d.ts create mode 100644 public/libs/tinymce/tinymce.js create mode 100644 public/libs/tinymce/tinymce.min.js create mode 100644 public/libs/tom-select/dist/js/plugins/caret_position.js create mode 100644 public/libs/tom-select/dist/js/plugins/caret_position.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/change_listener.js create mode 100644 public/libs/tom-select/dist/js/plugins/change_listener.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/checkbox_options.js create mode 100644 public/libs/tom-select/dist/js/plugins/checkbox_options.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/clear_button.js create mode 100644 public/libs/tom-select/dist/js/plugins/clear_button.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/drag_drop.js create mode 100644 public/libs/tom-select/dist/js/plugins/drag_drop.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/dropdown_header.js create mode 100644 public/libs/tom-select/dist/js/plugins/dropdown_header.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/dropdown_input.js create mode 100644 public/libs/tom-select/dist/js/plugins/dropdown_input.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/input_autogrow.js create mode 100644 public/libs/tom-select/dist/js/plugins/input_autogrow.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/no_active_items.js create mode 100644 public/libs/tom-select/dist/js/plugins/no_active_items.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/no_backspace_delete.js create mode 100644 public/libs/tom-select/dist/js/plugins/no_backspace_delete.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/optgroup_columns.js create mode 100644 public/libs/tom-select/dist/js/plugins/optgroup_columns.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/remove_button.js create mode 100644 public/libs/tom-select/dist/js/plugins/remove_button.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/restore_on_backspace.js create mode 100644 public/libs/tom-select/dist/js/plugins/restore_on_backspace.js.map create mode 100644 public/libs/tom-select/dist/js/plugins/virtual_scroll.js create mode 100644 public/libs/tom-select/dist/js/plugins/virtual_scroll.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.base.js create mode 100644 public/libs/tom-select/dist/js/tom-select.base.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.base.min.js create mode 100644 public/libs/tom-select/dist/js/tom-select.base.min.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.complete.js create mode 100644 public/libs/tom-select/dist/js/tom-select.complete.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.complete.min.js create mode 100644 public/libs/tom-select/dist/js/tom-select.complete.min.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.popular.js create mode 100644 public/libs/tom-select/dist/js/tom-select.popular.js.map create mode 100644 public/libs/tom-select/dist/js/tom-select.popular.min.js create mode 100644 public/libs/tom-select/dist/js/tom-select.popular.min.js.map rename public/{img => static}/add to zip.jpg (100%) rename public/{img => static}/dweebui.svg (100%) rename public/{img => static}/logo.png (100%) create mode 100644 router.js delete mode 100644 router/index.js delete mode 100644 templates/compose/.gitignore delete mode 100644 templates/json/default.json delete mode 100644 templates/tmp/.gitignore create mode 100644 utils/system.js delete mode 100644 utils/uninstall.js delete mode 100644 views/modals/compose.html delete mode 100644 views/modals/details.html delete mode 100644 views/modals/import.html delete mode 100644 views/modals/json.html delete mode 100644 views/modals/learnmore.html delete mode 100644 views/modals/permissions.html delete mode 100644 views/modals/uninstall.html delete mode 100644 views/partials/appCard.html create mode 100644 views/partials/app_card.html delete mode 100644 views/partials/containerFull.html delete mode 100644 views/partials/containerSimple.html create mode 100644 views/partials/container_card.html delete mode 100644 views/partials/settings.html delete mode 100644 views/partials/user_permissions.html create mode 100644 views/preferences.html diff --git a/controllers/account.js b/controllers/account.js index 794bdfd..01154fd 100644 --- a/controllers/account.js +++ b/controllers/account.js @@ -1,54 +1,36 @@ -import { User } from "../database/models.js"; +import { User, ServerSettings } from '../database/config.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; -const no_auth = process.env.NO_AUTH || false; +export const Account = async function(req,res){ -export const Account = async (req, res) => { - - if (no_auth && req.hostname == 'localhost') { - res.render("account", { - first_name: 'Localhost', - last_name: 'Localhost', - username: 'Localhost', - id: 0, - email: 'admin@localhost', - role: 'admin', - avatar: 'L', - alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + let container_links = await ServerSettings.findOne({ where: {key: 'container_links'}}); + let user_registration = await ServerSettings.findOne({ where: {key: 'user_registration'}}); - }); - return; - } - - let user = await User.findOne({ where: { userID: req.session.userID }}); - res.render("account", { - first_name: user.name, - last_name: user.name, - username: req.session.username, - id: user.id, - email: user.email, - role: user.role, - avatar: req.session.username.charAt(0).toUpperCase(), + let user = await User.findOne({ where: {userID: req.session.userID}}); + + res.render("account",{ alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + name: user.name, + username: req.session.username, + email: user.email, + avatar: user.avatar, + role: req.session.role, + navbar: await Navbar(req), + }); +} + + + +export const submitAccount = async function(req,res){ + + console.log(req.body); + + res.render("account",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), }); - -} +} \ No newline at end of file diff --git a/controllers/apps.js b/controllers/apps.js index ec15bcc..3d84f5c 100644 --- a/controllers/apps.js +++ b/controllers/apps.js @@ -1,605 +1,69 @@ import { readFileSync, readdirSync, renameSync, mkdirSync, unlinkSync, existsSync } from 'fs'; -import { parse } from 'yaml'; -import multer from 'multer'; -import AdmZip from 'adm-zip'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; -const upload = multer({storage: multer.diskStorage({ - destination: function (req, file, cb) { cb(null, 'templates/tmp/') }, - filename: function (req, file, cb) { cb(null, file.originalname) }, -})}); +export const Apps = async function(req,res){ -let alert = ''; -let templates_global = ''; -let json_templates = ''; -let remove_button = ''; + let { page, template } = req.params; -export const Apps = async (req, res) => { - - let page = Number(req.params.page) || 1; - let template_param = req.params.template || 'default'; + let file = ''; + let templates = []; - if ((template_param != 'default') && (template_param != 'compose')) { - remove_button = `Remove`; - } else { - remove_button = ''; - } - - json_templates = ''; - let json_files = readdirSync('templates/json/'); - for (let i = 0; i < json_files.length; i++) { - if (json_files[i] != 'default.json') { - let filename = json_files[i].split('.')[0]; - let link = `
  • ${filename}
  • ` - json_templates += link; - } - } - - let apps_list = ''; - let app_count = ''; - - let list_start = (page - 1) * 28; - let list_end = (page * 28); - let last_page = ''; - - let pages = `
  • 1
  • -
  • 2
  • -
  • 3
  • -
  • 4
  • -
  • 5
  • ` - - - let prev = '/apps/' + (page - 1) + '/' + template_param; - let next = '/apps/' + (page + 1) + '/' + template_param; - if (page == 1) { prev = '/apps/' + (page) + '/' + template_param; } - if (page == last_page) { next = '/apps/' + (page) + '/' + template_param;} - - - if (template_param == 'compose') { - let compose_files = readdirSync('templates/compose/'); + if (!page) { page = 1; } + if (!template) { template = 'default'; } - app_count = compose_files.length; - last_page = Math.ceil(compose_files.length/28); - - compose_files.forEach(file => { - if (file == '.gitignore') { return; } - - let compose = readFileSync(`templates/compose/${file}/compose.yaml`, 'utf8'); - let compose_data = parse(compose); - let service_name = Object.keys(compose_data.services) - let container = compose_data.services[service_name].container_name; - let image = compose_data.services[service_name].image; - - let appCard = readFileSync('./views/partials/appCard.html', 'utf8'); - appCard = appCard.replace(/AppName/g, service_name); - appCard = appCard.replace(/AppShortName/g, service_name); - appCard = appCard.replace(/AppDesc/g, 'Compose File'); - appCard = appCard.replace(/AppLogo/g, `https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/${service_name}.png`); - appCard = appCard.replace(/AppCategories/g, 'Compose '); - appCard = appCard.replace(/AppType/g, 'compose'); - apps_list += appCard; - }); - } else { - - let template_file = readFileSync(`./templates/json/${template_param}.json`); - let templates = JSON.parse(template_file).templates; - templates = templates.sort((a, b) => { if (a.name < b.name) { return -1; } }); - app_count = templates.length; - - templates_global = templates; - - apps_list = ''; - for (let i = list_start; i < list_end && i < templates.length; i++) { - let appCard = readFileSync('./views/partials/appCard.html', 'utf8'); - let name = templates[i].name || templates[i].title.toLowerCase(); - let title = templates[i].title || templates[i].name; - let desc = templates[i].description.slice(0, 60) + "..."; - let description = templates[i].description.replaceAll(". ", ".\n") || "no description available"; - let note = templates[i].note ? templates[i].note.replaceAll(". ", ".\n") : "no notes available"; - let image = templates[i].image; - let logo = templates[i].logo; - let categories = ''; - // set data.catagories to 'other' if data.catagories is empty or undefined - if (templates[i].categories == null || templates[i].categories == undefined || templates[i].categories == '') { - templates[i].categories = ['Other']; - } - // loop through the categories and add the badge to the card - for (let j = 0; j < templates[i].categories.length; j++) { - categories += CatagoryColor(templates[i].categories[j]); - } - appCard = appCard.replace(/AppName/g, name); - appCard = appCard.replace(/AppTitle/g, title); - appCard = appCard.replace(/AppShortName/g, name); - appCard = appCard.replace(/AppDesc/g, desc); - appCard = appCard.replace(/AppLogo/g, logo); - appCard = appCard.replace(/AppCategories/g, categories); - appCard = appCard.replace(/AppType/g, 'json'); - apps_list += appCard; - } + try { // Try to read the template file + file = readFileSync(`./appdata/templates/${template}.json`); + templates = JSON.parse(file).templates; + // Sort the templates by name + templates = templates.sort((a, b) => { if (a.name < b.name) { return -1; } }); + } + catch { + console.log(`Template ${template} not found`); } - - + let apps_list = ''; - - res.render("apps", { - username: req.session.username, - role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - list_start: list_start + 1, - list_end: list_end, - app_count: app_count, - prev: prev, - next: next, - apps_list: apps_list, - alert: alert, - template_list: '', - json_templates: json_templates, - pages: pages, - remove_button: remove_button, - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', - }); - alert = ''; -} - -export const removeTemplate = async (req, res) => { - let template = req.params.template; - unlinkSync(`templates/json/${template}.json`); - res.redirect('/apps'); -} - - -export const appSearch = async (req, res) => { - - let search = req.body.search; - - let page = Number(req.params.page) || 1; - - let template_param = req.params.template || 'default'; - - let template_file = readFileSync(`./templates/json/${template_param}.json`); - - let templates = JSON.parse(template_file).templates; - - templates = templates.sort((a, b) => { - if (a.name < b.name) { return -1; } - }); - - let pages = `
  • 1
  • -
  • 2
  • -
  • 3
  • -
  • 4
  • -
  • 5
  • ` - - - let list_start = (page-1)*28; - let list_end = (page*28); - let last_page = Math.ceil(templates.length/28); - let prev = '/apps/' + (page-1); - let next = '/apps/' + (page+1); - if (page == 1) { prev = '/apps/' + (page); } - if (page == last_page) { next = '/apps/' + (page); } - - - let apps_list = ''; - let results = []; - let [cat_1, cat_2, cat_3] = ['','','']; - - function searchTemplates(terms) { - terms = terms.toLowerCase(); for (let i = 0; i < templates.length; i++) { - if (templates[i].categories) { - if (templates[i].categories[0]) { - cat_1 = (templates[i].categories[0]).toLowerCase(); - } - if (templates[i].categories[1]) { - cat_2 = (templates[i].categories[1]).toLowerCase(); - } - if (templates[i].categories[2]) { - cat_3 = (templates[i].categories[2]).toLowerCase(); - } - } - if ((templates[i].description.includes(terms)) || (templates[i].name.includes(terms)) || (templates[i].title.includes(terms)) || (cat_1.includes(terms)) || (cat_2.includes(terms)) || (cat_3.includes(terms))){ - results.push(templates[i]); - } + let app_card = readFileSync('./views/partials/app_card.html', 'utf8'); + app_card = app_card.replace(/AppShortName/g, templates[i].name); + app_card = app_card.replace(/AppIcon/g, templates[i].logo); + apps_list += app_card; } - } - searchTemplates(search); - for (let i = 0; i < results.length; i++) { - let appCard = readFileSync('./views/partials/appCard.html', 'utf8'); - let name = results[i].name || results[i].title.toLowerCase(); - let desc = results[i].description.slice(0, 60) + "..."; - let description = results[i].description.replaceAll(". ", ".\n") || "no description available"; - let note = results[i].note ? results[i].note.replaceAll(". ", ".\n") : "no notes available"; - let image = results[i].image; - let logo = results[i].logo;let categories = ''; - // set data.catagories to 'other' if data.catagories is empty or undefined - if (results[i].categories == null || results[i].categories == undefined || results[i].categories == '') { - results[i].categories = ['Other']; - } - // loop through the categories and add the badge to the card - for (let j = 0; j < results[i].categories.length; j++) { - categories += CatagoryColor(results[i].categories[j]); - } - appCard = appCard.replace(/AppName/g, name); - appCard = appCard.replace(/AppShortName/g, name); - appCard = appCard.replace(/AppDesc/g, desc); - appCard = appCard.replace(/AppLogo/g, logo); - appCard = appCard.replace(/AppCategories/g, categories); - appCard = appCard.replace(/AppType/g, 'json'); + let app_count = `1 - 28 of ${templates.length} Apps`; - apps_list += appCard; - } - res.render("apps", { - username: req.session.username, - role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - list_start: list_start + 1, - list_end: list_end, - app_count: results.length, - prev: prev, - next: next, - apps_list: apps_list, - alert: alert, - template_list: '', - json_templates: json_templates, - pages: pages, - remove_button: remove_button, - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', - }); + res.render("apps",{ + alert: '', + username: req.session.username, + role: req.session.role, + app_count: app_count, + remove_button: '', + json_templates: '', + apps_list: apps_list, + prev: '', + next: '', + pages: '', + navbar: await Navbar(req), + }); } -function CatagoryColor(category) { - switch (category) { - case 'Other': - return 'Other '; - case 'Productivity': - return 'Productivity '; - case 'Tools': - return 'Tools '; - case 'Dashboard': - return 'Dashboard '; - case 'Communication': - return 'Communication '; - case 'Media': - return 'Media '; - case 'CMS': - return 'CMS '; - case 'Monitoring': - return 'Monitoring '; - case 'LDAP': - return 'LDAP '; - case 'Arr': - return 'Arr '; - case 'Database': - return 'Database '; - case 'Paid': - return 'Paid '; - case 'Gaming': - return 'Gaming '; - case 'Finance': - return 'Finance '; - case 'Networking': - return 'Networking '; - case 'Authentication': - return 'Authentication '; - case 'Development': - return 'Development '; - case 'Media Server': - return 'Media Server '; - case 'Downloaders': - return 'Downloaders '; - default: - return ''; // default to other if the category is not recognized - } -} -export const InstallModal = async (req, res) => { - let input = req.header('hx-trigger-name'); - let type = req.header('hx-trigger'); +export const submitApps = async function(req,res){ - if (type == 'compose') { - let compose = readFileSync(`templates/compose/${input}/compose.yaml`, 'utf8'); - let modal = readFileSync('./views/modals/compose.html', 'utf8'); - modal = modal.replace(/AppName/g, input); - modal = modal.replace(/COMPOSE_CONTENT/g, compose); - res.send(modal); - return; - } else { - let result = templates_global.find(t => t.name == input); - let name = result.name || result.title.toLowerCase(); - let short_name = name.slice(0, 25) + "..."; - let desc = result.description.replaceAll(". ", ".\n") || "no description available"; - let short_desc = desc.slice(0, 60) + "..."; - let modal_name = name.replaceAll(" ", "-"); - let form_id = name.replaceAll("-", "_"); - let note = result.note ? result.note.replaceAll(". ", ".\n") : "no notes available"; - let command = result.command ? result.command : ""; - let command_check = command ? "checked" : ""; - let privileged = result.privileged || ""; - let privileged_check = privileged ? "checked" : ""; - let repository = result.repository || ""; - let image = result.image || ""; - let net_host, net_bridge, net_docker = ''; - let net_name = 'AppBridge'; - let restart_policy = result.restart_policy || 'unless-stopped'; - - switch (result.network) { - case 'host': - net_host = 'checked'; - break; - case 'bridge': - net_bridge = 'checked'; - net_name = result.network; - break; - default: - net_docker = 'checked'; - } + // console.log(req.body); - if (repository != "") { - image = (`${repository.url}/raw/master/${repository.stackfile}`); - } + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); - let [ports_data, volumes_data, env_data, label_data] = [[], [], [], []]; - - for (let i = 0; i < 12; i++) { - - // Get port details - try { - let ports = result.ports[i]; - let port_check = ports ? "checked" : ""; - let port_external = ports.split(":")[0] ? ports.split(":")[0] : ports.split("/")[0]; - let port_internal = ports.split(":")[1] ? ports.split(":")[1].split("/")[0] : ports.split("/")[0]; - let port_protocol = ports.split("/")[1] ? ports.split("/")[1] : ""; - - // remove /tcp or /udp from port_external if it exists - if (port_external.includes("/")) { - port_external = port_external.split("/")[0]; - } - - ports_data.push({ - check: port_check, - external: port_external, - internal: port_internal, - protocol: port_protocol - }); - } catch { - ports_data.push({ - check: "", - external: "", - internal: "", - protocol: "" - }); - } - - // Get volume details - try { - let volumes = result.volumes[i]; - let volume_check = volumes ? "checked" : ""; - let volume_bind = volumes.bind ? volumes.bind : ""; - let volume_container = volumes.container ? volumes.container.split(":")[0] : ""; - let volume_readwrite = "rw"; - - if (volumes.readonly == true) { - volume_readwrite = "ro"; - } - - volumes_data.push({ - check: volume_check, - bind: volume_bind, - container: volume_container, - readwrite: volume_readwrite - }); - } catch { - volumes_data.push({ - check: "", - bind: "", - container: "", - readwrite: "" - }); - } - - // Get environment details - try { - let env = result.env[i]; - let env_check = ""; - let env_default = env.default ? env.default : ""; - if (env.set) { env_default = env.set;} - let env_description = env.description ? env.description : ""; - let env_label = env.label ? env.label : ""; - let env_name = env.name ? env.name : ""; - - env_data.push({ - check: env_check, - default: env_default, - description: env_description, - label: env_label, - name: env_name - }); - } catch { - env_data.push({ - check: "", - default: "", - description: "", - label: "", - name: "" - }); - } - - // Get label details - try { - let label = result.labels[i]; - let label_check = ""; - let label_name = label.name ? label.name : ""; - let label_value = label.value ? label.value : ""; - - label_data.push({ - check: label_check, - name: label_name, - value: label_value - }); - } catch { - label_data.push({ - check: "", - name: "", - value: "" - }); - } - - } - - let modal = readFileSync('./views/modals/json.html', 'utf8'); - modal = modal.replace(/AppName/g, name); - modal = modal.replace(/AppNote/g, note); - modal = modal.replace(/AppImage/g, image); - modal = modal.replace(/RestartPolicy/g, restart_policy); - modal = modal.replace(/NetHost/g, net_host); - modal = modal.replace(/NetBridge/g, net_bridge); - modal = modal.replace(/NetDocker/g, net_docker); - modal = modal.replace(/NetName/g, net_name); - modal = modal.replace(/ModalName/g, modal_name); - modal = modal.replace(/FormId/g, form_id); - modal = modal.replace(/CommandCheck/g, command_check); - modal = modal.replace(/CommandValue/g, command); - modal = modal.replace(/PrivilegedCheck/g, privileged_check); + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); - for (let i = 0; i < 12; i++) { - modal = modal.replaceAll(`Port${i}Check`, ports_data[i].check); - modal = modal.replaceAll(`Port${i}External`, ports_data[i].external); - modal = modal.replaceAll(`Port${i}Internal`, ports_data[i].internal); - modal = modal.replaceAll(`Port${i}Protocol`, ports_data[i].protocol); + res.render("apps",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), + }); - modal = modal.replaceAll(`Volume${i}Check`, volumes_data[i].check); - modal = modal.replaceAll(`Volume${i}Bind`, volumes_data[i].bind); - modal = modal.replaceAll(`Volume${i}Container`, volumes_data[i].container); - modal = modal.replaceAll(`Volume${i}RW`, volumes_data[i].readwrite); - - modal = modal.replaceAll(`Env${i}Check`, env_data[i].check); - modal = modal.replaceAll(`Env${i}Default`, env_data[i].default); - modal = modal.replaceAll(`Env${i}Description`, env_data[i].description); - modal = modal.replaceAll(`Env${i}Label`, env_data[i].label); - modal = modal.replaceAll(`Env${i}Name`, env_data[i].name); - - modal = modal.replaceAll(`Label${i}Check`, label_data[i].check); - modal = modal.replaceAll(`Label${i}Name`, label_data[i].name); - modal = modal.replaceAll(`Label${i}Value`, label_data[i].value); - } - res.send(modal); - } -} - - -export const LearnMore = async (req, res) => { - let name = req.header('hx-trigger-name'); - let id = req.header('hx-trigger'); - - if (id == 'compose') { - let modal = readFileSync('./views/modals/learnmore.html', 'utf8'); - modal = modal.replace(/AppName/g, name); - modal = modal.replace(/AppDesc/g, 'Compose File'); - res.send(modal); - return; - } - - let result = templates_global.find(t => t.name == name); - - let modal = readFileSync('./views/modals/learnmore.html', 'utf8'); - modal = modal.replace(/AppName/g, result.title); - modal = modal.replace(/AppDesc/g, result.description); - - res.send(modal); -} - - -export const ImportModal = async (req, res) => { - let modal = readFileSync('./views/modals/import.html', 'utf8'); - res.send(modal); -} - - -export const Upload = (req, res) => { - upload.array('files', 10)(req, res, () => { - - alert = ``; - - - let exists_alert = ``; - - let files = readdirSync('templates/tmp/'); - - for (let i = 0; i < files.length; i++) { - - if (files[i].endsWith('.zip')) { - let zip = new AdmZip(`templates/tmp/${files[i]}`); - zip.extractAllTo('templates/compose', true); - unlinkSync(`templates/tmp/${files[i]}`); - } else if (files[i].endsWith('.json')) { - if (existsSync(`templates/json/${files[i]}`)) { - unlinkSync(`templates/tmp/${files[i]}`); - alert = exists_alert; - res.redirect('/apps'); - return; - } - renameSync(`templates/tmp/${files[i]}`, `templates/json/${files[i]}`); - } else if (files[i].endsWith('.yml')) { - let compose = readFileSync(`templates/tmp/${files[i]}`, 'utf8'); - let compose_data = parse(compose); - let service_name = Object.keys(compose_data.services); - if (existsSync(`templates/compose/${service_name}`)) { - unlinkSync(`templates/tmp/${files[i]}`); - alert = exists_alert; - res.redirect('/apps'); - return; - } - mkdirSync(`templates/compose/${service_name}`); - renameSync(`templates/tmp/${files[i]}`, `templates/compose/${service_name}/compose.yaml`); - } else if (files[i].endsWith('.yaml')) { - let compose = readFileSync(`templates/tmp/${files[i]}`, 'utf8'); - let compose_data = parse(compose); - let service_name = Object.keys(compose_data.services); - if (existsSync(`templates/compose/${service_name}`)) { - unlinkSync(`templates/tmp/${files[i]}`); - alert = exists_alert; - res.redirect('/apps'); - return; - } - mkdirSync(`templates/compose/${service_name}`); - renameSync(`templates/tmp/${files[i]}`, `templates/compose/${service_name}/compose.yaml`); - } else { - // unsupported file type - unlinkSync(`templates/tmp/${files[i]}`); - } - } - res.redirect('/apps'); - }); -}; \ No newline at end of file +} \ No newline at end of file diff --git a/controllers/dashboard.js b/controllers/dashboard.js index fb8274b..a2cc4b4 100644 --- a/controllers/dashboard.js +++ b/controllers/dashboard.js @@ -1,348 +1,74 @@ -import { Readable } from 'stream'; +import { currentLoad, mem, networkStats, fsSize } from 'systeminformation'; +import { containerList, containerInspect } from '../utils/docker.js'; import { readFileSync } from 'fs'; -import { currentLoad, mem, networkStats, fsSize, dockerContainerStats } from 'systeminformation'; -import { Permission, User, ServerSettings } from '../database/models.js'; -import { Op } from 'sequelize'; -import { docker, containerList, containerInspect } from '../utils/docker.js'; +import { User } from '../database/config.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; -let [ hidden, alert, newCards, stats ] = [ '', '', '', {} ]; -let logString = ''; +export const Dashboard = async function(req,res){ + let container_list = ''; -export const Dashboard = async (req, res) => { - const { host } = req.params; - let { link1, link2, link3, link4, link5, link6, link7, link8, link9 } = ['', '', '', '', '', '', '', '', '']; - // if (host) { console.log(`Viewing Host: ${host}`); } else { console.log('Viewing Host: 1'); } + let containers = await containerList(); + for (let container of containers) { + let details = await containerInspect(container.containerID); + let container_card = readFileSync('./views/partials/container_card.html', 'utf8'); - res.render("dashboard", { - username: req.session.username, - avatar: req.session.username.charAt(0).toUpperCase(), - role: req.session.role, - alert: req.session.alert, - link1: link1, - link2: link2, - link3: link3, - link4: link4, - link5: link5, - link6: '', - link7: '', - link8: '', - link9: '', - }); -} - - -export const DashboardAction = async (req, res) => { - let name = req.header('hx-trigger-name'); - let value = req.header('hx-trigger'); - const { action } = req.params; - let modal = ''; - console.log(`Action: ${action} Name: ${name} Value: ${value}`); - - if (req.body.search) { - console.log(req.body.search); - res.send('search'); - return; - } - - if (action == 'get_containers') { - res.send(newCards); - newCards = ''; - return; - } - - // Creates the permissions modal - if (action == 'permissions') { - // To capitalize the title - let title = name.charAt(0).toUpperCase() + name.slice(1); - // Empty the permissions list - let permissions_list = ''; - // Get the container ID - let container = docker.getContainer(name); - let containerInfo = await container.inspect(); - let container_id = containerInfo.Id; - // Get the body of the permissions modal - let permissions_modal = readFileSync('./views/modals/permissions.html', 'utf8'); - // Replace the title and container name in the modal - permissions_modal = permissions_modal.replace(/PermissionsTitle/g, title); - permissions_modal = permissions_modal.replace(/PermissionsContainer/g, name); - permissions_modal = permissions_modal.replace(/ContainerID/g, container_id); - // Get a list of all users - let users = await User.findAll({ attributes: ['username', 'userID']}); - // Loop through each user to check what permissions they have - for (let i = 0; i < users.length; i++) { - // Get the user_permissions form - let user_permissions = readFileSync('./views/partials/user_permissions.html', 'utf8'); - // Check if the user has any permissions for the container - let exists = await Permission.findOne({ where: { containerID: container_id, userID: users[i].userID }}); - // Create an entry if one doesn't exist - if (!exists) { const newPermission = await Permission.create({ containerName: name, containerID: container_id, username: users[i].username, userID: users[i].userID }); } - // Get the permissions for the user - let permissions = await Permission.findOne({ where: { containerID: container_id, userID: users[i].userID }}); - // Fill in the form values - if (permissions.uninstall == true) { user_permissions = user_permissions.replace(/data-UninstallCheck/g, 'checked'); } - if (permissions.edit == true) { user_permissions = user_permissions.replace(/data-EditCheck/g, 'checked'); } - if (permissions.upgrade == true) { user_permissions = user_permissions.replace(/data-UpgradeCheck/g, 'checked'); } - if (permissions.start == true) { user_permissions = user_permissions.replace(/data-StartCheck/g, 'checked'); } - if (permissions.stop == true) { user_permissions = user_permissions.replace(/data-StopCheck/g, 'checked'); } - if (permissions.pause == true) { user_permissions = user_permissions.replace(/data-PauseCheck/g, 'checked'); } - if (permissions.restart == true) { user_permissions = user_permissions.replace(/data-RestartCheck/g, 'checked'); } - if (permissions.logs == true) { user_permissions = user_permissions.replace(/data-LogsCheck/g, 'checked'); } - if (permissions.view == true) { user_permissions = user_permissions.replace(/data-ViewCheck/g, 'checked'); } - user_permissions = user_permissions.replace(/EntryNumber/g, i); - user_permissions = user_permissions.replace(/EntryNumber/g, i); - user_permissions = user_permissions.replace(/EntryNumber/g, i); - user_permissions = user_permissions.replace(/PermissionsUsername/g, users[i].username); - user_permissions = user_permissions.replace(/PermissionsUsername/g, users[i].username); - user_permissions = user_permissions.replace(/PermissionsUsername/g, users[i].username); - user_permissions = user_permissions.replace(/PermissionsContainer/g, name); - user_permissions = user_permissions.replace(/PermissionsContainer/g, name); - user_permissions = user_permissions.replace(/PermissionsContainer/g, name); - user_permissions = user_permissions.replace(/PermissionsUserID/g, users[i].userID); - user_permissions = user_permissions.replace(/PermissionsID/g, container_id); - // Add the user entry to the permissions list - permissions_list += user_permissions; + if (details.name.length > 17) { + details.name = details.name.substring(0, 17) + '...'; } - // Insert the user list into the permissions modal - permissions_modal = permissions_modal.replace(/PermissionsList/g, permissions_list); - // Send the permissions modal - res.send(permissions_modal); - return; + + // Capitalize the first letter of the name + details.name = details.name.charAt(0).toUpperCase() + details.name.slice(1); + + + let state = details.state; + let state_color = ''; + + switch (state) { + case 'running': + state_color = 'green'; + break; + case 'exited': + state = 'stopped'; + state_color = 'red'; + break; + case 'paused': + state_color = 'orange'; + break; + case 'installing': + state_color = 'blue'; + break; + } + + container_card = container_card.replace(/AppName/g, details.name); + container_card = container_card.replace(/AppService/g, details.service); + container_card = container_card.replace(/AppState/g, state); + container_card = container_card.replace(/StateColor/g, state_color); + + if (details.external_port == 0 && details.internal_port == 0) { + container_card = container_card.replace(/AppPorts/g, ``); + } else { + container_card = container_card.replace(/AppPorts/g, `${details.external_port}:${details.internal_port}`); + } + + + container_list += container_card; } - switch (action) { - case 'uninstall': - modal = readFileSync('./views/modals/uninstall.html', 'utf8'); - modal = modal.replace(/AppName/g, name); - res.send(modal); - return; - case 'details': - modal = readFileSync('./views/modals/details.html', 'utf8'); - let details = await containerInfo(name); - modal = modal.replace(/AppName/g, details.name); - modal = modal.replace(/AppImage/g, details.image); - for (let i = 0; i <= 6; i++) { - modal = modal.replaceAll(`Port${i}Check`, details.ports[i]?.check || ''); - modal = modal.replaceAll(`Port${i}External`, details.ports[i]?.external || ''); - modal = modal.replaceAll(`Port${i}Internal`, details.ports[i]?.internal || ''); - modal = modal.replaceAll(`Port${i}Protocol`, details.ports[i]?.protocol || ''); - } - for (let i = 0; i <= 6; i++) { - modal = modal.replaceAll(`Vol${i}Source`, details.volumes[i]?.Source || ''); - modal = modal.replaceAll(`Vol${i}Destination`, details.volumes[i]?.Destination || ''); - modal = modal.replaceAll(`Vol${i}RW`, details.volumes[i]?.RW || ''); - } - for (let i = 0; i <= 19; i++) { - modal = modal.replaceAll(`Label${i}Key`, Object.keys(details.labels)[i] || ''); - modal = modal.replaceAll(`Label${i}Value`, Object.values(details.labels)[i] || ''); - } - // console.log(details.env); - for (let i = 0; i <= 19; i++) { - modal = modal.replaceAll(`Env${i}Key`, details.env[i]?.split('=')[0] || ''); - modal = modal.replaceAll(`Env${i}Value`, details.env[i]?.split('=')[1] || ''); - } - res.send(modal); - return; - case 'card': - // Check which cards the user has permissions for - await userCards(req.session); - // Remove the container if it isn't in the user's list - if (!req.session.container_list.find(c => c.container === name)) { - res.send(''); - return; - } else { - // Get the container information and send the updated card - let details = await containerInfo(value); - let card = await createCard(details); - res.send(card); - return; - } - case 'logs': - logString = ''; - let options = { follow: false, stdout: true, stderr: false, timestamps: true }; - console.log(`Getting logs for ${name}`); - docker.getContainer(name).logs(options, function (err, stream) { - if (err) { console.log(`some error getting logs`); return; } - const readableStream = Readable.from(stream); - readableStream.on('data', function (chunk) { - logString += chunk.toString('utf8'); - }); - readableStream.on('end', function () { - res.send(`
    ${logString}
    `); - }); - }); - return; - case 'alert': - req.session.alert = ''; - res.send(''); - return; - } -} - - - -async function createCard (details) { - let { containerName, containerID, containerState } = details; - // console.log(`Creating card for ${containerName} ID: ${containerID} Service: ${containerService} State: ${containerState}`); - let container = await containerInspect(containerID); - - let shortname = containerName.slice(0, 10) + '...'; - let trigger = 'data-hx-trigger="load, every 3s"'; - let state = containerState; - let state_color = ''; - let app_icon = container.service; - let links = await ServerSettings.findOne({ where: {key: 'links'}}); - if (!links) { links = { value: 'localhost' }; } - switch (state) { - case 'running': - state_color = 'green'; - break; - case 'exited': - state = 'stopped'; - state_color = 'red'; - trigger = 'data-hx-trigger="load"'; - break; - case 'paused': - state_color = 'orange'; - trigger = 'data-hx-trigger="load"'; - break; - case 'installing': - state_color = 'blue'; - trigger = 'data-hx-trigger="load"'; - break; - } - let card = readFileSync('./views/partials/containerFull.html', 'utf8'); - card = card.replace(/AppName/g, containerName); - card = card.replace(/AppID/g, containerID); - card = card.replace(/AppShortName/g, shortname); - card = card.replace(/AppIcon/g, app_icon); - card = card.replace(/AppState/g, state); - card = card.replace(/StateColor/g, state_color); - card = card.replace(/AppLink/g, links.value); - card = card.replace(/ChartName/g, containerName.replace(/-/g, '')); - card = card.replace(/AppNameState/g, `${containerName}State`); - card = card.replace(/data-trigger=""/, trigger); - - // Show nothing if there are no ports exposed. - if ((container.external_port == 0) && (container.internal_port == 0)) { card = card.replace(/AppPorts/g, ''); } - else { card = card.replace(/AppPorts/g, `${container.external_port}:${container.internal_port}`); } - - return card; -} - - -// Creates a list of containers that the user should be able to see. -async function updateLists(session, host) { - // Create an empty container list. - session.container_list = []; - // Check what containers the user has hidden. - let hidden = await Permission.findAll({ where: { userID: session.userID, hide: true }, attributes: ['containerID'], raw: true }); - // Check which containers the user has permissions for. - let visable = await Permission.findAll({ where: { userID: session.userID, [Op.or]: [{ uninstall: true }, { edit: true }, { upgrade: true }, { start: true }, { stop: true }, { pause: true }, { restart: true }, { logs: true }, { view: true }] }, attributes: ['containerID'], raw: true}); - let containers = await containerList(host); - // Loop through the list of containers. - for (let i = 0; i < containers.length; i++) { - // Get the container ID. - let containerID = containers[i].containerID; - // Skip the container if it's ID is in the hidden list. - if (hidden.includes(containerID)) { console.log('skipped hidden container'); continue; } - // If the user is admin and they don't have it hidden, add it to the list. - if (session.role == 'admin') { session.container_list.push({ containerName: containers[i].containerName, containerID: containerID, containerState: containers[i].containerState }); } - // Add the container if it's ID is in the visable list. - else if (visable.includes(containerID)){ session.container_list.push({ containerName: containers[i].containerName, containerID: containerID, containerState: containers[i].containerState }); } - } - // Create the lists if they don't exist. - if (!session.sent_list) { session.sent_list = []; } - if (!session.update_list) { session.update_list = []; } - if (!session.new_cards) { session.new_cards = []; } - - session.new_cards = []; - session.update_list = []; - // Loop through the containers list - session.container_list.forEach(info => { - // Get the containerID and state - let { containerName, containerID, containerState } = info; - // Check if the containerID is in the sent list - let sent = session.sent_list.find(c => c.containerID === containerID); - // If it's not in the sent list, add it to the new cards list. - if (!sent) { session.new_cards.push({ containerName, containerID, containerState }); } - // If it is in the sent list, check if the state has changed. - else if (sent.containerState !== containerState) { session.update_list.push({ containerName, containerID, containerState }); } - }); - // Loop through the sent list to see if any containers have been removed - session.sent_list.forEach(info => { - let { containerName, containerID, containerState } = info; - let exists = session.container_list.find(c => c.containerID === containerID); - if (!exists) { session.update_list.push({ containerName, containerID, containerState }); } - }); -} - - - -// HTMX server-side events -export const SSE = async (req, res) => { - let running = false; - let skipped_events = 0; - - // Set the headers - res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); - - // Updates req.session.container_list with the containers the user can see. - await newEvent(); - - // Event trigger with debounce - - async function newEvent() { - if (!running) { - console.log('[Docker event]'); - running = true; - // Update the container lists - await updateLists(req.session, 'host'); - // Check if the container_list is the same as the sent_list - if ((JSON.stringify(req.session.container_list) != JSON.stringify(req.session.sent_list))) { - console.log('Updating dashboard'); - // New card - for (let i = 0; i < req.session.new_cards.length; i++) { - console.log('SSE event: new card'); - let card = await createCard(req.session.new_cards[i]); - newCards += card; - req.session.alert = ''; - } - // Card needs to be updated - for (let i = 0; i < req.session.update_list.length; i++) { - console.log(`SSE event: update card ${req.session.update_list[i].containerName} ${req.session.update_list[i].containerID}`); - res.write(`event: ${req.session.update_list[i].containerID}\n`); - res.write(`data: 'update cards'\n\n`); - } - - res.write(`event: update\n`); - res.write(`data: 'update cards'\n\n`); - req.session.sent_list = req.session.container_list.slice(); - } - - // res.write(`event: update\n`); - // res.write(`data: 'update cards'\n\n`); - - setTimeout(() => { - running = false; - // console.log(`Skipped ${skipped_events} events`); - skipped_events = 0; - }, 300); - } else { skipped_events++; } - } - - // Listens for docker events - docker.getEvents({}, function (err, data) { - data.on('data', function () { - newEvent(); - }); + res.render("dashboard",{ + alert: '', + username: req.session.username, + role: req.session.role, + container_list: container_list, + navbar: await Navbar(req), }); -}; +} + // Server metrics (CPU, RAM, TX, RX, DISK) -export const Stats = async (req, res) => { +export const ServerMetrics = async (req, res) => { let name = req.header('hx-trigger-name'); let color = req.header('hx-trigger'); let value = 0; @@ -369,124 +95,9 @@ export const Stats = async (req, res) => { res.send(info); } -// Imported by utils/install.js -export async function addAlert (session, type, message) { - session.alert = ``; -} -// Update container permissions. -export const UpdatePermissions = async (req, res) => { - let { userID, container, containerID, reset_permissions } = req.body; - let id = req.header('hx-trigger'); - // console.log(`User: ${userID} Container: ${container} ContainerID: ${containerID} Reset: ${reset_permissions}`); - if (reset_permissions) { - await Permission.update({ uninstall: false, edit: false, upgrade: false, start: false, stop: false, pause: false, restart: false, logs: false, view: false }, { where: { containerID: containerID} }); - return; - } - await Permission.update({ uninstall: false, edit: false, upgrade: false, start: false, stop: false, pause: false, restart: false, logs: false, view: false}, { where: { containerID: containerID, userID: userID } }); - Object.keys(req.body).forEach(async function(key) { - if (key != 'user' && key != 'container') { - let permissions = req.body[key]; - if (permissions.includes('uninstall')) { await Permission.update({ uninstall: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('edit')) { await Permission.update({ edit: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('upgrade')) { await Permission.update({ upgrade: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('start')) { await Permission.update({ start: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('stop')) { await Permission.update({ stop: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('pause')) { await Permission.update({ pause: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('restart')) { await Permission.update({ restart: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('logs')) { await Permission.update({ logs: true }, { where: { containerID: containerID, userID: userID}}); } - if (permissions.includes('view')) { await Permission.update({ view: true }, { where: { containerID: containerID, userID: userID}}); } - } - }); - if (id == 'submit') { - res.send(''); - return; - } else if (id == 'confirmed') { - res.send(''); - return; - } -} - -// Container charts -export const Chart = async (req, res) => { - let name = req.header('hx-trigger-name'); - if (!stats[name]) { stats[name] = { cpuArray: Array(15).fill(0), ramArray: Array(15).fill(0) }; } - const info = await dockerContainerStats(name); - stats[name].cpuArray.push(Math.round(info[0].cpuPercent)); - stats[name].ramArray.push(Math.round(info[0].memPercent)); - stats[name].cpuArray = stats[name].cpuArray.slice(-15); - stats[name].ramArray = stats[name].ramArray.slice(-15); - let chart = ` - ` - res.send(chart); -} - -// Container actions (start, stop, pause, restart, hide) -export const ContainerAction = async (req, res) => { - // Assign values - let container_name = req.header('hx-trigger-name'); - let container_id = req.header('hx-trigger'); - let action = req.params.action; - - console.log(`Container: ${container_name} ID: ${container_id} Action: ${action}`); - - // Reset the view - if (container_id == 'reset') { - console.log('Resetting view'); - await Permission.update({ hide: false }, { where: { userID: req.session.userID } }); - res.send('ok'); - return; - } - // Inspect the container - let container = docker.getContainer(container_id); - let containerInfo = await container.inspect(); - let state = containerInfo.State.Status; - // console.log(`Container: ${container_name} ID: ${container_id} State: ${state} Action: ${action}`); - // Displays container state (starting, stopping, restarting, pausing) - function status (state) { - return(` - ${state} - `); - } - // Perform the action - if ((action == 'start') && (state == 'exited')) { - await container.start(); - res.send(status('starting')); - } else if ((action == 'start') && (state == 'paused')) { - await container.unpause(); - res.send(status('starting')); - } else if ((action == 'stop') && (state != 'exited')) { - await container.stop(); - res.send(status('stopping')); - } else if ((action == 'pause') && (state == 'paused')) { - await container.unpause(); - res.send(status('starting')); - } else if ((action == 'pause') && (state == 'running')) { - await container.pause(); - res.send(status('pausing')); - } else if (action == 'restart') { - await container.restart(); - res.send(status('restarting')); - } else if (action == 'hide') { - let exists = await Permission.findOne({ where: { containerID: container_id, userID: req.session.userID }}); - if (!exists) { const newPermission = await Permission.create({ containerName: container_name, containerID: container_id, username: req.session.username, userID: req.session.userID, hide: true }); } - else { exists.update({ hide: true }); } - // Array of hidden containers - hidden = await Permission.findAll({ where: { userID: req.session.userID, hide: true}}, { attributes: ['containerID'] }); - // Map the container IDs - hidden = hidden.map((container) => container.containerID); - res.send("ok"); - } +export const submitDashboard = async function(req,res){ + console.log(req.body); + res.send('ok'); + return; } \ No newline at end of file diff --git a/controllers/images.js b/controllers/images.js index dbf76d0..51bab68 100644 --- a/controllers/images.js +++ b/controllers/images.js @@ -1,68 +1,32 @@ -import { docker } from '../utils/docker.js'; -import { addAlert } from './dashboard.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; +import { containerList, imageList } from '../utils/docker.js'; -export const Images = async function(req, res) { +export const Images = async function(req,res){ - let action = req.params.action; - - console.log(req.params.host); - - if (action == "remove") { - let images = req.body.select; - - if (typeof(images) == 'string') { - images = [images]; - } - - for (let i = 0; i < images.length; i++) { - if (images[i] != 'on') { - try { - console.log(`Removing image: ${images[i]}`); - let image = docker.getImage(images[i]); - await image.remove(); - } catch (error) { - console.log(`Unable to remove image: ${images[i]}`); - } - } - } - res.redirect("/images"); - return; - } else if (action == "add") { - let image = req.body.image; - let tag = req.body.tag || 'latest'; - - try { - console.log(`Pulling image: ${image}:${tag}`); - await docker.pull(`${image}:${tag}`); - } catch (error) { - console.log(`Unable to pull image: ${image}:${tag}`); - } - res.redirect("/images"); - return; - } - - let containers = await docker.listContainers({ all: true }); let container_images = []; + + let containers = await containerList(); for (let i = 0; i < containers.length; i++) { container_images.push(containers[i].Image); } - let images = await docker.listImages({ all: true }); + let images = await imageList(); + // Top of the table let image_list = ` - - - - - - - - - - - - - ` + + + + + + + + + + + + + ` for (let i = 0; i < images.length; i++) { @@ -101,23 +65,33 @@ export const Images = async function(req, res) { image_list += `` - - res.render("images", { + res.render("images",{ + alert: '', username: req.session.username, role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), + image_count: '', image_list: image_list, - image_count: images.length, + navbar: await Navbar(req), + }); +} + + + +export const submitImages = async function(req,res){ + + // console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + res.render("images",{ alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), }); } \ No newline at end of file diff --git a/controllers/login.js b/controllers/login.js index 3d5bf32..0934bac 100644 --- a/controllers/login.js +++ b/controllers/login.js @@ -1,96 +1,37 @@ import bcrypt from 'bcrypt'; -import { User, Syslog } from '../database/models.js'; - -// Environment variable to disable authentication. -const no_auth = process.env.NO_AUTH || false; +import { User, Syslog } from '../database/config.js'; export const Login = function(req,res){ - if (req.session.username) { res.redirect("/dashboard"); } - else { res.render("login",{ "error":"", }); } + if (req.session.userID) { res.redirect("/dashboard"); } + else { res.render("login",{ + "error":"", + }); } } +export const submitLogin = async function(req,res){ + const { password } = req.body; + let email = req.body.email.toLowerCase(); + + let error = ''; + if (!email || !password) { error = "Invalid credentials."; } + + let user = await User.findOne({ where: { email: email }}); + + if (!user || !await bcrypt.compare(password, user.password)) { error = "Invalid credentials."; } + + if (error) { res.render("login",{ "error":error }); return; } + else { + req.session.username = user.username; + req.session.userID = user.userID; + req.session.role = user.role; + res.redirect("/dashboard"); + } + +} export const Logout = function(req,res){ req.session.destroy(() => { res.redirect("/login"); }); -} - - -export const submitLogin = async function(req,res){ - - // Grab values from the form. - let { email, password } = req.body; - - // Convert the email to lowercase. - email = email.toLowerCase(); - - // Create an admin session if NO_AUTH is enabled and the user is on localhost. - if (no_auth && req.hostname == 'localhost') { - req.session.username = 'Localhost'; - req.session.userID = ''; - req.session.role = 'admin'; - res.redirect("/dashboard"); - return; - } - - // Check that all fields are filled out. - if (!email || !password) { - res.render("login",{ - "error":"Please fill in all fields.", - }); - return; - } - - // Check that the user exists. - let user = await User.findOne({ where: { email: email }}); - if (!user) { - res.render("login",{ - "error":"Invalid credentials.", - }); - return; - } - - // Check that the password is correct. - let password_check = await bcrypt.compare( password, user.password); - - // If the password is incorrect, log the failed login attempt. - if (!password_check) { - res.render("login",{ - "error":"Invalid credentials.", - }); - const syslog = await Syslog.create({ - user: null, - email: email, - event: "Bad Login", - message: "Invalid password", - ip: req.socket.remoteAddress - }); - return; - } - - // Successful login. Create the user session. - req.session.username = user.username; - req.session.userID = user.userID; - req.session.role = user.role; - - // Update the last login time. - let date = new Date(); - let new_login = date.toLocaleString(); - await User.update({ lastLogin: new_login }, { where: { userID: user.userID}}); - - // Create a login entry. - const syslog = await Syslog.create({ - user: req.session.username, - email: email, - event: "Successful Login", - message: "User logged in successfully", - ip: req.socket.remoteAddress - }); - - // Redirect to the dashboard. - res.redirect("/dashboard"); -} - - +} \ No newline at end of file diff --git a/controllers/networks.js b/controllers/networks.js index 9a80331..1ffb24e 100644 --- a/controllers/networks.js +++ b/controllers/networks.js @@ -1,90 +1,38 @@ -import { docker } from '../utils/docker.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; + +export const Networks = async function(req,res){ -export const Networks = async function(req, res) { - let container_networks = []; - let network_name = ''; - - console.log(req.params.host); - - // List all containers - let containers = await docker.listContainers({ all: true }); - // Loop through the containers to find out which networks are being used - for (let i = 0; i < containers.length; i++) { - // console.log(Object.keys(containers[i].NetworkSettings.Networks)[0]); - try { network_name += containers[i].HostConfig.NetworkMode; } catch {} - try { container_networks.push(containers[i].NetworkSettings.Networks[network_name].NetworkID); } catch {} - } - // List all networks - let networks = await docker.listNetworks({ all: true }); - // Uses template literals to build the networks table - let network_list = ` - - - - - - - - - - - ` - - for (let i = 0; i < networks.length; i++) { - let status = ''; - // Check if the network is in use - try { if (container_networks.includes(networks[i].Id)) { status = `In use`; } } catch {} - // Create the row for the network entry - let details = ` - - - ${networks[i].Name} - ${networks[i].Id} - ${status} - ${networks[i].Created} - Details - ` - // Add the row to the network list - network_list += details; - } - network_list += `` - - res.render("networks", { + res.render("networks",{ + alert: '', username: req.session.username, role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - network_list: network_list, - network_count: networks.length, - alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + network_count: '', + network_list: '', + navbar: await Navbar(req), }); } -export const removeNetwork = async function(req, res) { - // Grab the list of networks - let networks = req.body.select; - // Make sure the value is an array - if (typeof(networks) == 'string') { networks = [networks]; } - // Loop through the array - for (let i = 0; i < networks.length; i++) { - if (networks[i] != 'on') { - try { - let network = docker.getNetwork(networks[i]); - await network.remove(); - } - catch { - console.log(`Unable to remove network: ${networks[i]}`); - } - } - } - res.redirect("/networks"); + + +export const submitNetworks = async function(req,res){ + + // console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + + res.render("networks",{ + alert: '', + username: req.session.username, + role: req.session.role, + network_count: '', + network_list: '', + navbar: await Navbar(req), + }); + } \ No newline at end of file diff --git a/controllers/preferences.js b/controllers/preferences.js new file mode 100644 index 0000000..e360a03 --- /dev/null +++ b/controllers/preferences.js @@ -0,0 +1,71 @@ +import { ServerSettings, User } from '../database/config.js'; +import { Alert, getLanguage, Navbar, Capitalize } from '../utils/system.js'; + +export const Preferences = async function(req,res){ + + let language = await getLanguage(req); + let Language = Capitalize(language); + let selected = ``; + + let user = await User.findOne({ where: { userID: req.session.userID }}); + let preferences = JSON.parse(user.preferences); + let hide_profile = preferences.hide_profile; + + let checked = ''; + if (hide_profile == true) { checked = 'checked'; } + + res.render("preferences",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), + selected: selected, + hide_profile: checked, + + }); +} + + + +export const submitPreferences = async function(req,res){ + + let { language_input, hidden_input } = req.body; + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + // console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + if (hidden_input == 'on') { hidden_input = true; } else { hidden_input = false; } + + let user_preferences = { + language: language_input, + hide_profile: hidden_input, + }; + + if (language_input != undefined && hidden_input != undefined) { + await User.update({ preferences: JSON.stringify(user_preferences) }, { where: { userID: req.session.userID }}); + } + + // [HTMX Triggered] Changes the update button. + if(trigger_id == 'preferences'){ + res.send(``); + return; + } else if (trigger_id == 'submit'){ + res.send(``); + return; + } + + let language = await getLanguage(req); + let Language = Capitalize(language); + let selected = ``; + + res.render("preferences",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), + selected: selected, + }); + +} \ No newline at end of file diff --git a/controllers/register.js b/controllers/register.js index 0c9624b..27b6a50 100644 --- a/controllers/register.js +++ b/controllers/register.js @@ -1,135 +1,83 @@ -import bcrypt from 'bcrypt'; -import { User, Syslog, Permission, ServerSettings } from '../database/models.js'; +import bcrypt from "bcrypt"; +import { Op } from "sequelize"; +import { User, ServerSettings } from "../database/config.js"; -export const Register = async function (req,res) { +export const Register = async function(req,res){ // Redirect to dashboard if user is already logged in. - if(req.session.user){ res.redirect("/dashboard"); return; } + if (req.session.username) { res.redirect("/dashboard"); } - // Continue to registration page if no users have been created. - let users = await User.count(); - if (users == 0) { - const disable_passphrase = await ServerSettings.create({ key: 'registration', value: ''}); - res.render("register",{ - "error": "Creating admin account. Leave passphrase blank.", - }); + let secret_input = ''; + let registration_secret = await ServerSettings.findOne({ where: { key: 'registration' }}).value; + + // Input field for secret if one has been set. + if (registration_secret) { + secret_input = `
    +
    + +
    +
    `} + + // If there are no users, or a registration secret has not been set, display the registration page. + if ((await User.count() == 0) || (registration_secret == '')) { + res.render("register",{ + "error": "", + "reg_secret": secret_input, + }); } else { - // Check if registration is enabled. - let registration = await ServerSettings.findOne({ where: {key: 'registration'}}); - if (registration.value == 'off') { - res.render("login",{ - "error":"User registration is disabled.", - }); - } else { - res.render("register",{ - "error":"", - }); - } + res.render("login", { + "error": "User registration is disabled." + }); } } +export const submitRegister = async function(req,res){ -export const submitRegister = async function (req,res) { + const { name, username, password, confirm, secret } = req.body; + let email = req.body.email.toLowerCase(); - // Grab values from the form. - let { name, username, email, password1, password2, passphrase } = req.body; + let registration_secret = await ServerSettings.findOne({ where: { key: 'registration' }}).value; - // Convert the email to lowercase. - email = email.toLowerCase(); + let error = ''; + if (!name || !username || !email || !password || !confirm) { error = "All fields are required"; } + else if (password !== confirm) { error = "Passwords do not match"; } + else if (registration_secret && secret !== registration_secret) { error = "Invalid secret"; } + else if (await User.findOne({ where: { [Op.or]: [{ username: username }, { email: email }] }})) { error = "Username or email already exists"; } - // Get the registration passphrase. - let registration_passphrase = await ServerSettings.findOne({ where: { key: 'registration' }}); - registration_passphrase = registration_passphrase.value; - - // Create a log entry if the form is submitted with an invalid passphrase. - if (passphrase != registration_passphrase) { - const syslog = await Syslog.create({ - user: username, - email: email, - event: "Failed Registration", - message: "Invalid secret", - ip: req.socket.remoteAddress - }); - res.render("register",{ - "error":"Invalid passphrase", - }); + if (error) { + res.render("register", { "error": error }); return; } - // Check that all fields are filled out correctly. - if ((!name || !username || !email || !password1 || !password2) || (password1 != password2)) { - res.render("register",{ - "error":"Missing field or password mismatch.", - }); - return; - } - - // Make sure the username and email are unique. - let existing_username = await User.findOne({ where: {username:username}}); - let existing_email = await User.findOne({ where: {email:email}}); - if (existing_username || existing_email) { - res.render("register",{ - "error":"Username or email already exists.", - }); - return; - } - - // Make the user an admin and disable registration if there are no other users. - async function userRole () { - let userCount = await User.count(); - if (userCount == 0) { - await ServerSettings.update({ value: 'off' }, { where: { key: 'registration' }}); - return "admin"; - } else { - return "user"; - } + // Returns 'admin' if no users have been created. + async function Role() { + if (await User.count() == 0) { return "admin"; } + else { return "user"; } } // Create the user. - const user = await User.create({ + await User.create({ name: name, username: username, email: email, - password: bcrypt.hashSync(password1,10), - role: await userRole(), - group: 'all', + password: bcrypt.hashSync(password, 10), + role: await Role(), + preferences: JSON.stringify({ language: "english", hidden_profile: false }), lastLogin: new Date().toLocaleString(), }); - // make sure the user was created and get the UUID. - let newUser = await User.findOne({ where: { email: email }}); - let match = await bcrypt.compare( password1, newUser.password); - - if (match) { - // Create the user session. - req.session.username = newUser.username; - req.session.userID = newUser.userID; - req.session.role = newUser.role; - - // Create an entry in the permissions table. - await Permission.create({ username: req.session.username, userID: req.session.userID }); - - // Create a log entry. - const syslog = await Syslog.create({ - user: req.session.username, - email: email, - event: "Successful Registration", - message: "User registered successfully", - ip: req.socket.remoteAddress - }); + // Make sure the user was created and get the UUID. + let user = await User.findOne({ where: { email: email }}); + let match = await bcrypt.compare(password, user.password); + if (match) { + console.log(`User ${username} created`); + req.session.username = user.username; + req.session.userID = user.userID; + req.session.role = user.role; res.redirect("/dashboard"); } else { - // Create a log entry. - const syslog = await Syslog.create({ - user: req.session.username, - email: email, - event: "Failed Registration", - message: "User not created", - ip: req.socket.remoteAddress - }); - res.render("register",{ - "error":"User not created", - }); + res.render("register", { "error": "Error. User not created" }); } -} \ No newline at end of file +} + diff --git a/controllers/settings.js b/controllers/settings.js index 31d389c..33f9742 100644 --- a/controllers/settings.js +++ b/controllers/settings.js @@ -1,192 +1,50 @@ -import { readFileSync } from 'fs'; -import { ServerSettings } from '../database/models.js'; +import { ServerSettings } from '../database/config.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; + +export const Settings = async function(req,res){ + + let container_links = await ServerSettings.findOne({ where: {key: 'container_links'}}); + let user_registration = await ServerSettings.findOne({ where: {key: 'user_registration'}}); -export const Settings = async (req, res) => { - - let settings = readFileSync('views/partials/settings.html', 'utf8'); - - let links = await ServerSettings.findOne({ where: {key: 'links'}}); - try { - if (links.value != 'localhost' && links.value != '') { - settings = settings.replaceAll('data-LinkMode', 'checked'); - settings = settings.replaceAll('data-LinkValue', `value="${links.value}"`); - } - } catch { - console.log(`Container Links: No Value Set`) - } - - let registration = await ServerSettings.findOne({ where: {key: 'registration'}}); - try { - if (registration.value != 'off' && registration.value != '') { - settings = settings.replaceAll('data-UserReg', 'checked'); - settings = settings.replaceAll('data-Passphrase', `value="${registration.value}"`); - } - } catch { - console.log(`User Registration: No Value Set`); - } - - async function hostInfo(host) { - let info = await ServerSettings.findOne({ where: {key: host}}); - try { - if (info.value != 'off' && info.value != '') { - let values = info.value.split(','); - return { tag: values[0], ip: values[1], port: values[2] }; - } - } catch { - console.log(`${host}: No Value Set`); - } - } - - let host2 = await hostInfo('host2'); - if (host2) { - settings = settings.replaceAll('data-Host2', 'checked'); - settings = settings.replaceAll('data-Tag2', `value="${host2.tag}"`); - settings = settings.replaceAll('data-Ip2', `value="${host2.ip}"`); - settings = settings.replaceAll('data-Port2', `value="${host2.port}"`); - } - - let host3 = await hostInfo('host3'); - if (host3) { - settings = settings.replaceAll('data-Host3', 'checked'); - settings = settings.replaceAll('data-Tag3', `value="${host3.tag}"`); - settings = settings.replaceAll('data-Ip3', `value="${host3.ip}"`); - settings = settings.replaceAll('data-Port3', `value="${host3.port}"`); - } - - let host4 = await hostInfo('host4'); - if (host4) { - settings = settings.replaceAll('data-Host4', 'checked'); - settings = settings.replaceAll('data-Tag4', `value="${host4.tag}"`); - settings = settings.replaceAll('data-Ip4', `value="${host4.ip}"`); - settings = settings.replaceAll('data-Port4', `value="${host4.port}"`); - } - - - res.render("settings", { + res.render("settings",{ + alert: '', username: req.session.username, role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - alert: '', - settings: settings, - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + user_registration: 'checked', + registration_secret: 'some-long-secret', + container_links: 'checked', + link_url: 'mydomain.com', + navbar: await Navbar(req), }); } -export const updateSettings = async (req, res) => { - let trigger = req.header('hx-trigger'); - if (trigger == 'updated') { - let update = `` - res.send(update); +export const submitSettings = async function(req,res){ + + console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + // [HTMX Triggered] Changes the update button. + if(trigger_id == 'settings'){ + res.send(``); + return; + } else if (trigger_id == 'submit'){ + res.send(``); return; } - // Container links - let { link_mode, link } = req.body; - if (link_mode) { - let exists = await ServerSettings.findOne({ where: {key: 'links'}}); - if (exists) { - const setting = await ServerSettings.update({value: link}, {where: {key: 'links'}}); - } else { - const newSetting = await ServerSettings.create({ key: 'links', value: link}); - } - console.log('Custom links on'); - } else if (!link_mode) { - let exists = await ServerSettings.findOne({ where: {key: 'links'}}); - if (exists) { - const setting = await ServerSettings.update({value: 'localhost'}, {where: {key: 'links'}}); - } - console.log('Custom links off'); - } + res.render("settings",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), + }); - // User registration - let { user_registration, passphrase} = req.body; - if (user_registration) { - let exists = await ServerSettings.findOne({ where: {key: 'registration'}}); - if (exists) { - const setting = await ServerSettings.update({value: passphrase}, {where: {key: 'registration'}}); - } else { - const newSetting = await ServerSettings.create({ key: 'registration', value: passphrase}); - } - console.log('registration on'); - } else if (!user_registration) { - let exists = await ServerSettings.findOne({ where: {key: 'registration'}}); - if (exists) { - const setting = await ServerSettings.update({value: 'off'}, {where: {key: 'registration'}}); - } - console.log('registration off'); - } - - // Host 2 - let { host2, tag2, ip2, port2 } = req.body; - if (host2) { - let exists = await ServerSettings.findOne({ where: {key: 'host2'}}); - if (exists) { - const setting = await ServerSettings.update({value: `${tag2},${ip2},${port2}`}, {where: {key: 'host2'}}); - } else { - const newSetting = await ServerSettings.create({ key: 'host2', value: `${tag2},${ip2},${port2}`}); - } - console.log('host2 on'); - } else if (!host2) { - let exists = await ServerSettings.findOne({ where: {key: 'host2'}}); - if (exists) { - const setting = await ServerSettings.update({value: 'off'}, {where: {key: 'host2'}}); - } - console.log('host2 off'); - } - - // Host 3 - let { host3, tag3, ip3, port3 } = req.body; - if (host3) { - let exists = await ServerSettings.findOne({ where: {key: 'host3'}}); - if (exists) { - const setting = await ServerSettings.update({value: `${tag3},${ip3},${port3}`}, {where: {key: 'host3'}}); - } else { - const newSetting = await ServerSettings.create({ key: 'host3', value: `${tag3},${ip3},${port3}`}); - } - console.log('host3 on'); - } else if (!host3) { - let exists = await ServerSettings.findOne({ where: {key: 'host3'}}); - if (exists) { - const setting = await ServerSettings.update({value: 'off'}, {where: {key: 'host3'}}); - } - console.log('host3 off'); - } - - // Host 4 - let { host4, tag4, ip4, port4 } = req.body; - if (host4) { - let exists = await ServerSettings.findOne({ where: {key: 'host4'}}); - if (exists) { - const setting = await ServerSettings.update({value: `${tag4},${ip4},${port4}`}, {where: {key: 'host4'}}); - } else { - const newSetting = await ServerSettings.create({ key: 'host4', value: `${tag4},${ip4},${port4}`}); - } - console.log('host4 on'); - } else if (!host4) { - let exists = await ServerSettings.findOne({ where: {key: 'host4'}}); - if (exists) { - const setting = await ServerSettings.update({value: 'off'}, {where: {key: 'host4'}}); - } - console.log('host4 off'); - } - - - let success = `` - - res.send(success); } \ No newline at end of file diff --git a/controllers/supporters.js b/controllers/supporters.js deleted file mode 100644 index c210ef4..0000000 --- a/controllers/supporters.js +++ /dev/null @@ -1,34 +0,0 @@ -export const Supporters = async (req, res) => { - - - - res.render("supporters", { - - username: req.session.username, - role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', - }); - - -} - - -let thanks = 0; -export const Thanks = async (req, res) => { - thanks++; - let data = thanks.toString(); - if (thanks > 999) { - data = 'Did you really click 1000 times?!'; - } - res.send(data); -} \ No newline at end of file diff --git a/controllers/syslogs.js b/controllers/syslogs.js index 9548030..9129479 100644 --- a/controllers/syslogs.js +++ b/controllers/syslogs.js @@ -1,46 +1,34 @@ -import { Syslog } from '../database/models.js'; +import { ServerSettings } from '../database/config.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; -export const Syslogs = async function(req, res) { +export const Syslogs = async function(req,res){ - let logs = ''; - const syslogs = await Syslog.findAll({ - order: [ - ['id', 'DESC'] - ] - }); - - for (const log of syslogs) { - let date = (log.createdAt).toDateString(); - let time = (log.createdAt).toLocaleTimeString(); - let datetime = `${time} ${date}`; - - logs += ` - ${log.id} - ${log.user} - ${log.email} - ${log.event} - ${log.message} - ${log.ip} - ${datetime} - ` - } - - res.render("syslogs", { - username: req.session.username || 'Dev', - role: req.session.role || 'Dev', - avatar: req.session.username.charAt(0).toUpperCase(), - logs: logs, + res.render("syslogs",{ alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), + }); +} + + + +export const submitSyslogs = async function(req,res){ + + // console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + res.render("syslogs",{ + alert: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), }); } \ No newline at end of file diff --git a/controllers/users.js b/controllers/users.js index a2e268e..5dd8dfc 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -1,7 +1,8 @@ -import { User } from '../database/models.js'; +import { ServerSettings, User } from '../database/config.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; + +export const Users = async function(req,res){ -export const Users = async (req, res) => { - let user_list = ` @@ -30,8 +31,6 @@ export const Users = async (req, res) => { active = 'Inactive'; } - - let info = ` @@ -50,22 +49,41 @@ export const Users = async (req, res) => { user_list += info; }); - - res.render("users", { + res.render("users",{ + alert: '', username: req.session.username, role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), user_list: user_list, + navbar: await Navbar(req), + }); +} + + + +export const submitUsers = async function(req,res){ + + // console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + // [HTMX Triggered] Changes the update button. + if(trigger_id == 'settings'){ + res.send(``); + return; + } else if (trigger_id == 'submit'){ + res.send(``); + return; + } + + res.render("users",{ alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + username: req.session.username, + role: req.session.role, + navbar: await Navbar(req), }); } \ No newline at end of file diff --git a/controllers/volumes.js b/controllers/volumes.js index a57612b..3484097 100644 --- a/controllers/volumes.js +++ b/controllers/volumes.js @@ -1,123 +1,37 @@ -import { docker } from '../utils/docker.js'; +import { Alert, getLanguage, Navbar } from '../utils/system.js'; -export const Volumes = async function(req, res) { - let container_volumes = []; - let volume_list = ''; +export const Volumes = async function(req,res){ - console.log(req.params.host); - // Table header - volume_list = ` - - - - - - - - - - - - ` - - // List all containers - let containers = await docker.listContainers({ all: true }); - - // Get the first 6 volumes from each container - for (let i = 0; i < containers.length; i++) { - try { container_volumes.push({type: containers[i].Mounts[0].Type, source: containers[i].Mounts[0].Source}); } catch { } - try { container_volumes.push({type: containers[i].Mounts[1].Type, source: containers[i].Mounts[1].Source}); } catch { } - try { container_volumes.push({type: containers[i].Mounts[2].Type, source: containers[i].Mounts[2].Source}); } catch { } - try { container_volumes.push({type: containers[i].Mounts[3].Type, source: containers[i].Mounts[3].Source}); } catch { } - try { container_volumes.push({type: containers[i].Mounts[4].Type, source: containers[i].Mounts[4].Source}); } catch { } - try { container_volumes.push({type: containers[i].Mounts[5].Type, source: containers[i].Mounts[5].Source}); } catch { } - } - - // List ALL volumes - let list = await docker.listVolumes({ all: true }); - let volumes = list.Volumes; - - // Create a table row for each volume - for (let i = 0; i < volumes.length; i++) { - let volume = volumes[i]; - let name = "" + volume.Name; - let mount = "" + volume.Mountpoint; - let type = "Bind"; - - // Check if the volume is being used by any of the containers - let status = ''; - if (container_volumes.some(volume => volume.source === mount)) { status = "In use"; } - if (container_volumes.some(volume => volume.source === mount && volume.type === 'volume')) { type = "Volume"; } - - let row = ` - - - ${type} - ${name} - ${mount} - ${status} - ${volume.CreatedAt} - MB - Details - ` - - volume_list += row; - } - - volume_list += `` - - - res.render("volumes", { + res.render("volumes",{ + alert: '', username: req.session.username, role: req.session.role, - avatar: req.session.username.charAt(0).toUpperCase(), - volume_list: volume_list, - volume_count: volumes.length, + volume_count: '', + volume_list: '', + navbar: await Navbar(req), + }); +} + + + +export const submitVolumes = async function(req,res){ + + // console.log(req.body); + + let trigger_name = req.header('hx-trigger-name'); + let trigger_id = req.header('hx-trigger'); + + console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`); + + + res.render("volumes",{ alert: '', - link1: '', - link2: '', - link3: '', - link4: '', - link5: '', - link6: '', - link7: '', - link8: '', - link9: '', + username: req.session.username, + role: req.session.role, + volume_count: '', + volume_list: '', + navbar: await Navbar(req), }); -} - -export const addVolume = async function(req, res) { - - let volume = req.body.volume; - - docker.createVolume({ - Name: volume - }); - res.redirect("/volumes"); -} - - -export const removeVolume = async function(req, res) { - let volumes = req.body.select; - - if (typeof(volumes) == 'string') { - volumes = [volumes]; - } - - for (let i = 0; i < volumes.length; i++) { - - if (volumes[i] != 'on') { - try { - console.log(`Removing volume: ${volumes[i]}`); - let volume = docker.getVolume(volumes[i]); - await volume.remove(); - } catch (error) { - console.log(`Unable to remove volume: ${volumes[i]}`); - } - } - } - - res.redirect("/volumes"); } \ No newline at end of file diff --git a/database/config.js b/database/config.js new file mode 100644 index 0000000..672bfd6 --- /dev/null +++ b/database/config.js @@ -0,0 +1,249 @@ +import session from 'express-session'; +import SessionSequelize from 'connect-session-sequelize'; +import { Sequelize, DataTypes} from 'sequelize'; +import { readFileSync } from 'fs'; + +const SECURE = process.env.HTTPS || false; + +// Session store +const SequelizeStore = SessionSequelize(session.Store); +const sessionData = new Sequelize('database', 'username', 'password', { + dialect: 'sqlite', + storage: 'database/sessions.sqlite', + logging: false, +}); +const SessionStore = new SequelizeStore({ db: sessionData }); + +export const sessionMiddleware = session({ + secret: 'not keyboard cat', + store: SessionStore, + resave: false, + saveUninitialized: false, + cookie: { + secure: SECURE, + httpOnly: SECURE, + maxAge: 3600000 * 8, + }, +}); + +// Server settings +const settings = new Sequelize('database', 'username', 'password', { + dialect: 'sqlite', + storage: 'database/settings.sqlite', + logging: false, +}); +const SettingsDB = new SequelizeStore({ db: settings }); + +// Display package information +let package_info = readFileSync(`package.json`, 'utf8'); +package_info = JSON.parse(package_info); +console.log(''); +console.log(`\x1b[33mDweebUI v${package_info.version}\x1b[0m`); +console.log(`\x1b[33mAuthor: ${package_info.author}\x1b[0m`); +console.log(`\x1b[33mLicense: ${package_info.license}\x1b[0m`); +console.log(`\x1b[33mDescription: ${package_info.description}\x1b[0m`); +console.log(''); + +// Test database connection +try { + await sessionData.authenticate(); + await settings.authenticate(); + sessionData.sync(); + settings.sync(); + console.log(`\x1b[32mDatabase connection established.\x1b[0m`); +} catch (error) { + console.error('\x1b[31mDatabase connection failed:', error, '\x1b[0m'); +} + +// Models +export const User = settings.define('User', { + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true + }, + name: { + type: DataTypes.STRING + }, + userID: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + }, + username: { + type: DataTypes.STRING, + allowNull: false + }, + email: { + type: DataTypes.STRING, + allowNull: false + }, + password: { + type: DataTypes.STRING, + allowNull: false + }, + role: { + type: DataTypes.STRING + }, + group: { + type: DataTypes.STRING + }, + avatar: { + type: DataTypes.STRING + }, + lastLogin: { + type: DataTypes.STRING + }, + preferences : { + type: DataTypes.STRING + }, +}); + +export const Permission = settings.define('Permission', { + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true + }, + containerName: { + type: DataTypes.STRING, + }, + containerID: { + type: DataTypes.STRING, + }, + username: { + type: DataTypes.STRING, + allowNull: false + }, + userID: { + type: DataTypes.STRING, + allowNull: false + }, + install: { + type: DataTypes.STRING, + defaultValue: false + }, + uninstall: { + type: DataTypes.STRING, + defaultValue: false + }, + edit: { + type: DataTypes.STRING, + defaultValue: false + }, + upgrade: { + type: DataTypes.STRING, + defaultValue: false + }, + start: { + type: DataTypes.STRING, + defaultValue: false + }, + stop: { + type: DataTypes.STRING, + defaultValue: false + }, + restart: { + type: DataTypes.STRING, + defaultValue: false + }, + pause: { + type: DataTypes.STRING, + defaultValue: false + }, + logs: { + type: DataTypes.STRING, + defaultValue: false + }, + hide: { + type: DataTypes.STRING, + defaultValue: false + }, + reset_view: { + type: DataTypes.STRING, + defaultValue: false + }, + view: { + type: DataTypes.STRING, + defaultValue: false + }, + options: { + type: DataTypes.STRING, + defaultValue: false + }, +}); + +export const Syslog = settings.define('Syslog', { + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true + }, + username: { + type: DataTypes.STRING + }, + email: { + type: DataTypes.STRING + }, + event: { + type: DataTypes.STRING, + allowNull: false + }, + message: { + type: DataTypes.STRING, + allowNull: false + }, + ip : { + type: DataTypes.STRING + }, + options : { + type: DataTypes.STRING + }, +}); + +export const Notification = settings.define('Notification', { + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true + }, + title: { + type: DataTypes.STRING + }, + message: { + type: DataTypes.STRING + }, + icon: { + type: DataTypes.STRING, + }, + color: { + type: DataTypes.STRING, + }, + read: { + type: DataTypes.STRING, + }, + createdAt : { + type: DataTypes.STRING + }, + createdBy : { + type: DataTypes.STRING + }, + options : { + type: DataTypes.STRING + }, +}); + +export const ServerSettings = settings.define('ServerSettings', { + id: { + type: DataTypes.INTEGER, + autoIncrement: true, + primaryKey: true + }, + key: { + type: DataTypes.STRING, + allowNull: false + }, + value: { + type: DataTypes.STRING, + allowNull: true + } +}); \ No newline at end of file diff --git a/database/models.js b/database/models.js deleted file mode 100644 index 42cc06d..0000000 --- a/database/models.js +++ /dev/null @@ -1,272 +0,0 @@ -import { Sequelize, DataTypes } from 'sequelize'; - - -export const sequelize = new Sequelize({ - dialect: 'sqlite', - storage: './database/db.sqlite', - logging: false, -}); - -export const User = sequelize.define('User', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - name: { - type: DataTypes.STRING - }, - userID: { - type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4, - }, - username: { - type: DataTypes.STRING, - allowNull: false - }, - email: { - type: DataTypes.STRING, - allowNull: false - }, - password: { - type: DataTypes.STRING, - allowNull: false - }, - role: { - type: DataTypes.STRING - }, - group: { - type: DataTypes.STRING - }, - avatar: { - type: DataTypes.STRING - }, - lastLogin: { - type: DataTypes.STRING - } -}); - -export const Container = sequelize.define('Container', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - name: { - type: DataTypes.STRING, - allowNull: false - }, - visibility: { - type: DataTypes.STRING - }, - service: { - type: DataTypes.STRING - }, - state: { - type: DataTypes.STRING - }, - image: { - type: DataTypes.STRING - }, - external_port: { - type: DataTypes.STRING - }, - internal_port: { - type: DataTypes.STRING - }, - ports: { - type: DataTypes.STRING - }, - volumes: { - type: DataTypes.STRING - }, - environment_variables: { - type: DataTypes.STRING - }, - labels: { - type: DataTypes.STRING - }, - IPv4: { - type: DataTypes.STRING - }, - style: { - type: DataTypes.STRING - }, - cpu: { - // stores the last 15 values from dockerContainerStats - type: DataTypes.STRING - }, - ram: { - // stores the last 15 values from dockerContainerStats - type: DataTypes.STRING - }, - }); - -export const Permission = sequelize.define('Permission', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - containerName: { - type: DataTypes.STRING, - }, - containerID: { - type: DataTypes.STRING, - }, - username: { - type: DataTypes.STRING, - allowNull: false - }, - userID: { - type: DataTypes.STRING, - allowNull: false - }, - install: { - type: DataTypes.STRING, - defaultValue: false - }, - uninstall: { - type: DataTypes.STRING, - defaultValue: false - }, - edit: { - type: DataTypes.STRING, - defaultValue: false - }, - upgrade: { - type: DataTypes.STRING, - defaultValue: false - }, - start: { - type: DataTypes.STRING, - defaultValue: false - }, - stop: { - type: DataTypes.STRING, - defaultValue: false - }, - restart: { - type: DataTypes.STRING, - defaultValue: false - }, - pause: { - type: DataTypes.STRING, - defaultValue: false - }, - logs: { - type: DataTypes.STRING, - defaultValue: false - }, - hide: { - type: DataTypes.STRING, - defaultValue: false - }, - reset_view: { - type: DataTypes.STRING, - defaultValue: false - }, - view: { - type: DataTypes.STRING, - defaultValue: false - }, -}); - -export const Syslog = sequelize.define('Syslog', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - user: { - type: DataTypes.STRING - }, - email: { - type: DataTypes.STRING - }, - event: { - type: DataTypes.STRING, - allowNull: false - }, - message: { - type: DataTypes.STRING, - allowNull: false - }, - ip : { - type: DataTypes.STRING - }, -}); - -export const Notification = sequelize.define('Notification', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - title: { - type: DataTypes.STRING - }, - message: { - type: DataTypes.STRING - }, - icon: { - type: DataTypes.STRING, - }, - color: { - type: DataTypes.STRING, - }, - read: { - type: DataTypes.STRING, - }, - createdAt : { - type: DataTypes.STRING - }, - createdBy : { - type: DataTypes.STRING - }, -}); - -export const ServerSettings = sequelize.define('ServerSettings', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - key: { - type: DataTypes.STRING, - allowNull: false - }, - value: { - type: DataTypes.STRING, - allowNull: true - } -}); - -export const UserSettings = sequelize.define('UserSettings', { - id: { - type: DataTypes.INTEGER, - autoIncrement: true, - primaryKey: true - }, - userID: { - type: DataTypes.STRING, - allowNull: false - }, - key: { - type: DataTypes.STRING, - allowNull: false - }, - value: { - type: DataTypes.STRING, - allowNull: false - } -}); - -export const Variables = sequelize.define('Variables', { - find: { - type: DataTypes.STRING, - }, - replace: { - type: DataTypes.STRING, - } -}); \ No newline at end of file diff --git a/database/sessions.sqlite b/database/sessions.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..1653a1ede14e582cdae7264243ea57b2b45c31a7 GIT binary patch literal 12288 zcmeI%!A{#S7y#h3owjLG*Ky*6AG_JN%a1#J_+4vcH?t_FlsYDH?kI83~cZz2H(Q z?lnRj$K9}=VLfRn_VOqhuxC7;*KW9i|2doc!KHHxTy7!vZQcTy2LTWO0T2KI5C8!X z009sH0T2Lz2NC!nrJgJ|#5 z1HDzP>8%y1yoz>PbyIJ3(6-UZqaKYWj!%Og+Fy7pqGt&T(xT1#idfPTwWd(EBy+CcEqwlehR@|1|c@ zvYyV`T-JX6B_2Zq0T2KI5C8!X009sH0T2KI5cqq6>+SRtv;OgAy}o7E{9<|kq&V6a z$c0HZ-ybxJrCM~fUOn^<%ySWoB>`6i2_r0PVo?*-f+&gT6~-FIm;Au z?`{JV5+1V(Yy4H7p9a)-$r;P$-+0IFhDTX}I9T6cA$6coc_7+?Dh>KV3Cohumz1)g zl<`m;+G?qS%Pimb#&H2+pE)jnmF!GZk%(`1CeO}!f0hx<6r|bg^>${a>0Zbu6*H(1 zduZ8vU8y5X+XE_AYY|b-Yf&qy6Kg7(RMcdtAglNvXeydm(Te3lNvZrtn(;Ytva{QB z-dDiCDLl)4XaCKA;&NZv4>S+}0T2KI5C8!X009sH0T2KI5CDM(5?Icdsd-;EGI7$p lk4b5^;bnVM$F({+b%WrjAB~#cxi@xIP|ipr0D#G+)`> z&sWx@R4PWwZ>ywSE0tLAQr5dP7-pr4MP-Mod8a}4*gjN?hXsG7Zb$uQIMypfqr&Pc z|F!6Kv1~e8Q&VI|GYvbiG9Bz-Aoh^{IhvynccD#fTW$@PYl>+M_t(@-Yp9eVFk-)4 zkS09xazLBaF*{!GhuRwLC`F>e;v)a`yW3RxWa}o&k=t1`Xm?lo5VfvNEkkY(1JSmu z=|j6pFR8(@!QW+nMucknH_$r4$|F=BlYBpwrlP|0=lm~q5ABFrZOyjb)blMyf_T2j zLjYMGIkIL@s~o2IZ?w2K)bVh7zm~hjU`2miGi*oJ2S$nP6<+0Qr795_Zr8Yf8>(u9 zLmFtJ)3RiBAVC6O!gj(M)q?Gq1H&GuZqfT1=*UbW=oe_gJt9VgFSL=n&%U2J^-GOj zjcDVZaOj~O*vH4D^U-8PSYPMQykxdN>g>6xZqtulYAAGIbt;h51Hm=-NZ(*JV?QoT zLeMwzl%64V^?muL8^s! z?ybRN_Im3{MA%*8In7Y%^;1i~C;Ceh>~?F~z2%y9Kc2ZCm>>WF2tWV= z5P$##AOHafKmY;|7*~O(ZpZNaKd!@zen9{N5P$##AOHafKmY;|fB*zM0r&6!{M;WL zdtrhA1Rwwb2tWV=5P$##AOHafjDbL}*IVG{xux3T*3Fc_aapBUJTNZ|vS-q)vO`mf zq{g#J3k(2uAHjJ zyV*0Vs9ay2Z5gGKw11I#MPGlP-p?y)qTQkG!_3M1q;heRrl-fd2Osoz2XADxtr?ju zX=h6krR@!pNaUnUE|noiho6^q*=TjyujZC>%hYJ;ntidnvF!eerrxp4rlzw%Q`T+z z#jP6`GjSA1#s+zyJUM literal 0 HcmV?d00001 diff --git a/languages/chinese.json b/languages/chinese.json new file mode 100644 index 0000000..607bb4e --- /dev/null +++ b/languages/chinese.json @@ -0,0 +1,14 @@ +{ + "Dashboard": "仪表盘", + "Images": "镜像", + "Volumes": "存储卷", + "Networks": "网络", + "Apps": "应用商店", + "Users": "用户", + "Syslogs": "系统日志", + "Account": "设置", + "Notifications": "", + "Preferences": "", + "Settings": "设置", + "Logout": "" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index efc191a..a800505 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,27 +1,23 @@ { - "name": "dweebui", - "version": "0.60", + "name": "test", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "dweebui", - "version": "0.60", - "license": "MIT", + "name": "test", + "version": "1.0.0", + "license": "ISC", "dependencies": { - "adm-zip": "^0.5.14", "bcrypt": "^5.1.1", + "connect-session-sequelize": "^7.1.7", "dockerode": "^4.0.2", - "dockerode-compose": "^1.4.0", "ejs": "^3.1.10", "express": "^4.19.2", "express-session": "^1.18.0", - "memorystore": "^1.6.7", - "multer": "^1.4.5-lts.1", "sequelize": "^6.37.3", "sqlite3": "^5.1.7", - "systeminformation": "^5.22.11", - "yaml": "^2.4.5" + "systeminformation": "^5.22.11" } }, "node_modules/@balena/dockerignore": { @@ -78,18 +74,6 @@ "node": ">=10" } }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -113,17 +97,17 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz", + "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/validator": { - "version": "13.11.10", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", - "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==" }, "node_modules/abbrev": { "version": "1.1.1", @@ -142,14 +126,6 @@ "node": ">= 0.6" } }, - "node_modules/adm-zip": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", - "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", - "engines": { - "node": ">=12.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -208,11 +184,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -231,11 +202,6 @@ "node": ">=10" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -385,11 +351,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "node_modules/buildcheck": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", @@ -399,17 +360,6 @@ "node": ">=10.0.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -447,36 +397,6 @@ "node": ">= 10" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -556,45 +476,18 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], + "node_modules/connect-session-sequelize": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/connect-session-sequelize/-/connect-session-sequelize-7.1.7.tgz", + "integrity": "sha512-Wqq7rg0w+9bOVs6jC0nhZnssXJ3+iKNlDVWn2JfBuBPoY7oYaxzxfBKeUYrX6dHt3OWEWbZV6LJvapwi76iBQQ==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" + "debug": "^4.1.1" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "sequelize": ">= 6.1.0" } }, "node_modules/console-control-strings": { @@ -634,11 +527,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, "node_modules/cpu-features": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", @@ -654,9 +542,9 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -764,32 +652,6 @@ "node": ">= 8.0" } }, - "node_modules/dockerode-compose": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/dockerode-compose/-/dockerode-compose-1.4.0.tgz", - "integrity": "sha512-6x5ZlK06H+cgoTR4ffucqN5kWVvxNvxwTLcHQUZcegCJBEDGrdzXMOEGDMsxbHwiLtLo2dNwG0eZK7B2RfEWSw==", - "dependencies": { - "dockerode": "^4.0.0", - "js-yaml": "^4.0.0", - "tar-fs": "^2.1.1" - } - }, - "node_modules/dockerode-compose/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/dockerode-compose/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, "node_modules/dottie": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", @@ -1418,11 +1280,6 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "optional": true }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1430,9 +1287,9 @@ "optional": true }, "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -1446,17 +1303,6 @@ "node": ">=10" } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", @@ -1469,12 +1315,15 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/make-dir": { @@ -1526,24 +1375,6 @@ "node": ">= 10" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1552,18 +1383,6 @@ "node": ">= 0.6" } }, - "node_modules/memorystore": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.7.tgz", - "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", - "dependencies": { - "debug": "^4.3.0", - "lru-cache": "^4.0.3" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -1713,11 +1532,6 @@ "node": ">=8" } }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -1730,20 +1544,15 @@ "node": ">= 8" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mkdirp-classic": { @@ -1775,23 +1584,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", @@ -1955,9 +1747,12 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2055,11 +1850,6 @@ "node": ">=10" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -2091,11 +1881,6 @@ "node": ">= 0.10" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -2230,9 +2015,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -2528,12 +2313,9 @@ } }, "node_modules/sqlite3/node_modules/node-addon-api": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", - "engines": { - "node": "^16 || ^18 || >= 20" - } + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" }, "node_modules/ssh2": { "version": "1.15.0", @@ -2572,14 +2354,6 @@ "node": ">= 0.8" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2711,22 +2485,6 @@ "node": ">=8" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2773,11 +2531,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, "node_modules/uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -2907,29 +2660,10 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index d1948a9..88eb80f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "name": "dweebui", - "version": "0.60", - "description": "Free and Open-Source WebUI For Managing Your Containers.", + "version": "0.70.401", "main": "server.js", "type": "module", "scripts": { @@ -11,19 +10,16 @@ "keywords": [], "author": "lllllllillllllillll", "license": "MIT", + "description": "DweebUI is a WebUI for managing your containers. Simple setup, a dynamically updating dashboard, and a multi-user permission system.", "dependencies": { - "adm-zip": "^0.5.14", "bcrypt": "^5.1.1", + "connect-session-sequelize": "^7.1.7", "dockerode": "^4.0.2", - "dockerode-compose": "^1.4.0", "ejs": "^3.1.10", "express": "^4.19.2", "express-session": "^1.18.0", - "memorystore": "^1.6.7", - "multer": "^1.4.5-lts.1", "sequelize": "^6.37.3", "sqlite3": "^5.1.7", - "systeminformation": "^5.22.11", - "yaml": "^2.4.5" + "systeminformation": "^5.22.11" } } diff --git a/public/css/demo.css b/public/css/demo.css new file mode 100644 index 0000000..44455a1 --- /dev/null +++ b/public/css/demo.css @@ -0,0 +1,276 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +pre.highlight, +.highlight pre { + max-height: 30rem; + margin: 1.5rem 0; + overflow: auto; + border-radius: var(--tblr-border-radius); +} +pre.highlight, +.highlight pre { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +pre.highlight::-webkit-scrollbar, +.highlight pre::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + pre.highlight::-webkit-scrollbar, + .highlight pre::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +pre.highlight::-webkit-scrollbar-thumb, +.highlight pre::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +pre.highlight::-webkit-scrollbar-track, +.highlight pre::-webkit-scrollbar-track { + background: transparent; +} +pre.highlight:hover::-webkit-scrollbar-thumb, +.highlight pre:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +pre.highlight::-webkit-scrollbar-corner, +.highlight pre::-webkit-scrollbar-corner { + background: transparent; +} + +.highlight { + margin: 0; +} +.highlight code > * { + margin: 0 !important; + padding: 0 !important; +} +.highlight .c, .highlight .c1 { + color: #a0aec0; +} +.highlight .nt, .highlight .nc, .highlight .nx { + color: #ff8383; +} +.highlight .na, .highlight .p { + color: #ffe484; +} +.highlight .s, .highlight .dl, .highlight .s2 { + color: #b5f4a5; +} +.highlight .k { + color: #93ddfd; +} +.highlight .s1, .highlight .mi { + color: #d9a9ff; +} + +.example { + padding: 2rem; + margin: 1rem 0 2rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px 3px 0 0; + position: relative; + min-height: 12rem; + display: flex; + align-items: center; + overflow-x: auto; +} + +.example-centered { + justify-content: center; +} +.example-centered .example-content { + flex: 0 auto; +} + +.example-content { + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-body-color); + flex: 1; + max-width: 100%; +} +.example-content .page-header { + margin-bottom: 0; +} + +.example-bg { + background: #f6f8fb; +} + +.example-code { + margin: 2rem 0; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-top: none; +} +.example-code pre { + margin: 0; + border: 0; + border-radius: 0 0 3px 3px; +} +.example + .example-code { + margin-top: -2rem; +} + +.example-column { + margin: 0 auto; +} +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 26rem; +} + +.example-column-2 { + max-width: 52rem; +} + +.example-modal-backdrop { + background: #182433; + opacity: 0.24; + position: absolute; + width: 100%; + left: 0; + top: 0; + height: 100%; + border-radius: 2px 2px 0 0; +} + +.card-sponsor { + background: var(--tblr-primary-lt) no-repeat center/100% 100%; + border-color: var(--tblr-primary); + min-height: 316px; +} + +.dropdown-menu-demo { + display: inline-block; + width: 100%; + position: relative; + top: 0; + margin-bottom: 1rem !important; +} + +.demo-icon-preview { + position: -webkit-sticky; + position: sticky; + top: 0; +} +.demo-icon-preview svg, +.demo-icon-preview i { + width: 15rem; + height: 15rem; + font-size: 15rem; + stroke-width: 1.5; + margin: 0 auto; + display: block; +} +@media (max-width: 575.98px) { + .demo-icon-preview svg, + .demo-icon-preview i { + width: 10rem; + height: 10rem; + font-size: 10rem; + } +} + +.demo-icon-preview-icon pre { + margin: 0; + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; +} + +.demo-dividers > p { + opacity: 0.2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.demo-icons-list { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 -2px -1px 0; + list-style: none; +} +.demo-icons-list > * { + flex: 1 0 4rem; +} + +.demo-icons-list-wrap { + overflow: hidden; +} + +.demo-icons-list-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + aspect-ratio: 1; + text-align: center; + padding: 0.5rem; + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + color: inherit; + cursor: pointer; +} +.demo-icons-list-item .icon { + width: 1.5rem; + height: 1.5rem; + font-size: 1.5rem; +} +.demo-icons-list-item:hover { + text-decoration: none; +} + +.settings-btn { + position: fixed; + right: -1px; + top: 10rem; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} + +.settings-scheme { + display: inline-block; + border-radius: 50%; + height: 3rem; + width: 3rem; + position: relative; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} +.settings-scheme-light { + background: linear-gradient(135deg, #ffffff 50%, #fcfdfe 50%); +} +.settings-scheme-mixed { + background-image: linear-gradient(135deg, #182433 50%, #fff 50%); +} +.settings-scheme-transparent { + background: #fcfdfe; +} +.settings-scheme-dark { + background: #182433; +} +.settings-scheme-colored { + background-image: linear-gradient(135deg, var(--tblr-primary) 50%, #fcfdfe 50%); +} \ No newline at end of file diff --git a/public/css/demo.min.css b/public/css/demo.min.css index 0355a16..395af20 100644 --- a/public/css/demo.min.css +++ b/public/css/demo.min.css @@ -1,6 +1,6 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna diff --git a/public/css/demo.rtl.css b/public/css/demo.rtl.css new file mode 100644 index 0000000..2f1c803 --- /dev/null +++ b/public/css/demo.rtl.css @@ -0,0 +1,276 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +pre.highlight, +.highlight pre { + max-height: 30rem; + margin: 1.5rem 0; + overflow: auto; + border-radius: var(--tblr-border-radius); +} +pre.highlight, +.highlight pre { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +pre.highlight::-webkit-scrollbar, +.highlight pre::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + pre.highlight::-webkit-scrollbar, + .highlight pre::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +pre.highlight::-webkit-scrollbar-thumb, +.highlight pre::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +pre.highlight::-webkit-scrollbar-track, +.highlight pre::-webkit-scrollbar-track { + background: transparent; +} +pre.highlight:hover::-webkit-scrollbar-thumb, +.highlight pre:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +pre.highlight::-webkit-scrollbar-corner, +.highlight pre::-webkit-scrollbar-corner { + background: transparent; +} + +.highlight { + margin: 0; +} +.highlight code > * { + margin: 0 !important; + padding: 0 !important; +} +.highlight .c, .highlight .c1 { + color: #a0aec0; +} +.highlight .nt, .highlight .nc, .highlight .nx { + color: #ff8383; +} +.highlight .na, .highlight .p { + color: #ffe484; +} +.highlight .s, .highlight .dl, .highlight .s2 { + color: #b5f4a5; +} +.highlight .k { + color: #93ddfd; +} +.highlight .s1, .highlight .mi { + color: #d9a9ff; +} + +.example { + padding: 2rem; + margin: 1rem 0 2rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px 3px 0 0; + position: relative; + min-height: 12rem; + display: flex; + align-items: center; + overflow-x: auto; +} + +.example-centered { + justify-content: center; +} +.example-centered .example-content { + flex: 0 auto; +} + +.example-content { + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-body-color); + flex: 1; + max-width: 100%; +} +.example-content .page-header { + margin-bottom: 0; +} + +.example-bg { + background: #f6f8fb; +} + +.example-code { + margin: 2rem 0; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-top: none; +} +.example-code pre { + margin: 0; + border: 0; + border-radius: 0 0 3px 3px; +} +.example + .example-code { + margin-top: -2rem; +} + +.example-column { + margin: 0 auto; +} +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 26rem; +} + +.example-column-2 { + max-width: 52rem; +} + +.example-modal-backdrop { + background: #182433; + opacity: 0.24; + position: absolute; + width: 100%; + right: 0; + top: 0; + height: 100%; + border-radius: 2px 2px 0 0; +} + +.card-sponsor { + background: var(--tblr-primary-lt) no-repeat center/100% 100%; + border-color: var(--tblr-primary); + min-height: 316px; +} + +.dropdown-menu-demo { + display: inline-block; + width: 100%; + position: relative; + top: 0; + margin-bottom: 1rem !important; +} + +.demo-icon-preview { + position: -webkit-sticky; + position: sticky; + top: 0; +} +.demo-icon-preview svg, +.demo-icon-preview i { + width: 15rem; + height: 15rem; + font-size: 15rem; + stroke-width: 1.5; + margin: 0 auto; + display: block; +} +@media (max-width: 575.98px) { + .demo-icon-preview svg, + .demo-icon-preview i { + width: 10rem; + height: 10rem; + font-size: 10rem; + } +} + +.demo-icon-preview-icon pre { + margin: 0; + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; +} + +.demo-dividers > p { + opacity: 0.2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.demo-icons-list { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 0 -1px -2px; + list-style: none; +} +.demo-icons-list > * { + flex: 1 0 4rem; +} + +.demo-icons-list-wrap { + overflow: hidden; +} + +.demo-icons-list-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + aspect-ratio: 1; + text-align: center; + padding: 0.5rem; + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + color: inherit; + cursor: pointer; +} +.demo-icons-list-item .icon { + width: 1.5rem; + height: 1.5rem; + font-size: 1.5rem; +} +.demo-icons-list-item:hover { + text-decoration: none; +} + +.settings-btn { + position: fixed; + left: -1px; + top: 10rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} + +.settings-scheme { + display: inline-block; + border-radius: 50%; + height: 3rem; + width: 3rem; + position: relative; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} +.settings-scheme-light { + background: linear-gradient(-135deg, #ffffff 50%, #fcfdfe 50%); +} +.settings-scheme-mixed { + background-image: linear-gradient(-135deg, #182433 50%, #fff 50%); +} +.settings-scheme-transparent { + background: #fcfdfe; +} +.settings-scheme-dark { + background: #182433; +} +.settings-scheme-colored { + background-image: linear-gradient(-135deg, var(--tblr-primary) 50%, #fcfdfe 50%); +} \ No newline at end of file diff --git a/public/css/demo.rtl.min.css b/public/css/demo.rtl.min.css new file mode 100644 index 0000000..76bcafd --- /dev/null +++ b/public/css/demo.rtl.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.highlight pre,pre.highlight{max-height:30rem;margin:1.5rem 0;overflow:auto;border-radius:var(--tblr-border-radius)}.highlight pre,pre.highlight{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{-webkit-transition:none;transition:none}}.highlight pre::-webkit-scrollbar-thumb,pre.highlight::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.highlight pre::-webkit-scrollbar-track,pre.highlight::-webkit-scrollbar-track{background:0 0}.highlight pre:hover::-webkit-scrollbar-thumb,pre.highlight:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.highlight pre::-webkit-scrollbar-corner,pre.highlight::-webkit-scrollbar-corner{background:0 0}.highlight{margin:0}.highlight code>*{margin:0!important;padding:0!important}.highlight .c,.highlight .c1{color:#a0aec0}.highlight .nc,.highlight .nt,.highlight .nx{color:#ff8383}.highlight .na,.highlight .p{color:#ffe484}.highlight .dl,.highlight .s,.highlight .s2{color:#b5f4a5}.highlight .k{color:#93ddfd}.highlight .mi,.highlight .s1{color:#d9a9ff}.example{padding:2rem;margin:1rem 0 2rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px 3px 0 0;position:relative;min-height:12rem;display:flex;align-items:center;overflow-x:auto}.example-centered{justify-content:center}.example-centered .example-content{flex:0 auto}.example-content{font-size:.875rem;line-height:1.4285714286;color:var(--tblr-body-color);flex:1;max-width:100%}.example-content .page-header{margin-bottom:0}.example-bg{background:#f6f8fb}.example-code{margin:2rem 0;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-top:none}.example-code pre{margin:0;border:0;border-radius:0 0 3px 3px}.example+.example-code{margin-top:-2rem}.example-column{margin:0 auto}.example-column>.card:last-of-type{margin-bottom:0}.example-column-1{max-width:26rem}.example-column-2{max-width:52rem}.example-modal-backdrop{background:#182433;opacity:.24;position:absolute;width:100%;right:0;top:0;height:100%;border-radius:2px 2px 0 0}.card-sponsor{background:var(--tblr-primary-lt) no-repeat center/100% 100%;border-color:var(--tblr-primary);min-height:316px}.dropdown-menu-demo{display:inline-block;width:100%;position:relative;top:0;margin-bottom:1rem!important}.demo-icon-preview{position:-webkit-sticky;position:sticky;top:0}.demo-icon-preview i,.demo-icon-preview svg{width:15rem;height:15rem;font-size:15rem;stroke-width:1.5;margin:0 auto;display:block}@media (max-width:575.98px){.demo-icon-preview i,.demo-icon-preview svg{width:10rem;height:10rem;font-size:10rem}}.demo-icon-preview-icon pre{margin:0;-webkit-user-select:all;-moz-user-select:all;user-select:all}.demo-dividers>p{opacity:.2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.demo-icons-list{display:flex;flex-wrap:wrap;padding:0;margin:0 0 -1px -2px;list-style:none}.demo-icons-list>*{flex:1 0 4rem}.demo-icons-list-wrap{overflow:hidden}.demo-icons-list-item{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;text-align:center;padding:.5rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);color:inherit;cursor:pointer}.demo-icons-list-item .icon{width:1.5rem;height:1.5rem;font-size:1.5rem}.demo-icons-list-item:hover{text-decoration:none}.settings-btn{position:fixed;left:-1px;top:10rem;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme{display:inline-block;border-radius:50%;height:3rem;width:3rem;position:relative;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme-light{background:linear-gradient(-135deg,#fff 50%,#fcfdfe 50%)}.settings-scheme-mixed{background-image:linear-gradient(-135deg,#182433 50%,#fff 50%)}.settings-scheme-transparent{background:#fcfdfe}.settings-scheme-dark{background:#182433}.settings-scheme-colored{background-image:linear-gradient(-135deg,var(--tblr-primary) 50%,#fcfdfe 50%)} \ No newline at end of file diff --git a/public/css/meters.css b/public/css/dweebui.css similarity index 63% rename from public/css/meters.css rename to public/css/dweebui.css index 1360531..6a80efc 100644 --- a/public/css/meters.css +++ b/public/css/dweebui.css @@ -92,33 +92,65 @@ .nostripes > span::after { background-image: none; } - - .border { - --tblr-card-spacer-y: 1rem; - --tblr-card-spacer-x: 1.5rem; - --tblr-card-title-spacer-y: 1.25rem; - --tblr-card-border-width: var(--tblr-border-width); - --tblr-card-border-color: var(--tblr-border-color); - --tblr-card-border-radius: var(--tblr-border-radius); - --tblr-card-box-shadow: var(--tblr-shadow-card); - --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); - --tblr-card-cap-padding-y: 1rem; - --tblr-card-cap-padding-x: 1.5rem; - --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); - --tblr-card-cap-color: inherit; - --tblr-card-color: inherit; - --tblr-card-bg: var(--tblr-bg-surface); - --tblr-card-img-overlay-padding: 1rem; - --tblr-card-group-margin: 1.5rem; - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - height: var(--tblr-card-height); - word-wrap: break-word; - background-color: var(--tblr-card-bg); - background-clip: border-box; - border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); - border-radius: var(--tblr-card-border-radius); -} \ No newline at end of file + + + .container-stamp { + --tblr-stamp-size: 8rem; + position: absolute; + bottom: 0; + left: 0; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + max-height: 100%; + border-top-right-radius: 4px; + opacity: 0.2; + overflow: hidden; + pointer-events: none; + } + + .container-action { + padding: 0; + border: 0; + color: var(--tblr-secondary); + display: inline-flex; + width: 1.5rem; + height: 1.5rem; + align-items: center; + justify-content: center; + border-radius: var(--tblr-border-radius); + background: transparent; + } + .container-action:after { + content: none; + } + .container-action:focus { + outline: none; + box-shadow: none; + } + .container-action:hover, .container-action.show { + color: var(--tblr-body-color); + background: var(--tblr-active-bg); + } + .container-action.show { + color: var(--tblr-primary); + } + .container-action .icon { + margin: 0; + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; + stroke-width: 1; + } + + .container-actions { + display: flex; + } + + .modal-content { + border: 1px solid grey; + } + + .accordion-item { + border: 1px solid grey; + } diff --git a/public/css/tabler-social.css b/public/css/tabler-social.css new file mode 100644 index 0000000..fc8f231 --- /dev/null +++ b/public/css/tabler-social.css @@ -0,0 +1,10 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ \ No newline at end of file diff --git a/public/css/tabler-social.min.css b/public/css/tabler-social.min.css new file mode 100644 index 0000000..8147999 --- /dev/null +++ b/public/css/tabler-social.min.css @@ -0,0 +1,8 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ diff --git a/public/css/tabler-social.rtl.css b/public/css/tabler-social.rtl.css new file mode 100644 index 0000000..fc8f231 --- /dev/null +++ b/public/css/tabler-social.rtl.css @@ -0,0 +1,10 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ \ No newline at end of file diff --git a/public/css/tabler-social.rtl.min.css b/public/css/tabler-social.rtl.min.css new file mode 100644 index 0000000..8147999 --- /dev/null +++ b/public/css/tabler-social.rtl.min.css @@ -0,0 +1,8 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ diff --git a/public/css/tabler.css b/public/css/tabler.css new file mode 100644 index 0000000..fc843b0 --- /dev/null +++ b/public/css/tabler.css @@ -0,0 +1,25813 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8"; +/* prettier-ignore */ +/* prettier-ignore */ +:root, +[data-bs-theme=light] { + --tblr-blue: #0054a6; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-black: #000000; + --tblr-white: #ffffff; + --tblr-gray: #667382; + --tblr-gray-dark: #182433; + --tblr-gray-100: #f6f8fb; + --tblr-gray-200: #eef1f4; + --tblr-gray-300: #dadfe5; + --tblr-gray-400: #bbc3cd; + --tblr-gray-500: #929dab; + --tblr-gray-600: #667382; + --tblr-gray-700: #3a4859; + --tblr-gray-800: #182433; + --tblr-gray-900: #040a11; + --tblr-primary: #0054a6; + --tblr-secondary: #667382; + --tblr-success: #2fb344; + --tblr-info: #4299e1; + --tblr-warning: #f76707; + --tblr-danger: #d63939; + --tblr-light: #fcfdfe; + --tblr-dark: #182433; + --tblr-muted: #667382; + --tblr-blue: #0054a6; + --tblr-azure: #4299e1; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-lime: #74b816; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-facebook: #1877f2; + --tblr-twitter: #1da1f2; + --tblr-linkedin: #0a66c2; + --tblr-google: #dc4e41; + --tblr-youtube: #ff0000; + --tblr-vimeo: #1ab7ea; + --tblr-dribbble: #ea4c89; + --tblr-github: #181717; + --tblr-instagram: #e4405f; + --tblr-pinterest: #bd081c; + --tblr-vk: #6383a8; + --tblr-rss: #ffa500; + --tblr-flickr: #0063dc; + --tblr-bitbucket: #0052cc; + --tblr-tabler: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-success-rgb: 47, 179, 68; + --tblr-info-rgb: 66, 153, 225; + --tblr-warning-rgb: 247, 103, 7; + --tblr-danger-rgb: 214, 57, 57; + --tblr-light-rgb: 252, 253, 254; + --tblr-dark-rgb: 24, 36, 51; + --tblr-muted-rgb: 102, 115, 130; + --tblr-blue-rgb: 0, 84, 166; + --tblr-azure-rgb: 66, 153, 225; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-purple-rgb: 174, 62, 201; + --tblr-pink-rgb: 214, 51, 108; + --tblr-red-rgb: 214, 57, 57; + --tblr-orange-rgb: 247, 103, 7; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-lime-rgb: 116, 184, 22; + --tblr-green-rgb: 47, 179, 68; + --tblr-teal-rgb: 12, 166, 120; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-google-rgb: 220, 78, 65; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-github-rgb: 24, 23, 23; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-vk-rgb: 99, 131, 168; + --tblr-rss-rgb: 255, 165, 0; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-primary-text-emphasis: #002242; + --tblr-secondary-text-emphasis: #292e34; + --tblr-success-text-emphasis: #13481b; + --tblr-info-text-emphasis: #1a3d5a; + --tblr-warning-text-emphasis: #632903; + --tblr-danger-text-emphasis: #561717; + --tblr-light-text-emphasis: #3a4859; + --tblr-dark-text-emphasis: #3a4859; + --tblr-primary-bg-subtle: #ccdded; + --tblr-secondary-bg-subtle: #e0e3e6; + --tblr-success-bg-subtle: #d5f0da; + --tblr-info-bg-subtle: #d9ebf9; + --tblr-warning-bg-subtle: #fde1cd; + --tblr-danger-bg-subtle: #f7d7d7; + --tblr-light-bg-subtle: #fbfcfd; + --tblr-dark-bg-subtle: #bbc3cd; + --tblr-primary-border-subtle: #99bbdb; + --tblr-secondary-border-subtle: #c2c7cd; + --tblr-success-border-subtle: #ace1b4; + --tblr-info-border-subtle: #b3d6f3; + --tblr-warning-border-subtle: #fcc29c; + --tblr-danger-border-subtle: #efb0b0; + --tblr-light-border-subtle: #eef1f4; + --tblr-dark-border-subtle: #929dab; + --tblr-white-rgb: 255, 255, 255; + --tblr-black-rgb: 0, 0, 0; + --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; + --tblr-font-monospace: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + --tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --tblr-body-font-family: var(--tblr-font-sans-serif); + --tblr-body-font-size: 0.875rem; + --tblr-body-font-weight: 400; + --tblr-body-line-height: 1.4285714286; + --tblr-body-color: #182433; + --tblr-body-color-rgb: 24, 36, 51; + --tblr-body-bg: #f6f8fb; + --tblr-body-bg-rgb: 246, 248, 251; + --tblr-emphasis-color: #182433; + --tblr-emphasis-color-rgb: 24, 36, 51; + --tblr-secondary-color: rgba(24, 36, 51, 0.75); + --tblr-secondary-color-rgb: 24, 36, 51; + --tblr-secondary-bg: #eef1f4; + --tblr-secondary-bg-rgb: 238, 241, 244; + --tblr-tertiary-color: rgba(24, 36, 51, 0.5); + --tblr-tertiary-color-rgb: 24, 36, 51; + --tblr-tertiary-bg: #f6f8fb; + --tblr-tertiary-bg-rgb: 246, 248, 251; + --tblr-heading-color: inherit; + --tblr-link-color: #0054a6; + --tblr-link-color-rgb: 0, 84, 166; + --tblr-link-decoration: none; + --tblr-link-hover-color: #004385; + --tblr-link-hover-color-rgb: 0, 67, 133; + --tblr-link-hover-decoration: underline; + --tblr-code-color: var(--tblr-gray-600); + --tblr-highlight-bg: #fdeccc; + --tblr-border-width: 1px; + --tblr-border-style: solid; + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-radius: 4px; + --tblr-border-radius-sm: 2px; + --tblr-border-radius-lg: 8px; + --tblr-border-radius-xl: 1rem; + --tblr-border-radius-xxl: 2rem; + --tblr-border-radius-2xl: var(--tblr-border-radius-xxl); + --tblr-border-radius-pill: 100rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --tblr-box-shadow-inset: 0 0 transparent; + --tblr-focus-ring-width: 0.25rem; + --tblr-focus-ring-opacity: 0.25; + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), 0.25); + --tblr-form-valid-color: #2fb344; + --tblr-form-valid-border-color: #2fb344; + --tblr-form-invalid-color: #d63939; + --tblr-form-invalid-border-color: #d63939; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + color-scheme: dark; + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-body-bg: #040a11; + --tblr-body-bg-rgb: 4, 10, 17; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-secondary-color: rgba(252, 253, 254, 0.75); + --tblr-secondary-color-rgb: 252, 253, 254; + --tblr-secondary-bg: #182433; + --tblr-secondary-bg-rgb: 24, 36, 51; + --tblr-tertiary-color: rgba(252, 253, 254, 0.5); + --tblr-tertiary-color-rgb: 252, 253, 254; + --tblr-tertiary-bg: #0e1722; + --tblr-tertiary-bg-rgb: 14, 23, 34; + --tblr-primary-text-emphasis: #6698ca; + --tblr-secondary-text-emphasis: #a3abb4; + --tblr-success-text-emphasis: #82d18f; + --tblr-info-text-emphasis: #8ec2ed; + --tblr-warning-text-emphasis: #faa46a; + --tblr-danger-text-emphasis: #e68888; + --tblr-light-text-emphasis: #f6f8fb; + --tblr-dark-text-emphasis: #dadfe5; + --tblr-primary-bg-subtle: #001121; + --tblr-secondary-bg-subtle: #14171a; + --tblr-success-bg-subtle: #09240e; + --tblr-info-bg-subtle: #0d1f2d; + --tblr-warning-bg-subtle: #311501; + --tblr-danger-bg-subtle: #2b0b0b; + --tblr-light-bg-subtle: #182433; + --tblr-dark-bg-subtle: #0c121a; + --tblr-primary-border-subtle: #003264; + --tblr-secondary-border-subtle: #3d454e; + --tblr-success-border-subtle: #1c6b29; + --tblr-info-border-subtle: #285c87; + --tblr-warning-border-subtle: #943e04; + --tblr-danger-border-subtle: #802222; + --tblr-light-border-subtle: #3a4859; + --tblr-dark-border-subtle: #182433; + --tblr-heading-color: inherit; + --tblr-link-color: #6698ca; + --tblr-link-hover-color: #85add5; + --tblr-link-color-rgb: 102, 152, 202; + --tblr-link-hover-color-rgb: 133, 173, 213; + --tblr-code-color: var(--tblr-gray-300); + --tblr-border-color: #1f2e41; + --tblr-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-form-valid-color: #82d18f; + --tblr-form-valid-border-color: #82d18f; + --tblr-form-invalid-color: #e68888; + --tblr-form-invalid-border-color: #e68888; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--tblr-body-font-family); + font-size: var(--tblr-body-font-size); + font-weight: var(--tblr-body-font-weight); + line-height: var(--tblr-body-line-height); + color: var(--tblr-body-color); + text-align: var(--tblr-body-text-align); + background-color: var(--tblr-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr, .hr { + margin: 2rem 0; + color: inherit; + border: 0; + border-top: var(--tblr-border-width) solid; + opacity: 0.16; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: var(--tblr-spacer); + font-weight: var(--tblr-font-weight-bold); + line-height: 1.2; + color: var(--tblr-heading-color); +} + +h1, .h1 { + font-size: 1.5rem; +} + +h2, .h2 { + font-size: 1.25rem; +} + +h3, .h3 { + font-size: 1rem; +} + +h4, .h4 { + font-size: 0.875rem; +} + +h5, .h5 { + font-size: 0.75rem; +} + +h6, .h6 { + font-size: 0.625rem; +} + +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; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 600; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 85.714285%; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--tblr-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(--tblr-link-color-rgb), var(--tblr-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--tblr-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 85.714285%; + color: var(--tblr-light); +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 85.714285%; + color: var(--tblr-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.25rem 0.5rem; + font-size: var(--tblr-font-size-h5); + color: var(--tblr-text-secondary-dark); + background-color: var(--tblr-code-bg); + border-radius: 2px; +} +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.75rem; + padding-bottom: 0.75rem; + color: var(--tblr-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + 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; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + 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: 1.5rem; + line-height: inherit; +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-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: 0.875rem; + font-weight: var(--tblr-font-weight-normal); +} + +.display-1 { + font-size: 5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-5 { + font-size: 3rem; + font-weight: 300; + line-height: 1.2; +} + +.display-6 { + font-size: 2rem; + font-weight: 300; + line-height: 1.2; +} + +.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: 85.714285%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 0.875rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 85.714285%; + color: #667382; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--tblr-body-bg); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --tblr-breakpoint-xs: 0; + --tblr-breakpoint-sm: 576px; + --tblr-breakpoint-md: 768px; + --tblr-breakpoint-lg: 992px; + --tblr-breakpoint-xl: 1200px; + --tblr-breakpoint-xxl: 1400px; +} + +.row { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--tblr-gutter-y)); + margin-right: calc(-0.5 * var(--tblr-gutter-x)); + margin-left: calc(-0.5 * var(--tblr-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-top: var(--tblr-gutter-y); +} + +.grid { + display: grid; + grid-template-rows: repeat(var(--tblr-rows, 1), 1fr); + grid-template-columns: repeat(var(--tblr-columns, 12), 1fr); + gap: var(--tblr-gap, var(--tblr-page-padding)); +} +.grid .g-col-1 { + grid-column: auto/span 1; +} +.grid .g-col-2 { + grid-column: auto/span 2; +} +.grid .g-col-3 { + grid-column: auto/span 3; +} +.grid .g-col-4 { + grid-column: auto/span 4; +} +.grid .g-col-5 { + grid-column: auto/span 5; +} +.grid .g-col-6 { + grid-column: auto/span 6; +} +.grid .g-col-7 { + grid-column: auto/span 7; +} +.grid .g-col-8 { + grid-column: auto/span 8; +} +.grid .g-col-9 { + grid-column: auto/span 9; +} +.grid .g-col-10 { + grid-column: auto/span 10; +} +.grid .g-col-11 { + grid-column: auto/span 11; +} +.grid .g-col-12 { + grid-column: auto/span 12; +} +.grid .g-start-1 { + grid-column-start: 1; +} +.grid .g-start-2 { + grid-column-start: 2; +} +.grid .g-start-3 { + grid-column-start: 3; +} +.grid .g-start-4 { + grid-column-start: 4; +} +.grid .g-start-5 { + grid-column-start: 5; +} +.grid .g-start-6 { + grid-column-start: 6; +} +.grid .g-start-7 { + grid-column-start: 7; +} +.grid .g-start-8 { + grid-column-start: 8; +} +.grid .g-start-9 { + grid-column-start: 9; +} +.grid .g-start-10 { + grid-column-start: 10; +} +.grid .g-start-11 { + grid-column-start: 11; +} +@media (min-width: 576px) { + .grid .g-col-sm-1 { + grid-column: auto/span 1; + } + .grid .g-col-sm-2 { + grid-column: auto/span 2; + } + .grid .g-col-sm-3 { + grid-column: auto/span 3; + } + .grid .g-col-sm-4 { + grid-column: auto/span 4; + } + .grid .g-col-sm-5 { + grid-column: auto/span 5; + } + .grid .g-col-sm-6 { + grid-column: auto/span 6; + } + .grid .g-col-sm-7 { + grid-column: auto/span 7; + } + .grid .g-col-sm-8 { + grid-column: auto/span 8; + } + .grid .g-col-sm-9 { + grid-column: auto/span 9; + } + .grid .g-col-sm-10 { + grid-column: auto/span 10; + } + .grid .g-col-sm-11 { + grid-column: auto/span 11; + } + .grid .g-col-sm-12 { + grid-column: auto/span 12; + } + .grid .g-start-sm-1 { + grid-column-start: 1; + } + .grid .g-start-sm-2 { + grid-column-start: 2; + } + .grid .g-start-sm-3 { + grid-column-start: 3; + } + .grid .g-start-sm-4 { + grid-column-start: 4; + } + .grid .g-start-sm-5 { + grid-column-start: 5; + } + .grid .g-start-sm-6 { + grid-column-start: 6; + } + .grid .g-start-sm-7 { + grid-column-start: 7; + } + .grid .g-start-sm-8 { + grid-column-start: 8; + } + .grid .g-start-sm-9 { + grid-column-start: 9; + } + .grid .g-start-sm-10 { + grid-column-start: 10; + } + .grid .g-start-sm-11 { + grid-column-start: 11; + } +} +@media (min-width: 768px) { + .grid .g-col-md-1 { + grid-column: auto/span 1; + } + .grid .g-col-md-2 { + grid-column: auto/span 2; + } + .grid .g-col-md-3 { + grid-column: auto/span 3; + } + .grid .g-col-md-4 { + grid-column: auto/span 4; + } + .grid .g-col-md-5 { + grid-column: auto/span 5; + } + .grid .g-col-md-6 { + grid-column: auto/span 6; + } + .grid .g-col-md-7 { + grid-column: auto/span 7; + } + .grid .g-col-md-8 { + grid-column: auto/span 8; + } + .grid .g-col-md-9 { + grid-column: auto/span 9; + } + .grid .g-col-md-10 { + grid-column: auto/span 10; + } + .grid .g-col-md-11 { + grid-column: auto/span 11; + } + .grid .g-col-md-12 { + grid-column: auto/span 12; + } + .grid .g-start-md-1 { + grid-column-start: 1; + } + .grid .g-start-md-2 { + grid-column-start: 2; + } + .grid .g-start-md-3 { + grid-column-start: 3; + } + .grid .g-start-md-4 { + grid-column-start: 4; + } + .grid .g-start-md-5 { + grid-column-start: 5; + } + .grid .g-start-md-6 { + grid-column-start: 6; + } + .grid .g-start-md-7 { + grid-column-start: 7; + } + .grid .g-start-md-8 { + grid-column-start: 8; + } + .grid .g-start-md-9 { + grid-column-start: 9; + } + .grid .g-start-md-10 { + grid-column-start: 10; + } + .grid .g-start-md-11 { + grid-column-start: 11; + } +} +@media (min-width: 992px) { + .grid .g-col-lg-1 { + grid-column: auto/span 1; + } + .grid .g-col-lg-2 { + grid-column: auto/span 2; + } + .grid .g-col-lg-3 { + grid-column: auto/span 3; + } + .grid .g-col-lg-4 { + grid-column: auto/span 4; + } + .grid .g-col-lg-5 { + grid-column: auto/span 5; + } + .grid .g-col-lg-6 { + grid-column: auto/span 6; + } + .grid .g-col-lg-7 { + grid-column: auto/span 7; + } + .grid .g-col-lg-8 { + grid-column: auto/span 8; + } + .grid .g-col-lg-9 { + grid-column: auto/span 9; + } + .grid .g-col-lg-10 { + grid-column: auto/span 10; + } + .grid .g-col-lg-11 { + grid-column: auto/span 11; + } + .grid .g-col-lg-12 { + grid-column: auto/span 12; + } + .grid .g-start-lg-1 { + grid-column-start: 1; + } + .grid .g-start-lg-2 { + grid-column-start: 2; + } + .grid .g-start-lg-3 { + grid-column-start: 3; + } + .grid .g-start-lg-4 { + grid-column-start: 4; + } + .grid .g-start-lg-5 { + grid-column-start: 5; + } + .grid .g-start-lg-6 { + grid-column-start: 6; + } + .grid .g-start-lg-7 { + grid-column-start: 7; + } + .grid .g-start-lg-8 { + grid-column-start: 8; + } + .grid .g-start-lg-9 { + grid-column-start: 9; + } + .grid .g-start-lg-10 { + grid-column-start: 10; + } + .grid .g-start-lg-11 { + grid-column-start: 11; + } +} +@media (min-width: 1200px) { + .grid .g-col-xl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xl-1 { + grid-column-start: 1; + } + .grid .g-start-xl-2 { + grid-column-start: 2; + } + .grid .g-start-xl-3 { + grid-column-start: 3; + } + .grid .g-start-xl-4 { + grid-column-start: 4; + } + .grid .g-start-xl-5 { + grid-column-start: 5; + } + .grid .g-start-xl-6 { + grid-column-start: 6; + } + .grid .g-start-xl-7 { + grid-column-start: 7; + } + .grid .g-start-xl-8 { + grid-column-start: 8; + } + .grid .g-start-xl-9 { + grid-column-start: 9; + } + .grid .g-start-xl-10 { + grid-column-start: 10; + } + .grid .g-start-xl-11 { + grid-column-start: 11; + } +} +@media (min-width: 1400px) { + .grid .g-col-xxl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xxl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xxl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xxl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xxl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xxl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xxl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xxl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xxl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xxl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xxl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xxl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xxl-1 { + grid-column-start: 1; + } + .grid .g-start-xxl-2 { + grid-column-start: 2; + } + .grid .g-start-xxl-3 { + grid-column-start: 3; + } + .grid .g-start-xxl-4 { + grid-column-start: 4; + } + .grid .g-start-xxl-5 { + grid-column-start: 5; + } + .grid .g-start-xxl-6 { + grid-column-start: 6; + } + .grid .g-start-xxl-7 { + grid-column-start: 7; + } + .grid .g-start-xxl-8 { + grid-column-start: 8; + } + .grid .g-start-xxl-9 { + grid-column-start: 9; + } + .grid .g-start-xxl-10 { + grid-column-start: 10; + } + .grid .g-start-xxl-11 { + grid-column-start: 11; + } +} + +.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.3333333333%; +} + +.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.6666666667%; +} + +.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 { + --tblr-gutter-x: 0; +} + +.g-0, +.gy-0 { + --tblr-gutter-y: 0; +} + +.g-1, +.gx-1 { + --tblr-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --tblr-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --tblr-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --tblr-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --tblr-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --tblr-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --tblr-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --tblr-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --tblr-gutter-x: 2rem; +} + +.g-5, +.gy-5 { + --tblr-gutter-y: 2rem; +} + +.g-6, +.gx-6 { + --tblr-gutter-x: 3rem; +} + +.g-6, +.gy-6 { + --tblr-gutter-y: 3rem; +} + +.g-7, +.gx-7 { + --tblr-gutter-x: 5rem; +} + +.g-7, +.gy-7 { + --tblr-gutter-y: 5rem; +} + +.g-8, +.gx-8 { + --tblr-gutter-x: 8rem; +} + +.g-8, +.gy-8 { + --tblr-gutter-y: 8rem; +} + +@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.3333333333%; + } + .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.6666666667%; + } + .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 { + --tblr-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --tblr-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --tblr-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --tblr-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --tblr-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --tblr-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --tblr-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --tblr-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --tblr-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --tblr-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --tblr-gutter-x: 2rem; + } + .g-sm-5, + .gy-sm-5 { + --tblr-gutter-y: 2rem; + } + .g-sm-6, + .gx-sm-6 { + --tblr-gutter-x: 3rem; + } + .g-sm-6, + .gy-sm-6 { + --tblr-gutter-y: 3rem; + } + .g-sm-7, + .gx-sm-7 { + --tblr-gutter-x: 5rem; + } + .g-sm-7, + .gy-sm-7 { + --tblr-gutter-y: 5rem; + } + .g-sm-8, + .gx-sm-8 { + --tblr-gutter-x: 8rem; + } + .g-sm-8, + .gy-sm-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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 { + --tblr-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --tblr-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --tblr-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --tblr-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --tblr-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --tblr-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --tblr-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --tblr-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --tblr-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --tblr-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --tblr-gutter-x: 2rem; + } + .g-md-5, + .gy-md-5 { + --tblr-gutter-y: 2rem; + } + .g-md-6, + .gx-md-6 { + --tblr-gutter-x: 3rem; + } + .g-md-6, + .gy-md-6 { + --tblr-gutter-y: 3rem; + } + .g-md-7, + .gx-md-7 { + --tblr-gutter-x: 5rem; + } + .g-md-7, + .gy-md-7 { + --tblr-gutter-y: 5rem; + } + .g-md-8, + .gx-md-8 { + --tblr-gutter-x: 8rem; + } + .g-md-8, + .gy-md-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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 { + --tblr-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --tblr-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --tblr-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --tblr-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --tblr-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --tblr-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --tblr-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --tblr-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --tblr-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --tblr-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --tblr-gutter-x: 2rem; + } + .g-lg-5, + .gy-lg-5 { + --tblr-gutter-y: 2rem; + } + .g-lg-6, + .gx-lg-6 { + --tblr-gutter-x: 3rem; + } + .g-lg-6, + .gy-lg-6 { + --tblr-gutter-y: 3rem; + } + .g-lg-7, + .gx-lg-7 { + --tblr-gutter-x: 5rem; + } + .g-lg-7, + .gy-lg-7 { + --tblr-gutter-y: 5rem; + } + .g-lg-8, + .gx-lg-8 { + --tblr-gutter-x: 8rem; + } + .g-lg-8, + .gy-lg-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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 { + --tblr-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --tblr-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --tblr-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --tblr-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --tblr-gutter-x: 2rem; + } + .g-xl-5, + .gy-xl-5 { + --tblr-gutter-y: 2rem; + } + .g-xl-6, + .gx-xl-6 { + --tblr-gutter-x: 3rem; + } + .g-xl-6, + .gy-xl-6 { + --tblr-gutter-y: 3rem; + } + .g-xl-7, + .gx-xl-7 { + --tblr-gutter-x: 5rem; + } + .g-xl-7, + .gy-xl-7 { + --tblr-gutter-y: 5rem; + } + .g-xl-8, + .gx-xl-8 { + --tblr-gutter-x: 8rem; + } + .g-xl-8, + .gy-xl-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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 { + --tblr-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --tblr-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --tblr-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --tblr-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --tblr-gutter-x: 2rem; + } + .g-xxl-5, + .gy-xxl-5 { + --tblr-gutter-y: 2rem; + } + .g-xxl-6, + .gx-xxl-6 { + --tblr-gutter-x: 3rem; + } + .g-xxl-6, + .gy-xxl-6 { + --tblr-gutter-y: 3rem; + } + .g-xxl-7, + .gx-xxl-7 { + --tblr-gutter-x: 5rem; + } + .g-xxl-7, + .gy-xxl-7 { + --tblr-gutter-y: 5rem; + } + .g-xxl-8, + .gx-xxl-8 { + --tblr-gutter-x: 8rem; + } + .g-xxl-8, + .gy-xxl-8 { + --tblr-gutter-y: 8rem; + } +} +.table, .markdown > table { + --tblr-table-color-type: initial; + --tblr-table-bg-type: initial; + --tblr-table-color-state: initial; + --tblr-table-bg-state: initial; + --tblr-table-color: inherit; + --tblr-table-bg: transparent; + --tblr-table-border-color: var(--tblr-border-color-translucent); + --tblr-table-accent-bg: transparent; + --tblr-table-striped-color: inherit; + --tblr-table-striped-bg: var(--tblr-bg-surface-tertiary); + --tblr-table-active-color: inherit; + --tblr-table-active-bg: rgba(0, 0, 0, 0.1); + --tblr-table-hover-color: inherit; + --tblr-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--tblr-table-border-color); +} +.table > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + color: var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color))); + background-color: var(--tblr-table-bg); + border-bottom-width: var(--tblr-border-width); + box-shadow: inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg))); +} +.table > tbody, .markdown > table > tbody { + vertical-align: inherit; +} +.table > thead, .markdown > table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent); +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > *, .markdown > table > :not(caption) > * { + border-width: var(--tblr-border-width) 0; +} +.table-bordered > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + border-width: 0 var(--tblr-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(even) > * { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-active { + --tblr-table-color-state: var(--tblr-table-active-color); + --tblr-table-bg-state: var(--tblr-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --tblr-table-color-state: var(--tblr-table-hover-color); + --tblr-table-bg-state: var(--tblr-table-hover-bg); +} + +.table-primary { + --tblr-table-color: #182433; + --tblr-table-bg: #ccdded; + --tblr-table-border-color: #bacbda; + --tblr-table-striped-bg: #c3d4e4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #bacbda; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #bfcfdf; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-secondary { + --tblr-table-color: #182433; + --tblr-table-bg: #e0e3e6; + --tblr-table-border-color: #ccd0d4; + --tblr-table-striped-bg: #d6d9dd; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #ccd0d4; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #d1d5d9; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-success { + --tblr-table-color: #182433; + --tblr-table-bg: #d5f0da; + --tblr-table-border-color: #c2dcc9; + --tblr-table-striped-bg: #cce6d2; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c2dcc9; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #c7e1cd; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-info { + --tblr-table-color: #182433; + --tblr-table-bg: #d9ebf9; + --tblr-table-border-color: #c6d7e5; + --tblr-table-striped-bg: #cfe1ef; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c6d7e5; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #cbdcea; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-warning { + --tblr-table-color: #182433; + --tblr-table-bg: #fde1cd; + --tblr-table-border-color: #e6cebe; + --tblr-table-striped-bg: #f2d8c5; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e6cebe; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ecd3c1; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-danger { + --tblr-table-color: #182433; + --tblr-table-bg: #f7d7d7; + --tblr-table-border-color: #e1c5c7; + --tblr-table-striped-bg: #eccecf; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e1c5c7; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #e6cacb; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-light { + --tblr-table-color: #182433; + --tblr-table-bg: #fcfdfe; + --tblr-table-border-color: #e5e7ea; + --tblr-table-striped-bg: #f1f2f4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e5e7ea; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ebedef; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-dark { + --tblr-table-color: #fcfdfe; + --tblr-table-bg: #182433; + --tblr-table-border-color: #2f3a47; + --tblr-table-striped-bg: #232f3d; + --tblr-table-striped-color: #fcfdfe; + --tblr-table-active-bg: #2f3a47; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #293442; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-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; + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-medium); +} + +.col-form-label { + padding-top: calc(0.5625rem + var(--tblr-border-width)); + padding-bottom: calc(0.5625rem + var(--tblr-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.4285714286; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--tblr-border-width)); + padding-bottom: calc(0.5rem + var(--tblr-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.125rem + var(--tblr-border-width)); + padding-bottom: calc(0.125rem + var(--tblr-border-width)); + font-size: 0.75rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-clip: padding-box; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + 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(--tblr-body-color); + background-color: var(--tblr-bg-forms); + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.4285714286em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-webkit-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::placeholder { + color: #929dab; + opacity: 1; +} +.form-control:disabled { + background-color: var(--tblr-bg-surface-secondary); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-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.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-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(--tblr-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.5625rem 0; + margin-bottom: 0; + line-height: 1.4285714286; + color: var(--tblr-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--tblr-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} + +.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} + +textarea.form-control { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5625rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-select { + --tblr-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='%23929dab' 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.5625rem 2.25rem 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-image: var(--tblr-form-select-bg-img), var(--tblr-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + 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: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--tblr-bg-surface-secondary); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--tblr-body-color); +} + +.form-select-sm { + padding-top: 0.125rem; + padding-bottom: 0.125rem; + padding-left: 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +[data-bs-theme=dark] .form-select, body[data-bs-theme=dark] [data-bs-theme=light] .form-select { + --tblr-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='%23fcfdfe' 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.25rem; + padding-left: 2rem; + margin-bottom: 0.75rem; +} +.form-check .form-check-input { + float: left; + margin-left: -2rem; +} + +.form-check-reverse { + padding-right: 2rem; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -2rem; + margin-left: 0; +} + +.form-check-input { + --tblr-form-check-bg: var(--tblr-bg-forms); + width: 1.25rem; + height: 1.25rem; + margin-top: 0.0892857143rem; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-form-check-bg); + background-image: var(--tblr-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: var(--tblr-border-radius); +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #80aad3; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-check-input:checked { + background-color: var(--tblr-primary); + border-color: var(--tblr-border-color-translucent); +} +.form-check-input:checked[type=checkbox] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: var(--tblr-primary); + border-color: var(--tblr-primary); + --tblr-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='%23ffffff' 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.7; +} + +.form-switch { + padding-left: 2.5rem; +} +.form-switch .form-check-input { + --tblr-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='%23dadfe5'/%3e%3c/svg%3e"); + width: 2rem; + margin-left: -2.5rem; + background-image: var(--tblr-form-switch-bg); + background-position: left center; + border-radius: 2rem; + 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 { + --tblr-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='%2380aad3'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --tblr-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='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5rem; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5rem; + 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.4; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --tblr-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.25rem; + 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 #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.375rem; + -webkit-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -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: #b3cce4; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -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: #b3cce4; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--tblr-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--tblr-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(--tblr-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--tblr-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(--tblr-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::-webkit-input-placeholder, .form-floating > .form-control-plaintext::-webkit-input-placeholder { + color: transparent; +} +.form-floating > .form-control:-ms-input-placeholder, .form-floating > .form-control-plaintext:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::-ms-input-placeholder, .form-floating > .form-control-plaintext::-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-ms-input-placeholder), .form-floating > .form-control-plaintext:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-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(:-ms-input-placeholder) ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--tblr-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #667382; +} +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--tblr-bg-surface-secondary); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + 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.5625rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-secondary); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-bg-surface-secondary); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + 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(--tblr-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: 85.714285%; + color: var(--tblr-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-success); + border-radius: var(--tblr-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--tblr-form-valid-border-color); + padding-right: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) right calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--tblr-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--tblr-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-danger); + border-radius: var(--tblr-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--tblr-form-invalid-border-color); + padding-right: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) right calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--tblr-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--tblr-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --tblr-btn-padding-x: 1rem; + --tblr-btn-padding-y: 0.5625rem; + --tblr-btn-font-family: var(--tblr-font-sans-serif); + --tblr-btn-font-size: 0.875rem; + --tblr-btn-font-weight: var(--tblr-font-weight-medium); + --tblr-btn-line-height: 1.4285714286; + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-width: var(--tblr-border-width); + --tblr-btn-border-color: transparent; + --tblr-btn-border-radius: var(--tblr-border-radius); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-disabled-opacity: 0.4; + --tblr-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--tblr-btn-padding-y) var(--tblr-btn-padding-x); + font-family: var(--tblr-btn-font-family); + font-size: var(--tblr-btn-font-size); + font-weight: var(--tblr-btn-font-weight); + line-height: var(--tblr-btn-line-height); + color: var(--tblr-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-btn-border-width) solid var(--tblr-btn-border-color); + border-radius: var(--tblr-btn-border-radius); + background-color: var(--tblr-btn-bg); + box-shadow: var(--tblr-btn-box-shadow); + 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(--tblr-btn-hover-color); + text-decoration: none; + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--tblr-btn-color); + background-color: var(--tblr-btn-bg); + border-color: var(--tblr-btn-border-color); +} +.btn:focus-visible { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--tblr-btn-active-color); + background-color: var(--tblr-btn-active-bg); + border-color: var(--tblr-btn-active-border-color); + box-shadow: var(--tblr-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--tblr-btn-active-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--tblr-btn-disabled-color); + pointer-events: none; + background-color: var(--tblr-btn-disabled-bg); + border-color: var(--tblr-btn-disabled-border-color); + opacity: var(--tblr-btn-disabled-opacity); + box-shadow: none; +} + +.btn-link { + --tblr-btn-font-weight: 400; + --tblr-btn-color: var(--tblr-link-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-link-hover-color); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-color: var(--tblr-link-hover-color); + --tblr-btn-active-border-color: transparent; + --tblr-btn-disabled-color: #667382; + --tblr-btn-disabled-border-color: transparent; + --tblr-btn-box-shadow: 0 0 0 #000; + --tblr-btn-focus-shadow-rgb: 38, 109, 179; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--tblr-btn-color); +} +.btn-link:hover { + color: var(--tblr-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-padding-y: 0.5rem; + --tblr-btn-padding-x: 0.75rem; + --tblr-btn-font-size: 1.25rem; + --tblr-btn-border-radius: var(--tblr-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-padding-y: 0.125rem; + --tblr-btn-padding-x: 0.25rem; + --tblr-btn-font-size: 0.75rem; + --tblr-btn-border-radius: var(--tblr-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; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-45deg); +} + +.dropdown-menu { + --tblr-dropdown-zindex: 1000; + --tblr-dropdown-min-width: 11rem; + --tblr-dropdown-padding-x: 0; + --tblr-dropdown-padding-y: 0.25rem; + --tblr-dropdown-spacer: 1px; + --tblr-dropdown-font-size: 0.875rem; + --tblr-dropdown-color: var(--tblr-body-color); + --tblr-dropdown-bg: var(--tblr-bg-surface); + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-border-radius: var(--tblr-border-radius); + --tblr-dropdown-border-width: var(--tblr-border-width); + --tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width)); + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-divider-margin-y: var(--tblr-spacer); + --tblr-dropdown-box-shadow: var(--tblr-box-shadow-dropdown); + --tblr-dropdown-link-color: inherit; + --tblr-dropdown-link-hover-color: inherit; + --tblr-dropdown-link-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color); + --tblr-dropdown-item-padding-x: 0.75rem; + --tblr-dropdown-item-padding-y: 0.5rem; + --tblr-dropdown-header-color: #667382; + --tblr-dropdown-header-padding-x: 0.75rem; + --tblr-dropdown-header-padding-y: 0.25rem; + position: absolute; + z-index: var(--tblr-dropdown-zindex); + display: none; + min-width: var(--tblr-dropdown-min-width); + padding: var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x); + margin: 0; + font-size: var(--tblr-dropdown-font-size); + color: var(--tblr-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--tblr-dropdown-bg); + background-clip: padding-box; + border: var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color); + border-radius: var(--tblr-dropdown-border-radius); + box-shadow: var(--tblr-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--tblr-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(--tblr-dropdown-spacer); +} +.dropup .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(135deg); +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--tblr-dropdown-spacer); +} +.dropend .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-135deg); +} +.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(--tblr-dropdown-spacer); +} +.dropstart .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(45deg); +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--tblr-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--tblr-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--tblr-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--tblr-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--tblr-dropdown-link-active-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--tblr-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.765625rem; + color: var(--tblr-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + color: var(--tblr-dropdown-link-color); +} + +.dropdown-menu-dark { + --tblr-dropdown-color: #dadfe5; + --tblr-dropdown-bg: #182433; + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-box-shadow: ; + --tblr-dropdown-link-color: #dadfe5; + --tblr-dropdown-link-hover-color: #ffffff; + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: #929dab; + --tblr-dropdown-header-color: #929dab; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + 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(--tblr-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(var(--tblr-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.1875rem; + padding-left: 0.1875rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.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:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--tblr-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --tblr-nav-link-padding-x: 0.75rem; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-secondary); + --tblr-nav-link-hover-color: var(--tblr-link-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-disabled-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x); + font-size: var(--tblr-nav-link-font-size); + font-weight: var(--tblr-nav-link-font-weight); + color: var(--tblr-nav-link-color); + background: none; + 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:hover, .nav-link:focus { + color: var(--tblr-nav-link-hover-color); + text-decoration: none; +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--tblr-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --tblr-nav-tabs-border-width: var(--tblr-border-width); + --tblr-nav-tabs-border-color: var(--tblr-border-color); + --tblr-nav-tabs-border-radius: var(--tblr-border-radius); + --tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + --tblr-nav-tabs-link-active-color: var(--tblr-body-color); + --tblr-nav-tabs-link-active-bg: var(--tblr-body-bg); + --tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + border-bottom: var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width)); + border: var(--tblr-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--tblr-nav-tabs-border-radius); + border-top-right-radius: var(--tblr-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--tblr-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--tblr-nav-tabs-link-active-color); + background-color: var(--tblr-nav-tabs-link-active-bg); + border-color: var(--tblr-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--tblr-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --tblr-nav-pills-border-radius: var(--tblr-border-radius); + --tblr-nav-pills-link-active-color: var(--tblr-primary); + --tblr-nav-pills-link-active-bg: var(--tblr-active-bg); +} +.nav-pills .nav-link { + border-radius: var(--tblr-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--tblr-nav-pills-link-active-color); + background-color: var(--tblr-nav-pills-link-active-bg); +} + +.nav-underline { + --tblr-nav-underline-gap: 1rem; + --tblr-nav-underline-border-width: 0.125rem; + --tblr-nav-underline-link-active-color: var(--tblr-emphasis-color); + gap: var(--tblr-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--tblr-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 600; + color: var(--tblr-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + 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 { + --tblr-navbar-padding-x: 0; + --tblr-navbar-padding-y: 0.25rem; + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-hover-color: rgba(var(--tblr-emphasis-color-rgb), 0.8); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: var(--tblr-body-color) color; + --tblr-navbar-brand-padding-y: 0.5rem; + --tblr-navbar-brand-margin-end: 1rem; + --tblr-navbar-brand-font-size: 1.25rem; + --tblr-navbar-brand-color: var(--tblr-body-color); + --tblr-navbar-brand-hover-color: var(--tblr-body-color) color; + --tblr-navbar-nav-link-padding-x: 0.75rem; + --tblr-navbar-toggler-padding-y: 0; + --tblr-navbar-toggler-padding-x: 0; + --tblr-navbar-toggler-font-size: 1rem; + --tblr-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%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), 0.15); + --tblr-navbar-toggler-border-radius: var(--tblr-border-radius); + --tblr-navbar-toggler-focus-width: 0; + --tblr-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(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--tblr-navbar-brand-padding-y); + padding-bottom: var(--tblr-navbar-brand-padding-y); + margin-right: var(--tblr-navbar-brand-margin-end); + font-size: var(--tblr-navbar-brand-font-size); + color: var(--tblr-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--tblr-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --tblr-nav-link-padding-x: 0; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-navbar-color); + --tblr-nav-link-hover-color: var(--tblr-navbar-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-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(--tblr-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--tblr-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--tblr-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x); + font-size: var(--tblr-navbar-toggler-font-size); + line-height: 1; + color: var(--tblr-navbar-color); + background-color: transparent; + border: var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color); + border-radius: var(--tblr-navbar-toggler-border-radius); + transition: var(--tblr-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(--tblr-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--tblr-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--tblr-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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-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; + box-shadow: none; + 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], +body[data-bs-theme=dark] .navbar[data-bs-theme=light] { + --tblr-navbar-color: rgba(255, 255, 255, 0.7); + --tblr-navbar-hover-color: rgba(255, 255, 255, 0.75); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: #ffffff; + --tblr-navbar-brand-color: #ffffff; + --tblr-navbar-brand-hover-color: #ffffff; + --tblr-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --tblr-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.7%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, body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon { + --tblr-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.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --tblr-card-spacer-y: 1.25rem; + --tblr-card-spacer-x: 1.25rem; + --tblr-card-title-spacer-y: 1.25rem; + --tblr-card-title-color: ; + --tblr-card-subtitle-color: ; + --tblr-card-border-width: var(--tblr-border-width); + --tblr-card-border-color: var(--tblr-border-color-translucent); + --tblr-card-border-radius: var(--tblr-border-radius); + --tblr-card-box-shadow: var(--tblr-shadow-card); + --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-card-cap-padding-y: 1.25rem; + --tblr-card-cap-padding-x: 1.25rem; + --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); + --tblr-card-cap-color: inherit; + --tblr-card-height: ; + --tblr-card-color: inherit; + --tblr-card-bg: var(--tblr-bg-surface); + --tblr-card-img-overlay-padding: 1rem; + --tblr-card-group-margin: 1.5rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--tblr-card-height); + color: var(--tblr-body-color); + word-wrap: break-word; + background-color: var(--tblr-card-bg); + background-clip: border-box; + border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius); + box-shadow: var(--tblr-card-box-shadow); +} +.card > hr, .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(--tblr-card-inner-border-radius); + border-top-right-radius: var(--tblr-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--tblr-card-inner-border-radius); + border-bottom-left-radius: var(--tblr-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(--tblr-card-spacer-y) var(--tblr-card-spacer-x); + color: var(--tblr-card-color); +} + +.card-title { + margin-bottom: var(--tblr-card-title-spacer-y); + color: var(--tblr-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--tblr-card-title-spacer-y)); + margin-bottom: 0; + color: var(--tblr-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: var(--tblr-card-spacer-x); +} + +.card-header { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + margin-bottom: 0; + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-bottom: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-header:first-child { + border-radius: var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-top: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--tblr-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--tblr-card-bg); + border-bottom-color: var(--tblr-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--tblr-card-img-overlay-padding); + border-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--tblr-card-inner-border-radius); + border-top-right-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--tblr-card-inner-border-radius); + border-bottom-left-radius: var(--tblr-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--tblr-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-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + 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-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); + --tblr-accordion-bg: transparent; + --tblr-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; + --tblr-accordion-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-border-width: var(--tblr-border-width); + --tblr-accordion-border-radius: var(--tblr-border-radius); + --tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-accordion-btn-padding-x: 1.25rem; + --tblr-accordion-btn-padding-y: 1rem; + --tblr-accordion-btn-color: var(--tblr-body-color); + --tblr-accordion-btn-bg: transparent; + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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"); + --tblr-accordion-btn-icon-width: 1rem; + --tblr-accordion-btn-icon-transform: rotate(-180deg); + --tblr-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%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"); + --tblr-accordion-btn-focus-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-accordion-body-padding-x: 1.25rem; + --tblr-accordion-body-padding-y: 1rem; + --tblr-accordion-active-color: inherit; + --tblr-accordion-active-bg: transparent; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x); + font-size: 0.875rem; + color: var(--tblr-accordion-btn-color); + text-align: left; + background-color: var(--tblr-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--tblr-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--tblr-accordion-active-color); + background-color: var(--tblr-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--tblr-accordion-btn-active-icon); + transform: var(--tblr-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--tblr-accordion-btn-icon-width); + height: var(--tblr-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--tblr-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--tblr-accordion-btn-icon-width); + transition: var(--tblr-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(--tblr-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--tblr-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--tblr-accordion-color); + background-color: var(--tblr-accordion-bg); + border: var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--tblr-accordion-border-radius); + border-top-right-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--tblr-accordion-inner-border-radius); + border-top-right-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--tblr-accordion-border-radius); + border-bottom-left-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--tblr-accordion-inner-border-radius); + border-bottom-left-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--tblr-accordion-border-radius); + border-bottom-left-radius: var(--tblr-accordion-border-radius); +} + +.accordion-body { + padding: var(--tblr-accordion-body-padding-y) var(--tblr-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 { + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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"); + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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 { + --tblr-breadcrumb-padding-x: 0; + --tblr-breadcrumb-padding-y: 0; + --tblr-breadcrumb-margin-bottom: 1rem; + --tblr-breadcrumb-bg: ; + --tblr-breadcrumb-border-radius: ; + --tblr-breadcrumb-divider-color: var(--tblr-secondary); + --tblr-breadcrumb-item-padding-x: 0.5rem; + --tblr-breadcrumb-item-active-color: inherit; + display: flex; + flex-wrap: wrap; + padding: var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x); + margin-bottom: var(--tblr-breadcrumb-margin-bottom); + font-size: var(--tblr-breadcrumb-font-size); + list-style: none; + background-color: var(--tblr-breadcrumb-bg); + border-radius: var(--tblr-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--tblr-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--tblr-breadcrumb-item-padding-x); + color: var(--tblr-breadcrumb-divider-color); + content: var(--tblr-breadcrumb-divider, "/") /* rtl: var(--tblr-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--tblr-breadcrumb-item-active-color); +} + +.pagination { + --tblr-pagination-padding-x: 0.25rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.875rem; + --tblr-pagination-color: var(--tblr-secondary); + --tblr-pagination-bg: transparent; + --tblr-pagination-border-width: 0; + --tblr-pagination-border-color: var(--tblr-border-color); + --tblr-pagination-border-radius: var(--tblr-border-radius); + --tblr-pagination-hover-color: var(--tblr-link-hover-color); + --tblr-pagination-hover-bg: var(--tblr-tertiary-bg); + --tblr-pagination-hover-border-color: var(--tblr-border-color); + --tblr-pagination-focus-color: var(--tblr-link-hover-color); + --tblr-pagination-focus-bg: var(--tblr-secondary-bg); + --tblr-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-pagination-active-color: #ffffff; + --tblr-pagination-active-bg: var(--tblr-primary); + --tblr-pagination-active-border-color: var(--tblr-primary); + --tblr-pagination-disabled-color: var(--tblr-disabled-color); + --tblr-pagination-disabled-bg: transparent; + --tblr-pagination-disabled-border-color: var(--tblr-border-color); + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x); + font-size: var(--tblr-pagination-font-size); + color: var(--tblr-pagination-color); + background-color: var(--tblr-pagination-bg); + border: var(--tblr-pagination-border-width) solid var(--tblr-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(--tblr-pagination-hover-color); + text-decoration: none; + background-color: var(--tblr-pagination-hover-bg); + border-color: var(--tblr-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--tblr-pagination-focus-color); + background-color: var(--tblr-pagination-focus-bg); + outline: 0; + box-shadow: var(--tblr-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--tblr-pagination-active-color); + background-color: var(--tblr-pagination-active-bg); + border-color: var(--tblr-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--tblr-pagination-disabled-color); + pointer-events: none; + background-color: var(--tblr-pagination-disabled-bg); + border-color: var(--tblr-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: calc(0 * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--tblr-pagination-border-radius); + border-bottom-left-radius: var(--tblr-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--tblr-pagination-border-radius); + border-bottom-right-radius: var(--tblr-pagination-border-radius); +} + +.pagination-lg { + --tblr-pagination-padding-x: 1.5rem; + --tblr-pagination-padding-y: 0.75rem; + --tblr-pagination-font-size: 1.09375rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-lg); +} + +.pagination-sm { + --tblr-pagination-padding-x: 0.5rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.765625rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-sm); +} + +.badge { + --tblr-badge-padding-x: 0.5em; + --tblr-badge-padding-y: 0.25em; + --tblr-badge-font-size: 85.714285%; + --tblr-badge-font-weight: var(--tblr-font-weight-medium); + --tblr-badge-color: var(--tblr-secondary); + --tblr-badge-border-radius: var(--tblr-border-radius); + display: inline-block; + padding: var(--tblr-badge-padding-y) var(--tblr-badge-padding-x); + font-size: var(--tblr-badge-font-size); + font-weight: var(--tblr-badge-font-weight); + line-height: 1; + color: var(--tblr-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--tblr-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --tblr-alert-bg: transparent; + --tblr-alert-padding-x: 1rem; + --tblr-alert-padding-y: 0.75rem; + --tblr-alert-margin-bottom: 1rem; + --tblr-alert-color: inherit; + --tblr-alert-border-color: transparent; + --tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color); + --tblr-alert-border-radius: var(--tblr-border-radius); + --tblr-alert-link-color: inherit; + position: relative; + padding: var(--tblr-alert-padding-y) var(--tblr-alert-padding-x); + margin-bottom: var(--tblr-alert-margin-bottom); + color: var(--tblr-alert-color); + background-color: var(--tblr-alert-bg); + border: var(--tblr-alert-border); + border-radius: var(--tblr-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: var(--tblr-font-weight-bold); + color: var(--tblr-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 0.9375rem 1rem; +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary-text-emphasis); + --tblr-alert-bg: var(--tblr-primary-bg-subtle); + --tblr-alert-border-color: var(--tblr-primary-border-subtle); + --tblr-alert-link-color: var(--tblr-primary-text-emphasis); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary-text-emphasis); + --tblr-alert-bg: var(--tblr-secondary-bg-subtle); + --tblr-alert-border-color: var(--tblr-secondary-border-subtle); + --tblr-alert-link-color: var(--tblr-secondary-text-emphasis); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success-text-emphasis); + --tblr-alert-bg: var(--tblr-success-bg-subtle); + --tblr-alert-border-color: var(--tblr-success-border-subtle); + --tblr-alert-link-color: var(--tblr-success-text-emphasis); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info-text-emphasis); + --tblr-alert-bg: var(--tblr-info-bg-subtle); + --tblr-alert-border-color: var(--tblr-info-border-subtle); + --tblr-alert-link-color: var(--tblr-info-text-emphasis); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning-text-emphasis); + --tblr-alert-bg: var(--tblr-warning-bg-subtle); + --tblr-alert-border-color: var(--tblr-warning-border-subtle); + --tblr-alert-link-color: var(--tblr-warning-text-emphasis); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger-text-emphasis); + --tblr-alert-bg: var(--tblr-danger-bg-subtle); + --tblr-alert-border-color: var(--tblr-danger-border-subtle); + --tblr-alert-link-color: var(--tblr-danger-text-emphasis); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light-text-emphasis); + --tblr-alert-bg: var(--tblr-light-bg-subtle); + --tblr-alert-border-color: var(--tblr-light-border-subtle); + --tblr-alert-link-color: var(--tblr-light-text-emphasis); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark-text-emphasis); + --tblr-alert-bg: var(--tblr-dark-bg-subtle); + --tblr-alert-border-color: var(--tblr-dark-border-subtle); + --tblr-alert-link-color: var(--tblr-dark-text-emphasis); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted-text-emphasis); + --tblr-alert-bg: var(--tblr-muted-bg-subtle); + --tblr-alert-border-color: var(--tblr-muted-border-subtle); + --tblr-alert-link-color: var(--tblr-muted-text-emphasis); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue-text-emphasis); + --tblr-alert-bg: var(--tblr-blue-bg-subtle); + --tblr-alert-border-color: var(--tblr-blue-border-subtle); + --tblr-alert-link-color: var(--tblr-blue-text-emphasis); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure-text-emphasis); + --tblr-alert-bg: var(--tblr-azure-bg-subtle); + --tblr-alert-border-color: var(--tblr-azure-border-subtle); + --tblr-alert-link-color: var(--tblr-azure-text-emphasis); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo-text-emphasis); + --tblr-alert-bg: var(--tblr-indigo-bg-subtle); + --tblr-alert-border-color: var(--tblr-indigo-border-subtle); + --tblr-alert-link-color: var(--tblr-indigo-text-emphasis); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple-text-emphasis); + --tblr-alert-bg: var(--tblr-purple-bg-subtle); + --tblr-alert-border-color: var(--tblr-purple-border-subtle); + --tblr-alert-link-color: var(--tblr-purple-text-emphasis); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink-text-emphasis); + --tblr-alert-bg: var(--tblr-pink-bg-subtle); + --tblr-alert-border-color: var(--tblr-pink-border-subtle); + --tblr-alert-link-color: var(--tblr-pink-text-emphasis); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red-text-emphasis); + --tblr-alert-bg: var(--tblr-red-bg-subtle); + --tblr-alert-border-color: var(--tblr-red-border-subtle); + --tblr-alert-link-color: var(--tblr-red-text-emphasis); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange-text-emphasis); + --tblr-alert-bg: var(--tblr-orange-bg-subtle); + --tblr-alert-border-color: var(--tblr-orange-border-subtle); + --tblr-alert-link-color: var(--tblr-orange-text-emphasis); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow-text-emphasis); + --tblr-alert-bg: var(--tblr-yellow-bg-subtle); + --tblr-alert-border-color: var(--tblr-yellow-border-subtle); + --tblr-alert-link-color: var(--tblr-yellow-text-emphasis); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime-text-emphasis); + --tblr-alert-bg: var(--tblr-lime-bg-subtle); + --tblr-alert-border-color: var(--tblr-lime-border-subtle); + --tblr-alert-link-color: var(--tblr-lime-text-emphasis); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green-text-emphasis); + --tblr-alert-bg: var(--tblr-green-bg-subtle); + --tblr-alert-border-color: var(--tblr-green-border-subtle); + --tblr-alert-link-color: var(--tblr-green-text-emphasis); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal-text-emphasis); + --tblr-alert-bg: var(--tblr-teal-bg-subtle); + --tblr-alert-border-color: var(--tblr-teal-border-subtle); + --tblr-alert-link-color: var(--tblr-teal-text-emphasis); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan-text-emphasis); + --tblr-alert-bg: var(--tblr-cyan-bg-subtle); + --tblr-alert-border-color: var(--tblr-cyan-border-subtle); + --tblr-alert-link-color: var(--tblr-cyan-text-emphasis); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook-text-emphasis); + --tblr-alert-bg: var(--tblr-facebook-bg-subtle); + --tblr-alert-border-color: var(--tblr-facebook-border-subtle); + --tblr-alert-link-color: var(--tblr-facebook-text-emphasis); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter-text-emphasis); + --tblr-alert-bg: var(--tblr-twitter-bg-subtle); + --tblr-alert-border-color: var(--tblr-twitter-border-subtle); + --tblr-alert-link-color: var(--tblr-twitter-text-emphasis); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin-text-emphasis); + --tblr-alert-bg: var(--tblr-linkedin-bg-subtle); + --tblr-alert-border-color: var(--tblr-linkedin-border-subtle); + --tblr-alert-link-color: var(--tblr-linkedin-text-emphasis); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google-text-emphasis); + --tblr-alert-bg: var(--tblr-google-bg-subtle); + --tblr-alert-border-color: var(--tblr-google-border-subtle); + --tblr-alert-link-color: var(--tblr-google-text-emphasis); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube-text-emphasis); + --tblr-alert-bg: var(--tblr-youtube-bg-subtle); + --tblr-alert-border-color: var(--tblr-youtube-border-subtle); + --tblr-alert-link-color: var(--tblr-youtube-text-emphasis); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo-text-emphasis); + --tblr-alert-bg: var(--tblr-vimeo-bg-subtle); + --tblr-alert-border-color: var(--tblr-vimeo-border-subtle); + --tblr-alert-link-color: var(--tblr-vimeo-text-emphasis); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble-text-emphasis); + --tblr-alert-bg: var(--tblr-dribbble-bg-subtle); + --tblr-alert-border-color: var(--tblr-dribbble-border-subtle); + --tblr-alert-link-color: var(--tblr-dribbble-text-emphasis); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github-text-emphasis); + --tblr-alert-bg: var(--tblr-github-bg-subtle); + --tblr-alert-border-color: var(--tblr-github-border-subtle); + --tblr-alert-link-color: var(--tblr-github-text-emphasis); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram-text-emphasis); + --tblr-alert-bg: var(--tblr-instagram-bg-subtle); + --tblr-alert-border-color: var(--tblr-instagram-border-subtle); + --tblr-alert-link-color: var(--tblr-instagram-text-emphasis); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest-text-emphasis); + --tblr-alert-bg: var(--tblr-pinterest-bg-subtle); + --tblr-alert-border-color: var(--tblr-pinterest-border-subtle); + --tblr-alert-link-color: var(--tblr-pinterest-text-emphasis); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk-text-emphasis); + --tblr-alert-bg: var(--tblr-vk-bg-subtle); + --tblr-alert-border-color: var(--tblr-vk-border-subtle); + --tblr-alert-link-color: var(--tblr-vk-text-emphasis); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss-text-emphasis); + --tblr-alert-bg: var(--tblr-rss-bg-subtle); + --tblr-alert-border-color: var(--tblr-rss-border-subtle); + --tblr-alert-link-color: var(--tblr-rss-text-emphasis); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr-text-emphasis); + --tblr-alert-bg: var(--tblr-flickr-bg-subtle); + --tblr-alert-border-color: var(--tblr-flickr-border-subtle); + --tblr-alert-link-color: var(--tblr-flickr-text-emphasis); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket-text-emphasis); + --tblr-alert-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-alert-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-alert-link-color: var(--tblr-bitbucket-text-emphasis); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler-text-emphasis); + --tblr-alert-bg: var(--tblr-tabler-bg-subtle); + --tblr-alert-border-color: var(--tblr-tabler-border-subtle); + --tblr-alert-link-color: var(--tblr-tabler-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 0.5rem; + } +} +.progress, +.progress-stacked { + --tblr-progress-height: 0.5rem; + --tblr-progress-font-size: 0.65625rem; + --tblr-progress-bg: var(--tblr-border-color); + --tblr-progress-border-radius: var(--tblr-border-radius); + --tblr-progress-box-shadow: var(--tblr-box-shadow-inset); + --tblr-progress-bar-color: #ffffff; + --tblr-progress-bar-bg: var(--tblr-primary); + --tblr-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--tblr-progress-height); + overflow: hidden; + font-size: var(--tblr-progress-font-size); + background-color: var(--tblr-progress-bg); + border-radius: var(--tblr-progress-border-radius); + box-shadow: var(--tblr-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--tblr-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-progress-bar-bg); + transition: var(--tblr-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(--tblr-progress-height) var(--tblr-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 { + --tblr-list-group-color: var(--tblr-body-color); + --tblr-list-group-bg: inherit; + --tblr-list-group-border-color: var(--tblr-border-color); + --tblr-list-group-border-width: var(--tblr-border-width); + --tblr-list-group-border-radius: var(--tblr-border-radius); + --tblr-list-group-item-padding-x: 1.25rem; + --tblr-list-group-item-padding-y: 1.25rem; + --tblr-list-group-action-color: inherit; + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-list-group-action-active-color: var(--tblr-body-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-bg); + --tblr-list-group-disabled-color: var(--tblr-secondary-color); + --tblr-list-group-disabled-bg: inherit; + --tblr-list-group-active-color: inherit; + --tblr-list-group-active-bg: var(--tblr-active-bg); + --tblr-list-group-active-border-color: var(--tblr-border-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--tblr-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(--tblr-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--tblr-list-group-action-hover-color); + text-decoration: none; + background-color: var(--tblr-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--tblr-list-group-action-active-color); + background-color: var(--tblr-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x); + color: var(--tblr-list-group-color); + background-color: var(--tblr-list-group-bg); + border: var(--tblr-list-group-border-width) solid var(--tblr-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(--tblr-list-group-disabled-color); + pointer-events: none; + background-color: var(--tblr-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--tblr-list-group-active-color); + background-color: var(--tblr-list-group-active-bg); + border-color: var(--tblr-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(--tblr-list-group-border-width)); + border-top-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--tblr-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --tblr-list-group-color: var(--tblr-primary-text-emphasis); + --tblr-list-group-bg: var(--tblr-primary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-primary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-active-color: var(--tblr-primary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-primary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis); +} + +.list-group-item-secondary { + --tblr-list-group-color: var(--tblr-secondary-text-emphasis); + --tblr-list-group-bg: var(--tblr-secondary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-active-color: var(--tblr-secondary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis); +} + +.list-group-item-success { + --tblr-list-group-color: var(--tblr-success-text-emphasis); + --tblr-list-group-bg: var(--tblr-success-bg-subtle); + --tblr-list-group-border-color: var(--tblr-success-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-success-border-subtle); + --tblr-list-group-active-color: var(--tblr-success-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-success-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-success-text-emphasis); +} + +.list-group-item-info { + --tblr-list-group-color: var(--tblr-info-text-emphasis); + --tblr-list-group-bg: var(--tblr-info-bg-subtle); + --tblr-list-group-border-color: var(--tblr-info-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-info-border-subtle); + --tblr-list-group-active-color: var(--tblr-info-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-info-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-info-text-emphasis); +} + +.list-group-item-warning { + --tblr-list-group-color: var(--tblr-warning-text-emphasis); + --tblr-list-group-bg: var(--tblr-warning-bg-subtle); + --tblr-list-group-border-color: var(--tblr-warning-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-active-color: var(--tblr-warning-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-warning-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis); +} + +.list-group-item-danger { + --tblr-list-group-color: var(--tblr-danger-text-emphasis); + --tblr-list-group-bg: var(--tblr-danger-bg-subtle); + --tblr-list-group-border-color: var(--tblr-danger-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-active-color: var(--tblr-danger-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-danger-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis); +} + +.list-group-item-light { + --tblr-list-group-color: var(--tblr-light-text-emphasis); + --tblr-list-group-bg: var(--tblr-light-bg-subtle); + --tblr-list-group-border-color: var(--tblr-light-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-light-border-subtle); + --tblr-list-group-active-color: var(--tblr-light-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-light-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-light-text-emphasis); +} + +.list-group-item-dark { + --tblr-list-group-color: var(--tblr-dark-text-emphasis); + --tblr-list-group-bg: var(--tblr-dark-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dark-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-active-color: var(--tblr-dark-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dark-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis); +} + +.list-group-item-muted { + --tblr-list-group-color: var(--tblr-muted-text-emphasis); + --tblr-list-group-bg: var(--tblr-muted-bg-subtle); + --tblr-list-group-border-color: var(--tblr-muted-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-active-color: var(--tblr-muted-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-muted-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis); +} + +.list-group-item-blue { + --tblr-list-group-color: var(--tblr-blue-text-emphasis); + --tblr-list-group-bg: var(--tblr-blue-bg-subtle); + --tblr-list-group-border-color: var(--tblr-blue-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-active-color: var(--tblr-blue-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-blue-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis); +} + +.list-group-item-azure { + --tblr-list-group-color: var(--tblr-azure-text-emphasis); + --tblr-list-group-bg: var(--tblr-azure-bg-subtle); + --tblr-list-group-border-color: var(--tblr-azure-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-active-color: var(--tblr-azure-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-azure-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis); +} + +.list-group-item-indigo { + --tblr-list-group-color: var(--tblr-indigo-text-emphasis); + --tblr-list-group-bg: var(--tblr-indigo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-active-color: var(--tblr-indigo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis); +} + +.list-group-item-purple { + --tblr-list-group-color: var(--tblr-purple-text-emphasis); + --tblr-list-group-bg: var(--tblr-purple-bg-subtle); + --tblr-list-group-border-color: var(--tblr-purple-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-active-color: var(--tblr-purple-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-purple-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis); +} + +.list-group-item-pink { + --tblr-list-group-color: var(--tblr-pink-text-emphasis); + --tblr-list-group-bg: var(--tblr-pink-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pink-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-active-color: var(--tblr-pink-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pink-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis); +} + +.list-group-item-red { + --tblr-list-group-color: var(--tblr-red-text-emphasis); + --tblr-list-group-bg: var(--tblr-red-bg-subtle); + --tblr-list-group-border-color: var(--tblr-red-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-red-border-subtle); + --tblr-list-group-active-color: var(--tblr-red-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-red-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-red-text-emphasis); +} + +.list-group-item-orange { + --tblr-list-group-color: var(--tblr-orange-text-emphasis); + --tblr-list-group-bg: var(--tblr-orange-bg-subtle); + --tblr-list-group-border-color: var(--tblr-orange-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-active-color: var(--tblr-orange-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-orange-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis); +} + +.list-group-item-yellow { + --tblr-list-group-color: var(--tblr-yellow-text-emphasis); + --tblr-list-group-bg: var(--tblr-yellow-bg-subtle); + --tblr-list-group-border-color: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-active-color: var(--tblr-yellow-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis); +} + +.list-group-item-lime { + --tblr-list-group-color: var(--tblr-lime-text-emphasis); + --tblr-list-group-bg: var(--tblr-lime-bg-subtle); + --tblr-list-group-border-color: var(--tblr-lime-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-active-color: var(--tblr-lime-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-lime-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis); +} + +.list-group-item-green { + --tblr-list-group-color: var(--tblr-green-text-emphasis); + --tblr-list-group-bg: var(--tblr-green-bg-subtle); + --tblr-list-group-border-color: var(--tblr-green-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-green-border-subtle); + --tblr-list-group-active-color: var(--tblr-green-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-green-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-green-text-emphasis); +} + +.list-group-item-teal { + --tblr-list-group-color: var(--tblr-teal-text-emphasis); + --tblr-list-group-bg: var(--tblr-teal-bg-subtle); + --tblr-list-group-border-color: var(--tblr-teal-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-active-color: var(--tblr-teal-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-teal-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis); +} + +.list-group-item-cyan { + --tblr-list-group-color: var(--tblr-cyan-text-emphasis); + --tblr-list-group-bg: var(--tblr-cyan-bg-subtle); + --tblr-list-group-border-color: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-active-color: var(--tblr-cyan-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis); +} + +.list-group-item-facebook { + --tblr-list-group-color: var(--tblr-facebook-text-emphasis); + --tblr-list-group-bg: var(--tblr-facebook-bg-subtle); + --tblr-list-group-border-color: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-active-color: var(--tblr-facebook-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-facebook-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-facebook-text-emphasis); +} + +.list-group-item-twitter { + --tblr-list-group-color: var(--tblr-twitter-text-emphasis); + --tblr-list-group-bg: var(--tblr-twitter-bg-subtle); + --tblr-list-group-border-color: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-active-color: var(--tblr-twitter-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-twitter-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-twitter-text-emphasis); +} + +.list-group-item-linkedin { + --tblr-list-group-color: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-bg: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-border-color: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-active-color: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-linkedin-text-emphasis); +} + +.list-group-item-google { + --tblr-list-group-color: var(--tblr-google-text-emphasis); + --tblr-list-group-bg: var(--tblr-google-bg-subtle); + --tblr-list-group-border-color: var(--tblr-google-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-google-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-google-border-subtle); + --tblr-list-group-active-color: var(--tblr-google-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-google-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-google-text-emphasis); +} + +.list-group-item-youtube { + --tblr-list-group-color: var(--tblr-youtube-text-emphasis); + --tblr-list-group-bg: var(--tblr-youtube-bg-subtle); + --tblr-list-group-border-color: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-active-color: var(--tblr-youtube-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-youtube-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-youtube-text-emphasis); +} + +.list-group-item-vimeo { + --tblr-list-group-color: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-bg: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-active-color: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vimeo-text-emphasis); +} + +.list-group-item-dribbble { + --tblr-list-group-color: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-bg: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-active-color: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dribbble-text-emphasis); +} + +.list-group-item-github { + --tblr-list-group-color: var(--tblr-github-text-emphasis); + --tblr-list-group-bg: var(--tblr-github-bg-subtle); + --tblr-list-group-border-color: var(--tblr-github-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-github-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-github-border-subtle); + --tblr-list-group-active-color: var(--tblr-github-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-github-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-github-text-emphasis); +} + +.list-group-item-instagram { + --tblr-list-group-color: var(--tblr-instagram-text-emphasis); + --tblr-list-group-bg: var(--tblr-instagram-bg-subtle); + --tblr-list-group-border-color: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-active-color: var(--tblr-instagram-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-instagram-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-instagram-text-emphasis); +} + +.list-group-item-pinterest { + --tblr-list-group-color: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-bg: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-active-color: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pinterest-text-emphasis); +} + +.list-group-item-vk { + --tblr-list-group-color: var(--tblr-vk-text-emphasis); + --tblr-list-group-bg: var(--tblr-vk-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vk-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-active-color: var(--tblr-vk-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vk-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vk-text-emphasis); +} + +.list-group-item-rss { + --tblr-list-group-color: var(--tblr-rss-text-emphasis); + --tblr-list-group-bg: var(--tblr-rss-bg-subtle); + --tblr-list-group-border-color: var(--tblr-rss-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-active-color: var(--tblr-rss-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-rss-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-rss-text-emphasis); +} + +.list-group-item-flickr { + --tblr-list-group-color: var(--tblr-flickr-text-emphasis); + --tblr-list-group-bg: var(--tblr-flickr-bg-subtle); + --tblr-list-group-border-color: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-active-color: var(--tblr-flickr-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-flickr-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-flickr-text-emphasis); +} + +.list-group-item-bitbucket { + --tblr-list-group-color: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-active-color: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-bitbucket-text-emphasis); +} + +.list-group-item-tabler { + --tblr-list-group-color: var(--tblr-tabler-text-emphasis); + --tblr-list-group-bg: var(--tblr-tabler-bg-subtle); + --tblr-list-group-border-color: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-active-color: var(--tblr-tabler-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-tabler-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-tabler-text-emphasis); +} + +.btn-close { + --tblr-btn-close-color: #182433; + --tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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"); + --tblr-btn-close-opacity: 0.4; + --tblr-btn-close-hover-opacity: 0.75; + --tblr-btn-close-focus-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-btn-close-focus-opacity: 1; + --tblr-btn-close-disabled-opacity: 0.25; + --tblr-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(--tblr-btn-close-color); + background: transparent var(--tblr-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 4px; + opacity: var(--tblr-btn-close-opacity); +} +.btn-close:hover { + color: var(--tblr-btn-close-color); + text-decoration: none; + opacity: var(--tblr-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--tblr-btn-close-focus-shadow); + opacity: var(--tblr-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: var(--tblr-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--tblr-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close, body[data-bs-theme=dark] [data-bs-theme=light] .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.toast { + --tblr-toast-zindex: 1090; + --tblr-toast-padding-x: 0.75rem; + --tblr-toast-padding-y: 0.5rem; + --tblr-toast-spacing: calc(var(--tblr-page-padding) * 2); + --tblr-toast-max-width: 350px; + --tblr-toast-font-size: 0.875rem; + --tblr-toast-color: ; + --tblr-toast-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-border-width: var(--tblr-border-width); + --tblr-toast-border-color: var(--tblr-border-color); + --tblr-toast-border-radius: var(--tblr-border-radius); + --tblr-toast-box-shadow: var(--tblr-box-shadow); + --tblr-toast-header-color: var(--tblr-secondary); + --tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-header-border-color: var(--tblr-border-color); + width: var(--tblr-toast-max-width); + max-width: 100%; + font-size: var(--tblr-toast-font-size); + color: var(--tblr-toast-color); + pointer-events: auto; + background-color: var(--tblr-toast-bg); + background-clip: padding-box; + border: var(--tblr-toast-border-width) solid var(--tblr-toast-border-color); + box-shadow: var(--tblr-toast-box-shadow); + border-radius: var(--tblr-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --tblr-toast-zindex: 1090; + position: absolute; + z-index: var(--tblr-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(--tblr-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--tblr-toast-padding-y) var(--tblr-toast-padding-x); + color: var(--tblr-toast-header-color); + background-color: var(--tblr-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color); + border-top-left-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); + border-top-right-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--tblr-toast-padding-x)); + margin-left: var(--tblr-toast-padding-x); +} + +.toast-body { + padding: var(--tblr-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --tblr-modal-zindex: 1055; + --tblr-modal-width: 540px; + --tblr-modal-padding: 1.5rem; + --tblr-modal-margin: 0.5rem; + --tblr-modal-color: ; + --tblr-modal-bg: var(--tblr-bg-surface); + --tblr-modal-border-color: transparent; + --tblr-modal-border-width: var(--tblr-border-width); + --tblr-modal-border-radius: var(--tblr-border-radius-lg); + --tblr-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px); + --tblr-modal-header-padding-x: 1.5rem; + --tblr-modal-header-padding-y: 1.5rem; + --tblr-modal-header-padding: 1.5rem; + --tblr-modal-header-border-color: var(--tblr-border-color); + --tblr-modal-header-border-width: var(--tblr-border-width); + --tblr-modal-title-line-height: 1.4285714286; + --tblr-modal-footer-gap: 0.75rem; + --tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary); + --tblr-modal-footer-border-color: var(--tblr-border-color); + --tblr-modal-footer-border-width: var(--tblr-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--tblr-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--tblr-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -1rem); +} +@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(--tblr-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(--tblr-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--tblr-modal-color); + pointer-events: auto; + background-color: var(--tblr-modal-bg); + background-clip: padding-box; + border: var(--tblr-modal-border-width) solid var(--tblr-modal-border-color); + border-radius: var(--tblr-modal-border-radius); + box-shadow: var(--tblr-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --tblr-backdrop-zindex: 1050; + --tblr-backdrop-bg: #182433; + --tblr-backdrop-opacity: 0.24; + position: fixed; + top: 0; + left: 0; + z-index: var(--tblr-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--tblr-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--tblr-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--tblr-modal-header-padding); + border-bottom: var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color); + border-top-left-radius: var(--tblr-modal-inner-border-radius); + border-top-right-radius: var(--tblr-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--tblr-modal-header-padding-y) * 0.5) calc(var(--tblr-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--tblr-modal-header-padding-y)) calc(-0.5 * var(--tblr-modal-header-padding-x)) calc(-0.5 * var(--tblr-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--tblr-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--tblr-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * 0.5); + background-color: var(--tblr-modal-footer-bg); + border-top: var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color); + border-bottom-right-radius: var(--tblr-modal-inner-border-radius); + border-bottom-left-radius: var(--tblr-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--tblr-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --tblr-modal-margin: 1.75rem; + --tblr-modal-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + } + .modal-dialog { + max-width: var(--tblr-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --tblr-modal-width: 380px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --tblr-modal-width: 720px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --tblr-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-header, +.modal-fullscreen .modal-footer { + 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-header, + .modal-fullscreen-sm-down .modal-footer { + 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-header, + .modal-fullscreen-md-down .modal-footer { + 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-header, + .modal-fullscreen-lg-down .modal-footer { + 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-header, + .modal-fullscreen-xl-down .modal-footer { + 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-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --tblr-tooltip-zindex: 1080; + --tblr-tooltip-max-width: 200px; + --tblr-tooltip-padding-x: var(--tblr-spacer-2); + --tblr-tooltip-padding-y: var(--tblr-spacer-2); + --tblr-tooltip-margin: ; + --tblr-tooltip-font-size: 0.765625rem; + --tblr-tooltip-color: var(--tblr-light); + --tblr-tooltip-bg: var(--tblr-bg-surface-dark); + --tblr-tooltip-border-radius: var(--tblr-border-radius); + --tblr-tooltip-opacity: 0.9; + --tblr-tooltip-arrow-width: 0.8rem; + --tblr-tooltip-arrow-height: 0.4rem; + z-index: var(--tblr-tooltip-zindex); + display: block; + margin: var(--tblr-tooltip-margin); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + 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(--tblr-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--tblr-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--tblr-tooltip-arrow-width); + height: var(--tblr-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--tblr-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--tblr-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-bottom-color: var(--tblr-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-left-color: var(--tblr-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--tblr-tooltip-max-width); + padding: var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x); + color: var(--tblr-tooltip-color); + text-align: center; + background-color: var(--tblr-tooltip-bg); + border-radius: var(--tblr-tooltip-border-radius); +} + +.popover { + --tblr-popover-zindex: 1070; + --tblr-popover-max-width: 276px; + --tblr-popover-font-size: 0.765625rem; + --tblr-popover-bg: var(--tblr-bg-surface); + --tblr-popover-border-width: var(--tblr-border-width); + --tblr-popover-border-color: var(--tblr-border-color); + --tblr-popover-border-radius: var(--tblr-border-radius-lg); + --tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width)); + --tblr-popover-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-popover-header-padding-x: 1rem; + --tblr-popover-header-padding-y: 0.5rem; + --tblr-popover-header-font-size: 0.875rem; + --tblr-popover-header-color: inherit; + --tblr-popover-header-bg: transparent; + --tblr-popover-body-padding-x: 1rem; + --tblr-popover-body-padding-y: 1rem; + --tblr-popover-body-color: inherit; + --tblr-popover-arrow-width: 1rem; + --tblr-popover-arrow-height: 0.5rem; + --tblr-popover-arrow-border: var(--tblr-popover-border-color); + z-index: var(--tblr-popover-zindex); + display: block; + max-width: var(--tblr-popover-max-width); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + 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(--tblr-popover-font-size); + word-wrap: break-word; + background-color: var(--tblr-popover-bg); + background-clip: padding-box; + border: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-radius: var(--tblr-popover-border-radius); + box-shadow: var(--tblr-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--tblr-popover-arrow-width); + height: var(--tblr-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--tblr-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--tblr-popover-border-width); + border-top-color: var(--tblr-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--tblr-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--tblr-popover-border-width); + border-right-color: var(--tblr-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--tblr-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--tblr-popover-border-width); + border-bottom-color: var(--tblr-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--tblr-popover-arrow-width); + margin-left: calc(-0.5 * var(--tblr-popover-arrow-width)); + content: ""; + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--tblr-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--tblr-popover-border-width); + border-left-color: var(--tblr-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--tblr-popover-header-font-size); + color: var(--tblr-popover-header-color); + background-color: var(--tblr-popover-header-bg); + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-top-left-radius: var(--tblr-popover-inner-border-radius); + border-top-right-radius: var(--tblr-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x); + color: var(--tblr-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.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #ffffff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 1.5rem; + height: 1.5rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%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: #ffffff; + 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: #ffffff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000000; +} +.carousel-dark .carousel-caption { + color: #000000; +} + +[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, +[data-bs-theme=dark].carousel .carousel-control-next-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: #000000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--tblr-spinner-width); + height: var(--tblr-spinner-height); + vertical-align: var(--tblr-spinner-vertical-align); + border-radius: 50%; + animation: var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-border-width: 2px; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-border; + border: var(--tblr-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; + --tblr-spinner-border-width: 1px; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --tblr-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --tblr-offcanvas-zindex: 1045; + --tblr-offcanvas-width: 400px; + --tblr-offcanvas-height: 30vh; + --tblr-offcanvas-padding-x: 1.5rem; + --tblr-offcanvas-padding-y: 1.5rem; + --tblr-offcanvas-color: var(--tblr-body-color); + --tblr-offcanvas-bg: var(--tblr-bg-surface); + --tblr-offcanvas-border-width: var(--tblr-border-width); + --tblr-offcanvas-border-color: var(--tblr-border-color); + --tblr-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-offcanvas-transition: transform 0.3s ease-in-out; + --tblr-offcanvas-title-line-height: 1.4285714286; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #182433; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.24; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--tblr-offcanvas-padding-y) * 0.5) calc(var(--tblr-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--tblr-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--tblr-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--tblr-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--tblr-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.2; +} +.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.1; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 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: #fcfdfe !important; + background-color: RGBA(var(--tblr-primary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-success-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-info-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-warning-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-danger-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #182433 !important; + background-color: RGBA(var(--tblr-light-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dark-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-muted { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-muted-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-blue { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-blue-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-azure { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-azure-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-indigo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-purple { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-purple-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pink { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pink-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-red { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-red-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-orange { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-orange-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-yellow { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-lime { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-lime-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-green { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-green-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-teal { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-teal-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-cyan { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-facebook { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-twitter { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-linkedin { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-google { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-google-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-youtube { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vimeo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dribbble { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-github { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-github-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-instagram { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pinterest { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vk { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vk-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-rss { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-rss-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-flickr { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-bitbucket { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-tabler { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--tblr-success-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--tblr-info-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--tblr-light-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(253, 253, 254, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(19, 29, 41, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-muted { + color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-muted:hover, .link-muted:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-blue { + color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-blue:hover, .link-blue:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-azure { + color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-azure:hover, .link-azure:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-indigo { + color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-indigo:hover, .link-indigo:focus { + color: RGBA(53, 79, 188, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-purple { + color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-purple:hover, .link-purple:focus { + color: RGBA(139, 50, 161, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pink { + color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pink:hover, .link-pink:focus { + color: RGBA(171, 41, 86, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-red { + color: RGBA(var(--tblr-red-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-red:hover, .link-red:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-orange { + color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-orange:hover, .link-orange:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-yellow { + color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-yellow:hover, .link-yellow:focus { + color: RGBA(196, 127, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-lime { + color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-lime:hover, .link-lime:focus { + color: RGBA(93, 147, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-green { + color: RGBA(var(--tblr-green-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-green:hover, .link-green:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-teal { + color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-teal:hover, .link-teal:focus { + color: RGBA(10, 133, 96, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-cyan { + color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-cyan:hover, .link-cyan:focus { + color: RGBA(18, 130, 147, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-facebook { + color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-facebook:hover, .link-facebook:focus { + color: RGBA(19, 95, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-twitter { + color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-twitter:hover, .link-twitter:focus { + color: RGBA(23, 129, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-linkedin { + color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-linkedin:hover, .link-linkedin:focus { + color: RGBA(8, 82, 155, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-google { + color: RGBA(var(--tblr-google-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-google:hover, .link-google:focus { + color: RGBA(176, 62, 52, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-youtube { + color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-youtube:hover, .link-youtube:focus { + color: RGBA(204, 0, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vimeo { + color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vimeo:hover, .link-vimeo:focus { + color: RGBA(21, 146, 187, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dribbble { + color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dribbble:hover, .link-dribbble:focus { + color: RGBA(187, 61, 110, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-github { + color: RGBA(var(--tblr-github-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-github:hover, .link-github:focus { + color: RGBA(19, 18, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-instagram { + color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-instagram:hover, .link-instagram:focus { + color: RGBA(182, 51, 76, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pinterest { + color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pinterest:hover, .link-pinterest:focus { + color: RGBA(151, 6, 22, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vk { + color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vk:hover, .link-vk:focus { + color: RGBA(79, 105, 134, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-rss { + color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-rss:hover, .link-rss:focus { + color: RGBA(204, 132, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-flickr { + color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-flickr:hover, .link-flickr:focus { + color: RGBA(0, 79, 176, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-bitbucket { + color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-bitbucket:hover, .link-bitbucket:focus { + color: RGBA(0, 66, 163, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-tabler { + color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-tabler:hover, .link-tabler:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-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:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--tblr-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--tblr-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --tblr-aspect-ratio: 100%; +} + +.ratio-2x1 { + --tblr-aspect-ratio: 50%; +} + +.ratio-1x2 { + --tblr-aspect-ratio: 200%; +} + +.ratio-3x1 { + --tblr-aspect-ratio: 33.3333333333%; +} + +.ratio-1x3 { + --tblr-aspect-ratio: 300%; +} + +.ratio-4x3 { + --tblr-aspect-ratio: 75%; +} + +.ratio-3x4 { + --tblr-aspect-ratio: 133.3333333333%; +} + +.ratio-16x9 { + --tblr-aspect-ratio: 56.25%; +} + +.ratio-9x16 { + --tblr-aspect-ratio: 177.7777777778%; +} + +.ratio-21x9 { + --tblr-aspect-ratio: 42.8571428571%; +} + +.ratio-9x21 { + --tblr-aspect-ratio: 233.3333333333%; +} + +.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:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):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(--tblr-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.16; +} + +.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: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-secondary { + --tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-success { + --tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-info { + --tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-warning { + --tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-danger { + --tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-light { + --tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dark { + --tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-muted { + --tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-blue { + --tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-azure { + --tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-indigo { + --tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-purple { + --tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pink { + --tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-red { + --tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-orange { + --tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-yellow { + --tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-lime { + --tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-green { + --tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-teal { + --tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-cyan { + --tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-facebook { + --tblr-focus-ring-color: rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-twitter { + --tblr-focus-ring-color: rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-linkedin { + --tblr-focus-ring-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-google { + --tblr-focus-ring-color: rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-youtube { + --tblr-focus-ring-color: rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vimeo { + --tblr-focus-ring-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dribbble { + --tblr-focus-ring-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-github { + --tblr-focus-ring-color: rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-instagram { + --tblr-focus-ring-color: rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pinterest { + --tblr-focus-ring-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vk { + --tblr-focus-ring-color: rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-rss { + --tblr-focus-ring-color: rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-flickr { + --tblr-focus-ring-color: rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-bitbucket { + --tblr-focus-ring-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-tabler { + --tblr-focus-ring-color: rgba(var(--tblr-tabler-rgb), var(--tblr-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(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-wide { + border: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-wide { + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-primary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-secondary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-secondary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-success { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-success-rgb), var(--tblr-border-opacity)) !important; +} + +.border-info { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-info-rgb), var(--tblr-border-opacity)) !important; +} + +.border-warning { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-warning-rgb), var(--tblr-border-opacity)) !important; +} + +.border-danger { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-danger-rgb), var(--tblr-border-opacity)) !important; +} + +.border-light { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-light-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dark { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dark-rgb), var(--tblr-border-opacity)) !important; +} + +.border-muted { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-muted-rgb), var(--tblr-border-opacity)) !important; +} + +.border-blue { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-blue-rgb), var(--tblr-border-opacity)) !important; +} + +.border-azure { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-azure-rgb), var(--tblr-border-opacity)) !important; +} + +.border-indigo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-indigo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-purple { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-purple-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pink { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pink-rgb), var(--tblr-border-opacity)) !important; +} + +.border-red { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-red-rgb), var(--tblr-border-opacity)) !important; +} + +.border-orange { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-orange-rgb), var(--tblr-border-opacity)) !important; +} + +.border-yellow { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-yellow-rgb), var(--tblr-border-opacity)) !important; +} + +.border-lime { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-lime-rgb), var(--tblr-border-opacity)) !important; +} + +.border-green { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-green-rgb), var(--tblr-border-opacity)) !important; +} + +.border-teal { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-teal-rgb), var(--tblr-border-opacity)) !important; +} + +.border-cyan { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-cyan-rgb), var(--tblr-border-opacity)) !important; +} + +.border-facebook { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-facebook-rgb), var(--tblr-border-opacity)) !important; +} + +.border-twitter { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-twitter-rgb), var(--tblr-border-opacity)) !important; +} + +.border-linkedin { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-border-opacity)) !important; +} + +.border-google { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-google-rgb), var(--tblr-border-opacity)) !important; +} + +.border-youtube { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-youtube-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vimeo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dribbble { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-border-opacity)) !important; +} + +.border-github { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-github-rgb), var(--tblr-border-opacity)) !important; +} + +.border-instagram { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-instagram-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pinterest { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vk { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vk-rgb), var(--tblr-border-opacity)) !important; +} + +.border-rss { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-rss-rgb), var(--tblr-border-opacity)) !important; +} + +.border-flickr { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-flickr-rgb), var(--tblr-border-opacity)) !important; +} + +.border-bitbucket { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-border-opacity)) !important; +} + +.border-tabler { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-tabler-rgb), var(--tblr-border-opacity)) !important; +} + +.border-black { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-black-rgb), var(--tblr-border-opacity)) !important; +} + +.border-white { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-white-rgb), var(--tblr-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--tblr-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--tblr-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--tblr-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--tblr-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--tblr-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--tblr-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--tblr-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--tblr-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 { + --tblr-border-opacity: 0.1; +} + +.border-opacity-25 { + --tblr-border-opacity: 0.25; +} + +.border-opacity-50 { + --tblr-border-opacity: 0.5; +} + +.border-opacity-75 { + --tblr-border-opacity: 0.75; +} + +.border-opacity-100 { + --tblr-border-opacity: 1; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.w-25 { + width: 25% !important; +} + +.w-33 { + width: 33.33333% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-66 { + width: 66.66666% !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-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.h-25 { + height: 25% !important; +} + +.h-33 { + height: 33.33333% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-66 { + height: 66.66666% !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: 2rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.m-7 { + margin: 5rem !important; +} + +.m-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; +} + +.mx-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; +} + +.mx-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mt-7 { + margin-top: 5rem !important; +} + +.mt-8 { + margin-top: 8rem !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: 2rem !important; +} + +.me-6 { + margin-right: 3rem !important; +} + +.me-7 { + margin-right: 5rem !important; +} + +.me-8 { + margin-right: 8rem !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: 2rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.mb-7 { + margin-bottom: 5rem !important; +} + +.mb-8 { + margin-bottom: 8rem !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: 2rem !important; +} + +.ms-6 { + margin-left: 3rem !important; +} + +.ms-7 { + margin-left: 5rem !important; +} + +.ms-8 { + margin-left: 8rem !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: 2rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.p-7 { + padding: 5rem !important; +} + +.p-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; +} + +.px-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.px-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; +} + +.px-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.py-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pt-7 { + padding-top: 5rem !important; +} + +.pt-8 { + padding-top: 8rem !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: 2rem !important; +} + +.pe-6 { + padding-right: 3rem !important; +} + +.pe-7 { + padding-right: 5rem !important; +} + +.pe-8 { + padding-right: 8rem !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: 2rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pb-7 { + padding-bottom: 5rem !important; +} + +.pb-8 { + padding-bottom: 8rem !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: 2rem !important; +} + +.ps-6 { + padding-left: 3rem !important; +} + +.ps-7 { + padding-left: 5rem !important; +} + +.ps-8 { + padding-left: 8rem !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: 2rem !important; +} + +.gap-6 { + gap: 3rem !important; +} + +.gap-7 { + gap: 5rem !important; +} + +.gap-8 { + gap: 8rem !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: 2rem !important; +} + +.row-gap-6 { + row-gap: 3rem !important; +} + +.row-gap-7 { + row-gap: 5rem !important; +} + +.row-gap-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; +} + +.column-gap-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.column-gap-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; +} + +.column-gap-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; +} + +.font-monospace { + font-family: var(--tblr-font-monospace) !important; +} + +.fs-1 { + font-size: 1.5rem !important; +} + +.fs-2 { + font-size: 1.25rem !important; +} + +.fs-3 { + font-size: 1rem !important; +} + +.fs-4 { + font-size: 0.875rem !important; +} + +.fs-5 { + font-size: 0.75rem !important; +} + +.fs-6 { + font-size: 0.625rem !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: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.1428571429 !important; +} + +.lh-base { + line-height: 1.4285714286 !important; +} + +.lh-lg { + line-height: 1.7142857143 !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; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-black-rgb), var(--tblr-text-opacity)) !important; +} + +.text-white { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; +} + +.text-body { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-body-color-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black-50 { + --tblr-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --tblr-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-body-tertiary { + --tblr-text-opacity: 1; + color: var(--tblr-tertiary-color) !important; +} + +.text-body-emphasis { + --tblr-text-opacity: 1; + color: var(--tblr-emphasis-color) !important; +} + +.text-reset { + --tblr-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --tblr-text-opacity: 0.25; +} + +.text-opacity-50 { + --tblr-text-opacity: 0.5; +} + +.text-opacity-75 { + --tblr-text-opacity: 0.75; +} + +.text-opacity-100 { + --tblr-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--tblr-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--tblr-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--tblr-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--tblr-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--tblr-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--tblr-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--tblr-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--tblr-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --tblr-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --tblr-link-opacity: 0.1; +} + +.link-opacity-25 { + --tblr-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --tblr-link-opacity: 0.25; +} + +.link-opacity-50 { + --tblr-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --tblr-link-opacity: 0.5; +} + +.link-opacity-75 { + --tblr-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --tblr-link-opacity: 0.75; +} + +.link-opacity-100 { + --tblr-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --tblr-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 { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-success { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-info { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-warning { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-danger { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-light { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dark { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-muted { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-blue { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-azure { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-indigo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-purple { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pink { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-red { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-orange { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-yellow { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-lime { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-green { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-teal { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-cyan { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-facebook { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-twitter { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-linkedin { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-google { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-youtube { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vimeo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dribbble { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-github { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-instagram { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pinterest { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vk { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-rss { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-flickr { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-bitbucket { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-tabler { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --tblr-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --tblr-link-underline-opacity: 1; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-black { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-black-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-body-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-transparent { + --tblr-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body-tertiary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tertiary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-opacity-10 { + --tblr-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --tblr-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --tblr-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --tblr-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --tblr-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--tblr-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--tblr-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--tblr-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--tblr-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--tblr-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--tblr-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--tblr-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--tblr-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--tblr-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; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-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(--tblr-border-radius-sm) !important; + border-top-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--tblr-border-radius-lg) !important; + border-top-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--tblr-border-radius-xl) !important; + border-top-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--tblr-border-radius-xxl) !important; + border-top-right-radius: var(--tblr-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(--tblr-border-radius-pill) !important; + border-top-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-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(--tblr-border-radius-sm) !important; + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--tblr-border-radius-lg) !important; + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--tblr-border-radius-xl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-right-radius: var(--tblr-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(--tblr-border-radius-pill) !important; + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-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(--tblr-border-radius-sm) !important; + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-left-radius: var(--tblr-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(--tblr-border-radius-pill) !important; + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-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(--tblr-border-radius-sm) !important; + border-top-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; + border-top-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; + border-top-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; + border-top-left-radius: var(--tblr-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(--tblr-border-radius-pill) !important; + border-top-left-radius: var(--tblr-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; +} + +.object-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-scale-down { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.cursor-auto { + cursor: auto !important; +} + +.cursor-pointer { + cursor: pointer !important; +} + +.cursor-move { + cursor: move !important; +} + +.cursor-not-allowed { + cursor: not-allowed !important; +} + +.cursor-zoom-in { + cursor: zoom-in !important; +} + +.cursor-zoom-out { + cursor: zoom-out !important; +} + +.cursor-default { + cursor: default !important; +} + +.cursor-none { + cursor: none !important; +} + +.cursor-help { + cursor: help !important; +} + +.cursor-progress { + cursor: progress !important; +} + +.cursor-wait { + cursor: wait !important; +} + +.cursor-text { + cursor: text !important; +} + +.cursor-v-text { + cursor: vertical-text !important; +} + +.cursor-grab { + cursor: -webkit-grab !important; + cursor: grab !important; +} + +.cursor-grabbing { + cursor: -webkit-grabbing !important; + cursor: grabbing !important; +} + +.border-x { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-0 { + border-left: 0 !important; + border-right: 0 !important; +} + +.border-y { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; +} + +.columns-2 { + -moz-columns: 2 !important; + columns: 2 !important; +} + +.columns-3 { + -moz-columns: 3 !important; + columns: 3 !important; +} + +.columns-4 { + -moz-columns: 4 !important; + columns: 4 !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: 2rem !important; + } + .m-sm-6 { + margin: 3rem !important; + } + .m-sm-7 { + margin: 5rem !important; + } + .m-sm-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; + } + .mx-sm-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-sm-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-sm-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-sm-6 { + margin-top: 3rem !important; + } + .mt-sm-7 { + margin-top: 5rem !important; + } + .mt-sm-8 { + margin-top: 8rem !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: 2rem !important; + } + .me-sm-6 { + margin-right: 3rem !important; + } + .me-sm-7 { + margin-right: 5rem !important; + } + .me-sm-8 { + margin-right: 8rem !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: 2rem !important; + } + .mb-sm-6 { + margin-bottom: 3rem !important; + } + .mb-sm-7 { + margin-bottom: 5rem !important; + } + .mb-sm-8 { + margin-bottom: 8rem !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: 2rem !important; + } + .ms-sm-6 { + margin-left: 3rem !important; + } + .ms-sm-7 { + margin-left: 5rem !important; + } + .ms-sm-8 { + margin-left: 8rem !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: 2rem !important; + } + .p-sm-6 { + padding: 3rem !important; + } + .p-sm-7 { + padding: 5rem !important; + } + .p-sm-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; + } + .px-sm-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-sm-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-sm-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-sm-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-sm-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-sm-6 { + padding-top: 3rem !important; + } + .pt-sm-7 { + padding-top: 5rem !important; + } + .pt-sm-8 { + padding-top: 8rem !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: 2rem !important; + } + .pe-sm-6 { + padding-right: 3rem !important; + } + .pe-sm-7 { + padding-right: 5rem !important; + } + .pe-sm-8 { + padding-right: 8rem !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: 2rem !important; + } + .pb-sm-6 { + padding-bottom: 3rem !important; + } + .pb-sm-7 { + padding-bottom: 5rem !important; + } + .pb-sm-8 { + padding-bottom: 8rem !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: 2rem !important; + } + .ps-sm-6 { + padding-left: 3rem !important; + } + .ps-sm-7 { + padding-left: 5rem !important; + } + .ps-sm-8 { + padding-left: 8rem !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: 2rem !important; + } + .gap-sm-6 { + gap: 3rem !important; + } + .gap-sm-7 { + gap: 5rem !important; + } + .gap-sm-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-sm-6 { + row-gap: 3rem !important; + } + .row-gap-sm-7 { + row-gap: 5rem !important; + } + .row-gap-sm-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-sm-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-sm-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-sm-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } + .columns-sm-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-sm-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-sm-4 { + -moz-columns: 4 !important; + columns: 4 !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: 2rem !important; + } + .m-md-6 { + margin: 3rem !important; + } + .m-md-7 { + margin: 5rem !important; + } + .m-md-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; + } + .mx-md-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-md-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-md-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-md-6 { + margin-top: 3rem !important; + } + .mt-md-7 { + margin-top: 5rem !important; + } + .mt-md-8 { + margin-top: 8rem !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: 2rem !important; + } + .me-md-6 { + margin-right: 3rem !important; + } + .me-md-7 { + margin-right: 5rem !important; + } + .me-md-8 { + margin-right: 8rem !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: 2rem !important; + } + .mb-md-6 { + margin-bottom: 3rem !important; + } + .mb-md-7 { + margin-bottom: 5rem !important; + } + .mb-md-8 { + margin-bottom: 8rem !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: 2rem !important; + } + .ms-md-6 { + margin-left: 3rem !important; + } + .ms-md-7 { + margin-left: 5rem !important; + } + .ms-md-8 { + margin-left: 8rem !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: 2rem !important; + } + .p-md-6 { + padding: 3rem !important; + } + .p-md-7 { + padding: 5rem !important; + } + .p-md-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; + } + .px-md-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-md-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-md-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-md-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-md-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-md-6 { + padding-top: 3rem !important; + } + .pt-md-7 { + padding-top: 5rem !important; + } + .pt-md-8 { + padding-top: 8rem !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: 2rem !important; + } + .pe-md-6 { + padding-right: 3rem !important; + } + .pe-md-7 { + padding-right: 5rem !important; + } + .pe-md-8 { + padding-right: 8rem !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: 2rem !important; + } + .pb-md-6 { + padding-bottom: 3rem !important; + } + .pb-md-7 { + padding-bottom: 5rem !important; + } + .pb-md-8 { + padding-bottom: 8rem !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: 2rem !important; + } + .ps-md-6 { + padding-left: 3rem !important; + } + .ps-md-7 { + padding-left: 5rem !important; + } + .ps-md-8 { + padding-left: 8rem !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: 2rem !important; + } + .gap-md-6 { + gap: 3rem !important; + } + .gap-md-7 { + gap: 5rem !important; + } + .gap-md-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-md-6 { + row-gap: 3rem !important; + } + .row-gap-md-7 { + row-gap: 5rem !important; + } + .row-gap-md-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-md-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-md-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-md-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } + .columns-md-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-md-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-md-4 { + -moz-columns: 4 !important; + columns: 4 !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: 2rem !important; + } + .m-lg-6 { + margin: 3rem !important; + } + .m-lg-7 { + margin: 5rem !important; + } + .m-lg-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; + } + .mx-lg-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-lg-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-lg-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-lg-6 { + margin-top: 3rem !important; + } + .mt-lg-7 { + margin-top: 5rem !important; + } + .mt-lg-8 { + margin-top: 8rem !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: 2rem !important; + } + .me-lg-6 { + margin-right: 3rem !important; + } + .me-lg-7 { + margin-right: 5rem !important; + } + .me-lg-8 { + margin-right: 8rem !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: 2rem !important; + } + .mb-lg-6 { + margin-bottom: 3rem !important; + } + .mb-lg-7 { + margin-bottom: 5rem !important; + } + .mb-lg-8 { + margin-bottom: 8rem !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: 2rem !important; + } + .ms-lg-6 { + margin-left: 3rem !important; + } + .ms-lg-7 { + margin-left: 5rem !important; + } + .ms-lg-8 { + margin-left: 8rem !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: 2rem !important; + } + .p-lg-6 { + padding: 3rem !important; + } + .p-lg-7 { + padding: 5rem !important; + } + .p-lg-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; + } + .px-lg-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-lg-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-lg-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-lg-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-lg-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-lg-6 { + padding-top: 3rem !important; + } + .pt-lg-7 { + padding-top: 5rem !important; + } + .pt-lg-8 { + padding-top: 8rem !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: 2rem !important; + } + .pe-lg-6 { + padding-right: 3rem !important; + } + .pe-lg-7 { + padding-right: 5rem !important; + } + .pe-lg-8 { + padding-right: 8rem !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: 2rem !important; + } + .pb-lg-6 { + padding-bottom: 3rem !important; + } + .pb-lg-7 { + padding-bottom: 5rem !important; + } + .pb-lg-8 { + padding-bottom: 8rem !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: 2rem !important; + } + .ps-lg-6 { + padding-left: 3rem !important; + } + .ps-lg-7 { + padding-left: 5rem !important; + } + .ps-lg-8 { + padding-left: 8rem !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: 2rem !important; + } + .gap-lg-6 { + gap: 3rem !important; + } + .gap-lg-7 { + gap: 5rem !important; + } + .gap-lg-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-lg-6 { + row-gap: 3rem !important; + } + .row-gap-lg-7 { + row-gap: 5rem !important; + } + .row-gap-lg-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-lg-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-lg-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-lg-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } + .columns-lg-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-lg-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-lg-4 { + -moz-columns: 4 !important; + columns: 4 !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: 2rem !important; + } + .m-xl-6 { + margin: 3rem !important; + } + .m-xl-7 { + margin: 5rem !important; + } + .m-xl-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; + } + .mx-xl-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xl-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-xl-6 { + margin-top: 3rem !important; + } + .mt-xl-7 { + margin-top: 5rem !important; + } + .mt-xl-8 { + margin-top: 8rem !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: 2rem !important; + } + .me-xl-6 { + margin-right: 3rem !important; + } + .me-xl-7 { + margin-right: 5rem !important; + } + .me-xl-8 { + margin-right: 8rem !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: 2rem !important; + } + .mb-xl-6 { + margin-bottom: 3rem !important; + } + .mb-xl-7 { + margin-bottom: 5rem !important; + } + .mb-xl-8 { + margin-bottom: 8rem !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: 2rem !important; + } + .ms-xl-6 { + margin-left: 3rem !important; + } + .ms-xl-7 { + margin-left: 5rem !important; + } + .ms-xl-8 { + margin-left: 8rem !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: 2rem !important; + } + .p-xl-6 { + padding: 3rem !important; + } + .p-xl-7 { + padding: 5rem !important; + } + .p-xl-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; + } + .px-xl-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xl-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-xl-6 { + padding-top: 3rem !important; + } + .pt-xl-7 { + padding-top: 5rem !important; + } + .pt-xl-8 { + padding-top: 8rem !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: 2rem !important; + } + .pe-xl-6 { + padding-right: 3rem !important; + } + .pe-xl-7 { + padding-right: 5rem !important; + } + .pe-xl-8 { + padding-right: 8rem !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: 2rem !important; + } + .pb-xl-6 { + padding-bottom: 3rem !important; + } + .pb-xl-7 { + padding-bottom: 5rem !important; + } + .pb-xl-8 { + padding-bottom: 8rem !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: 2rem !important; + } + .ps-xl-6 { + padding-left: 3rem !important; + } + .ps-xl-7 { + padding-left: 5rem !important; + } + .ps-xl-8 { + padding-left: 8rem !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: 2rem !important; + } + .gap-xl-6 { + gap: 3rem !important; + } + .gap-xl-7 { + gap: 5rem !important; + } + .gap-xl-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-xl-6 { + row-gap: 3rem !important; + } + .row-gap-xl-7 { + row-gap: 5rem !important; + } + .row-gap-xl-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } + .columns-xl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xl-4 { + -moz-columns: 4 !important; + columns: 4 !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: 2rem !important; + } + .m-xxl-6 { + margin: 3rem !important; + } + .m-xxl-7 { + margin: 5rem !important; + } + .m-xxl-8 { + margin: 8rem !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: 2rem !important; + margin-left: 2rem !important; + } + .mx-xxl-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xxl-8 { + margin-right: 8rem !important; + margin-left: 8rem !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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xxl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-xxl-6 { + margin-top: 3rem !important; + } + .mt-xxl-7 { + margin-top: 5rem !important; + } + .mt-xxl-8 { + margin-top: 8rem !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: 2rem !important; + } + .me-xxl-6 { + margin-right: 3rem !important; + } + .me-xxl-7 { + margin-right: 5rem !important; + } + .me-xxl-8 { + margin-right: 8rem !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: 2rem !important; + } + .mb-xxl-6 { + margin-bottom: 3rem !important; + } + .mb-xxl-7 { + margin-bottom: 5rem !important; + } + .mb-xxl-8 { + margin-bottom: 8rem !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: 2rem !important; + } + .ms-xxl-6 { + margin-left: 3rem !important; + } + .ms-xxl-7 { + margin-left: 5rem !important; + } + .ms-xxl-8 { + margin-left: 8rem !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: 2rem !important; + } + .p-xxl-6 { + padding: 3rem !important; + } + .p-xxl-7 { + padding: 5rem !important; + } + .p-xxl-8 { + padding: 8rem !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: 2rem !important; + padding-left: 2rem !important; + } + .px-xxl-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xxl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xxl-8 { + padding-right: 8rem !important; + padding-left: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xxl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xxl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-xxl-6 { + padding-top: 3rem !important; + } + .pt-xxl-7 { + padding-top: 5rem !important; + } + .pt-xxl-8 { + padding-top: 8rem !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: 2rem !important; + } + .pe-xxl-6 { + padding-right: 3rem !important; + } + .pe-xxl-7 { + padding-right: 5rem !important; + } + .pe-xxl-8 { + padding-right: 8rem !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: 2rem !important; + } + .pb-xxl-6 { + padding-bottom: 3rem !important; + } + .pb-xxl-7 { + padding-bottom: 5rem !important; + } + .pb-xxl-8 { + padding-bottom: 8rem !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: 2rem !important; + } + .ps-xxl-6 { + padding-left: 3rem !important; + } + .ps-xxl-7 { + padding-left: 5rem !important; + } + .ps-xxl-8 { + padding-left: 8rem !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: 2rem !important; + } + .gap-xxl-6 { + gap: 3rem !important; + } + .gap-xxl-7 { + gap: 5rem !important; + } + .gap-xxl-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-xxl-6 { + row-gap: 3rem !important; + } + .row-gap-xxl-7 { + row-gap: 5rem !important; + } + .row-gap-xxl-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xxl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xxl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xxl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } + .columns-xxl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xxl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xxl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +:root, +:host { + font-size: 16px; + height: 100%; +} + +:root, +:host, +[data-bs-theme=light] { + --tblr-primary: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-primary-fg: var(--tblr-light); + --tblr-primary-darken: #004c95; + --tblr-primary-lt: #e6eef6; + --tblr-primary-lt-rgb: 230, 238, 246; + --tblr-secondary: #667382; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-secondary-fg: var(--tblr-light); + --tblr-secondary-darken: #5c6875; + --tblr-secondary-lt: #f0f1f3; + --tblr-secondary-lt-rgb: 240, 241, 243; + --tblr-success: #2fb344; + --tblr-success-rgb: 47, 179, 68; + --tblr-success-fg: var(--tblr-light); + --tblr-success-darken: #2aa13d; + --tblr-success-lt: #eaf7ec; + --tblr-success-lt-rgb: 234, 247, 236; + --tblr-info: #4299e1; + --tblr-info-rgb: 66, 153, 225; + --tblr-info-fg: var(--tblr-light); + --tblr-info-darken: #3b8acb; + --tblr-info-lt: #ecf5fc; + --tblr-info-lt-rgb: 236, 245, 252; + --tblr-warning: #f76707; + --tblr-warning-rgb: 247, 103, 7; + --tblr-warning-fg: var(--tblr-light); + --tblr-warning-darken: #de5d06; + --tblr-warning-lt: #fef0e6; + --tblr-warning-lt-rgb: 254, 240, 230; + --tblr-danger: #d63939; + --tblr-danger-rgb: 214, 57, 57; + --tblr-danger-fg: var(--tblr-light); + --tblr-danger-darken: #c13333; + --tblr-danger-lt: #fbebeb; + --tblr-danger-lt-rgb: 251, 235, 235; + --tblr-light: #fcfdfe; + --tblr-light-rgb: 252, 253, 254; + --tblr-light-fg: var(--tblr-dark); + --tblr-light-darken: #e3e4e5; + --tblr-light-lt: white; + --tblr-light-lt-rgb: 255, 255, 255; + --tblr-dark: #182433; + --tblr-dark-rgb: 24, 36, 51; + --tblr-dark-fg: var(--tblr-light); + --tblr-dark-darken: #16202e; + --tblr-dark-lt: #e8e9eb; + --tblr-dark-lt-rgb: 232, 233, 235; + --tblr-muted: #667382; + --tblr-muted-rgb: 102, 115, 130; + --tblr-muted-fg: var(--tblr-light); + --tblr-muted-darken: #5c6875; + --tblr-muted-lt: #f0f1f3; + --tblr-muted-lt-rgb: 240, 241, 243; + --tblr-blue: #0054a6; + --tblr-blue-rgb: 0, 84, 166; + --tblr-blue-fg: var(--tblr-light); + --tblr-blue-darken: #004c95; + --tblr-blue-lt: #e6eef6; + --tblr-blue-lt-rgb: 230, 238, 246; + --tblr-azure: #4299e1; + --tblr-azure-rgb: 66, 153, 225; + --tblr-azure-fg: var(--tblr-light); + --tblr-azure-darken: #3b8acb; + --tblr-azure-lt: #ecf5fc; + --tblr-azure-lt-rgb: 236, 245, 252; + --tblr-indigo: #4263eb; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-indigo-fg: var(--tblr-light); + --tblr-indigo-darken: #3b59d4; + --tblr-indigo-lt: #eceffd; + --tblr-indigo-lt-rgb: 236, 239, 253; + --tblr-purple: #ae3ec9; + --tblr-purple-rgb: 174, 62, 201; + --tblr-purple-fg: var(--tblr-light); + --tblr-purple-darken: #9d38b5; + --tblr-purple-lt: #f7ecfa; + --tblr-purple-lt-rgb: 247, 236, 250; + --tblr-pink: #d6336c; + --tblr-pink-rgb: 214, 51, 108; + --tblr-pink-fg: var(--tblr-light); + --tblr-pink-darken: #c12e61; + --tblr-pink-lt: #fbebf0; + --tblr-pink-lt-rgb: 251, 235, 240; + --tblr-red: #d63939; + --tblr-red-rgb: 214, 57, 57; + --tblr-red-fg: var(--tblr-light); + --tblr-red-darken: #c13333; + --tblr-red-lt: #fbebeb; + --tblr-red-lt-rgb: 251, 235, 235; + --tblr-orange: #f76707; + --tblr-orange-rgb: 247, 103, 7; + --tblr-orange-fg: var(--tblr-light); + --tblr-orange-darken: #de5d06; + --tblr-orange-lt: #fef0e6; + --tblr-orange-lt-rgb: 254, 240, 230; + --tblr-yellow: #f59f00; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-yellow-fg: var(--tblr-light); + --tblr-yellow-darken: #dd8f00; + --tblr-yellow-lt: #fef5e6; + --tblr-yellow-lt-rgb: 254, 245, 230; + --tblr-lime: #74b816; + --tblr-lime-rgb: 116, 184, 22; + --tblr-lime-fg: var(--tblr-light); + --tblr-lime-darken: #68a614; + --tblr-lime-lt: #f1f8e8; + --tblr-lime-lt-rgb: 241, 248, 232; + --tblr-green: #2fb344; + --tblr-green-rgb: 47, 179, 68; + --tblr-green-fg: var(--tblr-light); + --tblr-green-darken: #2aa13d; + --tblr-green-lt: #eaf7ec; + --tblr-green-lt-rgb: 234, 247, 236; + --tblr-teal: #0ca678; + --tblr-teal-rgb: 12, 166, 120; + --tblr-teal-fg: var(--tblr-light); + --tblr-teal-darken: #0b956c; + --tblr-teal-lt: #e7f6f2; + --tblr-teal-lt-rgb: 231, 246, 242; + --tblr-cyan: #17a2b8; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-cyan-fg: var(--tblr-light); + --tblr-cyan-darken: #1592a6; + --tblr-cyan-lt: #e8f6f8; + --tblr-cyan-lt-rgb: 232, 246, 248; + --tblr-facebook: #1877f2; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-facebook-fg: var(--tblr-light); + --tblr-facebook-darken: #166bda; + --tblr-facebook-lt: #e8f1fe; + --tblr-facebook-lt-rgb: 232, 241, 254; + --tblr-twitter: #1da1f2; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-twitter-fg: var(--tblr-light); + --tblr-twitter-darken: #1a91da; + --tblr-twitter-lt: #e8f6fe; + --tblr-twitter-lt-rgb: 232, 246, 254; + --tblr-linkedin: #0a66c2; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-linkedin-fg: var(--tblr-light); + --tblr-linkedin-darken: #095caf; + --tblr-linkedin-lt: #e7f0f9; + --tblr-linkedin-lt-rgb: 231, 240, 249; + --tblr-google: #dc4e41; + --tblr-google-rgb: 220, 78, 65; + --tblr-google-fg: var(--tblr-light); + --tblr-google-darken: #c6463b; + --tblr-google-lt: #fcedec; + --tblr-google-lt-rgb: 252, 237, 236; + --tblr-youtube: #ff0000; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-youtube-fg: var(--tblr-light); + --tblr-youtube-darken: #e60000; + --tblr-youtube-lt: #ffe6e6; + --tblr-youtube-lt-rgb: 255, 230, 230; + --tblr-vimeo: #1ab7ea; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-vimeo-fg: var(--tblr-light); + --tblr-vimeo-darken: #17a5d3; + --tblr-vimeo-lt: #e8f8fd; + --tblr-vimeo-lt-rgb: 232, 248, 253; + --tblr-dribbble: #ea4c89; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-dribbble-fg: var(--tblr-light); + --tblr-dribbble-darken: #d3447b; + --tblr-dribbble-lt: #fdedf3; + --tblr-dribbble-lt-rgb: 253, 237, 243; + --tblr-github: #181717; + --tblr-github-rgb: 24, 23, 23; + --tblr-github-fg: var(--tblr-light); + --tblr-github-darken: #161515; + --tblr-github-lt: #e8e8e8; + --tblr-github-lt-rgb: 232, 232, 232; + --tblr-instagram: #e4405f; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-instagram-fg: var(--tblr-light); + --tblr-instagram-darken: #cd3a56; + --tblr-instagram-lt: #fcecef; + --tblr-instagram-lt-rgb: 252, 236, 239; + --tblr-pinterest: #bd081c; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-pinterest-fg: var(--tblr-light); + --tblr-pinterest-darken: #aa0719; + --tblr-pinterest-lt: #f8e6e8; + --tblr-pinterest-lt-rgb: 248, 230, 232; + --tblr-vk: #6383a8; + --tblr-vk-rgb: 99, 131, 168; + --tblr-vk-fg: var(--tblr-light); + --tblr-vk-darken: #597697; + --tblr-vk-lt: #eff3f6; + --tblr-vk-lt-rgb: 239, 243, 246; + --tblr-rss: #ffa500; + --tblr-rss-rgb: 255, 165, 0; + --tblr-rss-fg: var(--tblr-light); + --tblr-rss-darken: #e69500; + --tblr-rss-lt: #fff6e6; + --tblr-rss-lt-rgb: 255, 246, 230; + --tblr-flickr: #0063dc; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-flickr-fg: var(--tblr-light); + --tblr-flickr-darken: #0059c6; + --tblr-flickr-lt: #e6effc; + --tblr-flickr-lt-rgb: 230, 239, 252; + --tblr-bitbucket: #0052cc; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-bitbucket-fg: var(--tblr-light); + --tblr-bitbucket-darken: #004ab8; + --tblr-bitbucket-lt: #e6eefa; + --tblr-bitbucket-lt-rgb: 230, 238, 250; + --tblr-tabler: #0054a6; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-tabler-fg: var(--tblr-light); + --tblr-tabler-darken: #004c95; + --tblr-tabler-lt: #e6eef6; + --tblr-tabler-lt-rgb: 230, 238, 246; + --tblr-gray-50: #fcfdfe; + --tblr-gray-50-rgb: 252, 253, 254; + --tblr-gray-50-fg: var(--tblr-dark); + --tblr-gray-50-darken: #e3e4e5; + --tblr-gray-50-lt: white; + --tblr-gray-50-lt-rgb: 255, 255, 255; + --tblr-gray-100: #f6f8fb; + --tblr-gray-100-rgb: 246, 248, 251; + --tblr-gray-100-fg: var(--tblr-dark); + --tblr-gray-100-darken: #dddfe2; + --tblr-gray-100-lt: #fefeff; + --tblr-gray-100-lt-rgb: 254, 254, 255; + --tblr-gray-200: #eef1f4; + --tblr-gray-200-rgb: 238, 241, 244; + --tblr-gray-200-fg: var(--tblr-dark); + --tblr-gray-200-darken: #d6d9dc; + --tblr-gray-200-lt: #fdfefe; + --tblr-gray-200-lt-rgb: 253, 254, 254; + --tblr-gray-300: #dadfe5; + --tblr-gray-300-rgb: 218, 223, 229; + --tblr-gray-300-fg: var(--tblr-dark); + --tblr-gray-300-darken: #c4c9ce; + --tblr-gray-300-lt: #fbfcfc; + --tblr-gray-300-lt-rgb: 251, 252, 252; + --tblr-gray-400: #bbc3cd; + --tblr-gray-400-rgb: 187, 195, 205; + --tblr-gray-400-fg: var(--tblr-light); + --tblr-gray-400-darken: #a8b0b9; + --tblr-gray-400-lt: #f8f9fa; + --tblr-gray-400-lt-rgb: 248, 249, 250; + --tblr-gray-500: #929dab; + --tblr-gray-500-rgb: 146, 157, 171; + --tblr-gray-500-fg: var(--tblr-light); + --tblr-gray-500-darken: #838d9a; + --tblr-gray-500-lt: #f4f5f7; + --tblr-gray-500-lt-rgb: 244, 245, 247; + --tblr-gray-600: #667382; + --tblr-gray-600-rgb: 102, 115, 130; + --tblr-gray-600-fg: var(--tblr-light); + --tblr-gray-600-darken: #5c6875; + --tblr-gray-600-lt: #f0f1f3; + --tblr-gray-600-lt-rgb: 240, 241, 243; + --tblr-gray-700: #3a4859; + --tblr-gray-700-rgb: 58, 72, 89; + --tblr-gray-700-fg: var(--tblr-light); + --tblr-gray-700-darken: #344150; + --tblr-gray-700-lt: #ebedee; + --tblr-gray-700-lt-rgb: 235, 237, 238; + --tblr-gray-800: #182433; + --tblr-gray-800-rgb: 24, 36, 51; + --tblr-gray-800-fg: var(--tblr-light); + --tblr-gray-800-darken: #16202e; + --tblr-gray-800-lt: #e8e9eb; + --tblr-gray-800-lt-rgb: 232, 233, 235; + --tblr-gray-900: #040a11; + --tblr-gray-900-rgb: 4, 10, 17; + --tblr-gray-900-fg: var(--tblr-light); + --tblr-gray-900-darken: #04090f; + --tblr-gray-900-lt: #e6e7e7; + --tblr-gray-900-lt-rgb: 230, 231, 231; + --tblr-spacer-0: 0; + --tblr-spacer-1: 0.25rem; + --tblr-spacer-2: 0.5rem; + --tblr-spacer-3: 1rem; + --tblr-spacer-4: 1.5rem; + --tblr-spacer-5: 2rem; + --tblr-spacer-6: 3rem; + --tblr-spacer-7: 5rem; + --tblr-spacer-8: 8rem; + --tblr-spacer: 1rem; + --tblr-bg-surface: var(--tblr-white); + --tblr-bg-surface-secondary: var(--tblr-gray-100); + --tblr-bg-surface-tertiary: var(--tblr-gray-50); + --tblr-bg-surface-dark: var(--tblr-dark); + --tblr-bg-forms: var(--tblr-bg-surface); + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-dark-color: #bbc3cd; + --tblr-border-dark-color-translucent: rgba(4, 32, 69, 0.27); + --tblr-border-active-color: #b6bcc3; + --tblr-icon-color: var(--tblr-gray-500); + --tblr-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-disabled-bg: var(--tblr-bg-surface-secondary); + --tblr-disabled-color: var(--tblr-gray-300); + --tblr-code-color: var(--tblr-gray-600); + --tblr-code-bg: var(--tblr-bg-surface-secondary); + --tblr-dark-mode-border-color: #1f2e41; + --tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-dark-mode-border-color-active: #2c415d; + --tblr-dark-mode-border-dark-color: #1f2e41; + --tblr-page-padding: var(--tblr-spacer-3); + --tblr-page-padding-y: var(--tblr-spacer-4); + --tblr-font-weight-light: 300; + --tblr-font-weight-normal: 400; + --tblr-font-weight-medium: 500; + --tblr-font-weight-bold: 600; + --tblr-font-weight-headings: var(--tblr-font-weight-bold); + --tblr-font-size-h1: 1.5rem; + --tblr-font-size-h2: 1.25rem; + --tblr-font-size-h3: 1rem; + --tblr-font-size-h4: 0.875rem; + --tblr-font-size-h5: 0.75rem; + --tblr-font-size-h6: 0.625rem; + --tblr-line-height-h1: 2rem; + --tblr-line-height-h2: 1.75rem; + --tblr-line-height-h3: 1.5rem; + --tblr-line-height-h4: 1.25rem; + --tblr-line-height-h5: 1rem; + --tblr-line-height-h6: 1rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent); + --tblr-box-shadow-transparent: 0 0 0 0 transparent; + --tblr-box-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06); + --tblr-box-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), 0.04); + --tblr-box-shadow-card-hover: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; + --tblr-box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1); +} +@media (max-width: 991.98px) { + :root, + :host, + [data-bs-theme=light] { + --tblr-page-padding: var(--tblr-spacer-2); + } +} + +@keyframes pulse { + from { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } + 50% { + transform: scale3d(1, 1, 1); + opacity: 1; + } + to { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } +} +@keyframes tada { + 0% { + transform: scale3d(1, 1, 1); + } + 10%, 5% { + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -5deg); + } + 15%, 25%, 35%, 45% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg); + } + 20%, 30%, 40% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg); + } + 50% { + transform: scale3d(1, 1, 1); + } +} +@keyframes rotate-360 { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes blink { + from { + opacity: 0; + } + 50% { + opacity: 1; + } + to { + opacity: 0; + } +} +body { + letter-spacing: 0; + touch-action: manipulation; + text-rendering: optimizeLegibility; + font-feature-settings: "liga" 0; + position: relative; + min-height: 100%; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media print { + body { + background: transparent; + } +} + +* { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} + +*::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + *::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} + +*::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} + +*::-webkit-scrollbar-track { + background: transparent; +} + +*:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} + +*::-webkit-scrollbar-corner { + background: transparent; +} + +.layout-fluid .container, +.layout-fluid [class^=container-], +.layout-fluid [class*=" container-"] { + max-width: 100%; +} + +.layout-boxed { + --tblr-theme-boxed-border-radius: 0; + --tblr-theme-boxed-width: 1320px; +} +@media (min-width: 768px) { + .layout-boxed { + background: #182433 linear-gradient(to right, rgba(255, 255, 255, 0.1), transparent) fixed; + padding: 1rem; + --tblr-theme-boxed-border-radius: 4px; + } +} +.layout-boxed .page { + margin: 0 auto; + max-width: var(--tblr-theme-boxed-width); + border-radius: var(--tblr-theme-boxed-border-radius); + color: var(--tblr-body-color); +} +@media (min-width: 768px) { + .layout-boxed .page { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-body-bg); + } +} +.layout-boxed .page > .navbar:first-child { + border-top-left-radius: var(--tblr-theme-boxed-border-radius); + border-top-right-radius: var(--tblr-theme-boxed-border-radius); +} + +/** +Navbar + */ +.navbar { + --tblr-navbar-bg: var(--tblr-bg-surface); + --tblr-navbar-border-width: var(--tblr-border-width); + --tblr-navbar-active-border-color: var(--tblr-primary); + --tblr-navbar-active-bg: rgba(0, 0, 0, 0.06); + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-border-color: var(--tblr-border-color); + align-items: stretch; + min-height: 3.5rem; + box-shadow: inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color); + background: var(--tblr-navbar-bg); + color: var(--tblr-navbar-color); +} +.navbar-collapse .navbar { + flex-grow: 1; +} +.navbar.collapsing { + min-height: 0; +} +.navbar .dropdown-menu { + position: absolute; + z-index: 1030; +} +.navbar .navbar-nav { + min-height: 3rem; +} +.navbar .navbar-nav .nav-link { + position: relative; + min-width: 2rem; + min-height: 2rem; + justify-content: center; + border-radius: var(--tblr-border-radius); +} +.navbar .navbar-nav .nav-link .badge { + position: absolute; + top: 0.375rem; + right: 0.375rem; + transform: translate(50%, -50%); +} + +.navbar-nav { + margin: 0; + padding: 0; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 576px) { + .navbar-expand-sm .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-sm .nav-item.active { + position: relative; + } + .navbar-expand-sm .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-sm.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical ~ .navbar, + .navbar-expand-sm.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-sm.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-sm.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 767.98px) { + .navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-expand-md .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-md .nav-item.active { + position: relative; + } + .navbar-expand-md .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-md.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical ~ .navbar, + .navbar-expand-md.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-md.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-md.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 991.98px) { + .navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-expand-lg .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-lg .nav-item.active { + position: relative; + } + .navbar-expand-lg .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-lg.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical ~ .navbar, + .navbar-expand-lg.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-lg.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-lg.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 1199.98px) { + .navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xl .nav-item.active { + position: relative; + } + .navbar-expand-xl .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xl.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical ~ .navbar, + .navbar-expand-xl.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-xl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 1399.98px) { + .navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xxl .nav-item.active { + position: relative; + } + .navbar-expand-xxl .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xxl.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical ~ .navbar, + .navbar-expand-xxl.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-expand .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; +} +.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-left: auto; +} +.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; +} +.navbar-expand .navbar-collapse { + width: auto; + flex: 1 1 auto; +} +.navbar-expand .nav-item.active { + position: relative; +} +.navbar-expand .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; +} +.navbar-expand.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical ~ .navbar, +.navbar-expand.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; +} +.navbar-expand.navbar-vertical.navbar-right ~ .navbar, +.navbar-expand.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; +} + +/** +Navbar brand + */ +.navbar-brand { + display: inline-flex; + align-items: center; + font-weight: var(--tblr-font-weight-bold); + margin: 0; + line-height: 1; + gap: 0.5rem; +} + +.navbar-brand-image { + height: 2rem; + width: auto; +} + +/** +Navbar toggler + */ +.navbar-toggler { + border: 0; + width: 2rem; + height: 2rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.navbar-toggler-icon { + height: 2px; + width: 1.25em; + background: currentColor; + border-radius: 10px; + transition: top 0.2s 0.2s, bottom 0.2s 0.2s, transform 0.2s, opacity 0s 0.2s; + position: relative; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler-icon:before, .navbar-toggler-icon:after { + content: ""; + display: block; + height: inherit; + width: inherit; + border-radius: inherit; + background: inherit; + position: absolute; + left: 0; + transition: inherit; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon:before, .navbar-toggler-icon:after { + transition: none; + } +} +.navbar-toggler-icon:before { + top: -0.45em; +} +.navbar-toggler-icon:after { + bottom: -0.45em; +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transform: rotate(45deg); + transition: top 0.3s, bottom 0.3s, transform 0.3s 0.3s, opacity 0s 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before { + top: 0; + transform: rotate(-90deg); +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after { + bottom: 0; + opacity: 0; +} + +/** +Navbar transparent + */ +.navbar-transparent { + --tblr-navbar-border-color: transparent !important; + background: transparent !important; +} + +/** +Navbar nav + */ +.navbar-nav { + align-items: stretch; +} +.navbar-nav .nav-item { + display: flex; + flex-direction: column; + justify-content: center; +} + +/** +Navbar side + */ +.navbar-side { + margin: 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-around; +} + +/** +Navbar vertical + */ +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 576px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-sm { + transition: none; + } +} +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-sm .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-sm > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-sm ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-sm ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-sm.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 768px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-md { + transition: none; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-md .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-md .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-md .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-md > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-md ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-md ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-md.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 992px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-lg { + transition: none; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-lg .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-lg > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-lg ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-lg ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-lg.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1200px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xl { + transition: none; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xl ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xl ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xl.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1400px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xxl { + transition: none; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xxl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xxl ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xxl.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +.navbar-vertical.navbar-expand { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; +} +@media (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand { + transition: none; + } +} +.navbar-vertical.navbar-expand.navbar-right { + left: auto; + right: 0; +} +.navbar-vertical.navbar-expand .navbar-brand { + padding: 0.75rem 0; + justify-content: center; +} +.navbar-vertical.navbar-expand .navbar-collapse { + align-items: stretch; +} +.navbar-vertical.navbar-expand .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; +} +.navbar-vertical.navbar-expand .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.navbar-vertical.navbar-expand > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; +} +.navbar-vertical.navbar-expand ~ .page { + padding-left: 15rem; +} +.navbar-vertical.navbar-expand ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.navbar-vertical.navbar-expand.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; +} +.navbar-vertical.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-left: auto; +} +.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; +} + +.navbar-overlap:after { + content: ""; + height: 9rem; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: inherit; + z-index: -1; + box-shadow: inherit; +} + +.page { + display: flex; + flex-direction: column; + position: relative; + min-height: 100%; +} + +.page-center .container { + margin-top: auto; + margin-bottom: auto; +} + +.page-wrapper { + flex: 1; + display: flex; + flex-direction: column; +} +@media print { + .page-wrapper { + margin: 0 !important; + } +} + +.page-wrapper-full .page-body:first-child { + margin: 0; + border-top: 0; +} + +.page-body { + margin-top: var(--tblr-page-padding-y); + margin-bottom: var(--tblr-page-padding-y); +} + +.page-body-card { + background: var(--tblr-bg-surface); + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + padding: var(--tblr-page-padding) 0; + margin-bottom: 0; + flex: 1; +} +.page-body ~ .page-body-card { + margin-top: 0; +} + +.page-cover { + background: no-repeat center/cover; + min-height: 9rem; +} +@media (min-width: 768px) { + .page-cover { + min-height: 12rem; + } +} +@media (min-width: 992px) { + .page-cover { + min-height: 15rem; + } +} + +.page-cover-overlay { + position: relative; +} +.page-cover-overlay:after { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.page-header { + display: flex; + flex-wrap: wrap; + min-height: 2.25rem; + flex-direction: column; + justify-content: center; +} +.page-wrapper .page-header { + margin: var(--tblr-page-padding-y) 0 0; +} + +.page-header-border { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding: var(--tblr-page-padding-y) 0; + margin: 0 !important; + background-color: var(--tblr-bg-surface); +} + +.page-pretitle { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.page-title { + margin: 0; + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h4); + font-weight: var(--tblr-font-weight-headings); + color: inherit; + display: flex; + align-items: center; +} +.page-title svg { + width: 1.5rem; + height: 1.5rem; + margin-right: 0.25rem; +} + +.page-title-lg { + font-size: 1.5rem; + line-height: 2rem; +} + +.page-subtitle { + margin-top: 0.25rem; + color: var(--tblr-secondary); +} + +.page-cover { + --tblr-page-cover-blur: 20px; + --tblr-page-cover-padding: 1rem; + min-height: 6rem; + padding: var(--tblr-page-cover-padding) 0; + position: relative; + overflow: hidden; +} + +.page-cover-img { + position: absolute; + top: calc(-2 * var(--tblr-page-cover-blur, 0)); + left: calc(-2 * var(--tblr-page-cover-blur, 0)); + right: calc(-2 * var(--tblr-page-cover-blur, 0)); + bottom: calc(-2 * var(--tblr-page-cover-blur, 0)); + pointer-events: none; + filter: blur(var(--tblr-page-cover-blur)); + -o-object-fit: cover; + object-fit: cover; + background-size: cover; + background-position: center; + z-index: -1; +} + +.page-tabs { + margin-top: 0.5rem; + position: relative; +} + +.page-header-tabs .nav-bordered { + border: 0; +} +.page-header-tabs + .page-body-card { + margin-top: 0; +} + +.footer { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background-color: #ffffff; + padding: 2rem 0; + color: var(--tblr-secondary); + margin-top: auto; +} + +.footer-transparent { + background-color: transparent; + border-top: 0; +} + +body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light { + display: none !important; +} +body.theme-dark .hide-theme-dark, body[data-bs-theme=dark] .hide-theme-dark { + display: none !important; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-muted: #3a4859; + --tblr-body-bg: #151f2c; + --tblr-body-bg-rgb: 21, 31, 44; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-bg-forms: #151f2c; + --tblr-bg-surface: #182433; + --tblr-bg-surface-dark: #151f2c; + --tblr-bg-surface-secondary: #1b293a; + --tblr-bg-surface-tertiary: #151f2c; + --tblr-link-color: #0069cf; + --tblr-link-hover-color: #0054a6; + --tblr-active-bg: #1b293a; + --tblr-disabled-color: var(--tblr-gray-700); + --tblr-border-color: var(--tblr-dark-mode-border-color); + --tblr-border-color-translucent: var( + --tblr-dark-mode-border-color-translucent + ); + --tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color); + --tblr-border-color-active: var( + --tblr-dark-mode-border-color-active + ); + --tblr-btn-color: #151f2c; + --tblr-code-color: var(--tblr-body-color); + --tblr-code-bg: #1f2e41; + --tblr-primary-lt: #16293f; + --tblr-primary-lt-rgb: 22, 41, 63; + --tblr-secondary-lt: #202c3b; + --tblr-secondary-lt-rgb: 32, 44, 59; + --tblr-success-lt: #1a3235; + --tblr-success-lt-rgb: 26, 50, 53; + --tblr-info-lt: #1c3044; + --tblr-info-lt-rgb: 28, 48, 68; + --tblr-warning-lt: #2e2b2f; + --tblr-warning-lt-rgb: 46, 43, 47; + --tblr-danger-lt: #2b2634; + --tblr-danger-lt-rgb: 43, 38, 52; + --tblr-light-lt: #2f3a47; + --tblr-light-lt-rgb: 47, 58, 71; + --tblr-dark-lt: #182433; + --tblr-dark-lt-rgb: 24, 36, 51; + --tblr-muted-lt: #202c3b; + --tblr-muted-lt-rgb: 32, 44, 59; + --tblr-blue-lt: #16293f; + --tblr-blue-lt-rgb: 22, 41, 63; + --tblr-azure-lt: #1c3044; + --tblr-azure-lt-rgb: 28, 48, 68; + --tblr-indigo-lt: #1c2a45; + --tblr-indigo-lt-rgb: 28, 42, 69; + --tblr-purple-lt: #272742; + --tblr-purple-lt-rgb: 39, 39, 66; + --tblr-pink-lt: #2b2639; + --tblr-pink-lt-rgb: 43, 38, 57; + --tblr-red-lt: #2b2634; + --tblr-red-lt-rgb: 43, 38, 52; + --tblr-orange-lt: #2e2b2f; + --tblr-orange-lt-rgb: 46, 43, 47; + --tblr-yellow-lt: #2e302e; + --tblr-yellow-lt-rgb: 46, 48, 46; + --tblr-lime-lt: #213330; + --tblr-lime-lt-rgb: 33, 51, 48; + --tblr-green-lt: #1a3235; + --tblr-green-lt-rgb: 26, 50, 53; + --tblr-teal-lt: #17313a; + --tblr-teal-lt-rgb: 23, 49, 58; + --tblr-cyan-lt: #183140; + --tblr-cyan-lt-rgb: 24, 49, 64; + --tblr-facebook-lt: #182c46; + --tblr-facebook-lt-rgb: 24, 44, 70; + --tblr-twitter-lt: #193146; + --tblr-twitter-lt-rgb: 25, 49, 70; + --tblr-linkedin-lt: #172b41; + --tblr-linkedin-lt-rgb: 23, 43, 65; + --tblr-google-lt: #2c2834; + --tblr-google-lt-rgb: 44, 40, 52; + --tblr-youtube-lt: #2f202e; + --tblr-youtube-lt-rgb: 47, 32, 46; + --tblr-vimeo-lt: #183345; + --tblr-vimeo-lt-rgb: 24, 51, 69; + --tblr-dribbble-lt: #2d283c; + --tblr-dribbble-lt-rgb: 45, 40, 60; + --tblr-github-lt: #182330; + --tblr-github-lt-rgb: 24, 35, 48; + --tblr-instagram-lt: #2c2737; + --tblr-instagram-lt-rgb: 44, 39, 55; + --tblr-pinterest-lt: #292131; + --tblr-pinterest-lt-rgb: 41, 33, 49; + --tblr-vk-lt: #202e3f; + --tblr-vk-lt-rgb: 32, 46, 63; + --tblr-rss-lt: #2f312e; + --tblr-rss-lt-rgb: 47, 49, 46; + --tblr-flickr-lt: #162a44; + --tblr-flickr-lt-rgb: 22, 42, 68; + --tblr-bitbucket-lt: #162942; + --tblr-bitbucket-lt-rgb: 22, 41, 66; + --tblr-tabler-lt: #16293f; + --tblr-tabler-lt-rgb: 22, 41, 63; +} +[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image { + filter: brightness(0) invert(1); +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); +} + +.accordion-button:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} +.accordion-button:after { + opacity: 0.7; +} +.accordion-button:not(.collapsed) { + font-weight: var(--tblr-font-weight-bold); + border-bottom-color: transparent; + box-shadow: none; +} +.accordion-button:not(.collapsed):after { + opacity: 1; +} + +.alert { + --tblr-alert-color: var(--tblr-secondary); + --tblr-alert-bg: var(--tblr-surface); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-left: 0.25rem var(--tblr-border-style) var(--tblr-alert-color); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.alert > :last-child { + margin-bottom: 0; +} + +.alert-important { + border-color: transparent; + background: var(--tblr-alert-color); + color: #fff; +} +.alert-important .alert-icon, +.alert-important .alert-link, +.alert-important .alert-title { + color: inherit; +} +.alert-important .alert-link:hover { + color: inherit; +} +.alert-important .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.alert-link, .alert-link:hover { + color: var(--tblr-alert-color); +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler); +} + +.alert-icon { + color: var(--tblr-alert-color); + width: 1.5rem !important; + height: 1.5rem !important; + margin: -0.125rem 1rem -0.125rem 0; +} + +.alert-title { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: var(--tblr-font-weight-bold); + margin-bottom: 0.25rem; + color: var(--tblr-alert-color); +} + +.avatar { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-bg: var(--tblr-bg-surface-secondary); + --tblr-avatar-box-shadow: var(--tblr-box-shadow-border); + --tblr-avatar-font-size: 1rem; + --tblr-avatar-icon-size: 1.5rem; + position: relative; + width: var(--tblr-avatar-size); + height: var(--tblr-avatar-size); + font-size: var(--tblr-avatar-font-size); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--tblr-secondary); + text-align: center; + text-transform: uppercase; + vertical-align: bottom; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-avatar-bg) no-repeat center/cover; + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-avatar-box-shadow); +} +.avatar .icon { + width: var(--tblr-avatar-icon-size); + height: var(--tblr-avatar-icon-size); +} +.avatar .badge { + position: absolute; + right: 0; + bottom: 0; + border-radius: 100rem; + box-shadow: 0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface); +} +a.avatar { + cursor: pointer; +} + +.avatar-rounded { + border-radius: 100rem; +} + +.avatar-xxs { + --tblr-avatar-size: 1rem; + --tblr-avatar-status-size: 0.25rem; + --tblr-avatar-font-size: 0.5rem; + --tblr-avatar-icon-size: 0.75rem; +} + +.avatar-xxs .badge:empty { + width: 0.25rem; + height: 0.25rem; +} + +.avatar-xs { + --tblr-avatar-size: 1.25rem; + --tblr-avatar-status-size: 0.375rem; + --tblr-avatar-font-size: 0.625rem; + --tblr-avatar-icon-size: 1rem; +} + +.avatar-xs .badge:empty { + width: 0.375rem; + height: 0.375rem; +} + +.avatar-sm { + --tblr-avatar-size: 2rem; + --tblr-avatar-status-size: 0.5rem; + --tblr-avatar-font-size: 0.75rem; + --tblr-avatar-icon-size: 1.25rem; +} + +.avatar-sm .badge:empty { + width: 0.5rem; + height: 0.5rem; +} + +.avatar-md { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 0.875rem; + --tblr-avatar-icon-size: 1.5rem; +} + +.avatar-md .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-lg { + --tblr-avatar-size: 3rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 1.25rem; + --tblr-avatar-icon-size: 2rem; +} + +.avatar-lg .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-xl { + --tblr-avatar-size: 5rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 2rem; + --tblr-avatar-icon-size: 3rem; +} + +.avatar-xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-2xl { + --tblr-avatar-size: 7rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 3rem; + --tblr-avatar-icon-size: 5rem; +} + +.avatar-2xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} +.avatar-list a.avatar:hover { + z-index: 1; +} + +.avatar-list-stacked { + display: block; + --tblr-list-gap: 0; +} +.avatar-list-stacked .avatar { + margin-right: calc(-0.5 * var(--tblr-avatar-size)) !important; + box-shadow: var(--tblr-avatar-box-shadow), 0 0 0 2px var(--tblr-card-cap-bg, var(--tblr-card-bg, var(--tblr-bg-surface))); +} + +.avatar-upload { + width: 4rem; + height: 4rem; + border: var(--tblr-border-width) dashed var(--tblr-border-color); + background: var(--tblr-bg-forms); + flex-direction: column; + transition: color 0.3s, background-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .avatar-upload { + transition: none; + } +} +.avatar-upload svg { + width: 1.5rem; + height: 1.5rem; + stroke-width: 1; +} +.avatar-upload:hover { + border-color: var(--tblr-primary); + color: var(--tblr-primary); + text-decoration: none; +} + +.avatar-upload-text { + font-size: 0.625rem; + line-height: 1; + margin-top: 0.25rem; +} + +.avatar-cover { + margin-top: calc(-0.5 * var(--tblr-avatar-size)); + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-body-bg)); +} + +.badge { + justify-content: center; + align-items: center; + background: var(--tblr-bg-surface-secondary); + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + min-width: 1.35714285em; + font-weight: var(--tblr-font-weight-bold); + letter-spacing: 0.04em; + vertical-align: bottom; +} +a.badge { + color: var(--tblr-bg-surface); +} + +.badge .avatar { + box-sizing: content-box; + width: 1.25rem; + height: 1.25rem; + margin: 0 0.5rem 0 -0.5rem; +} +.badge .icon { + width: 1em; + height: 1em; + font-size: 1rem; + stroke-width: 2; +} + +.badge:empty, +.badge-empty { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + min-width: 0; + min-height: auto; + padding: 0; + border-radius: 100rem; + vertical-align: baseline; +} + +.badge-outline { + background-color: transparent; + border: var(--tblr-border-width) var(--tblr-border-style) currentColor; +} + +.badge-pill { + border-radius: 100rem; +} + +.badges-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.badge-notification { + position: absolute !important; + top: 0 !important; + right: 0 !important; + transform: translate(50%, -50%); + z-index: 1; +} + +.badge-blink { + animation: blink 2s infinite; +} + +.breadcrumb { + --tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold); + --tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color); + --tblr-breadcrumb-link-color: var(--tblr-link-color); + padding: 0; + margin: 0; + background: transparent; +} +.breadcrumb a { + color: var(--tblr-breadcrumb-link-color); +} +.breadcrumb a:hover { + text-decoration: underline; +} + +.breadcrumb-muted { + --tblr-breadcrumb-link-color: var(--tblr-secondary); +} + +.breadcrumb-item.active { + font-weight: var(--tblr-breadcrumb-item-active-font-weight); +} +.breadcrumb-item.active a { + color: inherit; + pointer-events: none; +} +.breadcrumb-item.disabled { + color: var(--tblr-breadcrumb-item-disabled-color); +} +.breadcrumb-item.disabled:before { + color: inherit; +} +.breadcrumb-item.disabled a { + color: inherit; + pointer-events: none; +} + +.breadcrumb-dots { + --tblr-breadcrumb-divider: "·"; +} + +.breadcrumb-arrows { + --tblr-breadcrumb-divider: "›"; +} + +.breadcrumb-bullets { + --tblr-breadcrumb-divider: "•"; +} + +.btn { + --tblr-btn-icon-size: 1.25rem; + --tblr-btn-bg: var(--tblr-bg-surface); + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-border-color: var(--tblr-border-color); + --tblr-btn-hover-bg: var(--tblr-btn-bg); + --tblr-btn-hover-border-color: var(--tblr-border-color-active); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-active-color: var(--tblr-primary); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-btn-active-border-color: var(--tblr-primary); + display: inline-flex; + align-items: center; + justify-content: center; + white-space: nowrap; + box-shadow: var(--tblr-btn-box-shadow); +} +.btn .icon { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + min-width: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); + vertical-align: bottom; + color: inherit; +} +.btn .avatar { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); +} +.btn .icon-right { + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); +} +.btn .badge { + top: auto; +} +.btn-check + .btn:hover { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} + +.btn-link { + color: #0054a6; + background-color: transparent; + border-color: transparent; + box-shadow: none; +} +.btn-link .icon { + color: inherit; +} +.btn-link:hover { + color: #004385; + border-color: transparent; +} + +.btn-primary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-primary-fg); + --tblr-btn-bg: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-border-color: var(--tblr-primary); +} + +.btn-secondary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-secondary-fg); + --tblr-btn-bg: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-border-color: var(--tblr-secondary); +} + +.btn-success { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-success-fg); + --tblr-btn-bg: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-border-color: var(--tblr-success); +} + +.btn-info { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-info-fg); + --tblr-btn-bg: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-border-color: var(--tblr-info); +} + +.btn-warning { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-warning-fg); + --tblr-btn-bg: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-border-color: var(--tblr-warning); +} + +.btn-danger { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-danger-fg); + --tblr-btn-bg: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-border-color: var(--tblr-danger); +} + +.btn-light { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-light-fg); + --tblr-btn-bg: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-border-color: var(--tblr-light); +} + +.btn-dark { + --tblr-btn-border-color: var(--tblr-dark-mode-border-color); + --tblr-btn-hover-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-active-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-color: var(--tblr-dark-fg); + --tblr-btn-bg: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-border-color: var(--tblr-dark); +} + +.btn-muted { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-muted-fg); + --tblr-btn-bg: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-border-color: var(--tblr-muted); +} + +.btn-blue { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-blue-fg); + --tblr-btn-bg: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-border-color: var(--tblr-blue); +} + +.btn-azure { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-azure-fg); + --tblr-btn-bg: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-border-color: var(--tblr-azure); +} + +.btn-indigo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-indigo-fg); + --tblr-btn-bg: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-border-color: var(--tblr-indigo); +} + +.btn-purple { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-purple-fg); + --tblr-btn-bg: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-border-color: var(--tblr-purple); +} + +.btn-pink { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pink-fg); + --tblr-btn-bg: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-border-color: var(--tblr-pink); +} + +.btn-red { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-red-fg); + --tblr-btn-bg: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-border-color: var(--tblr-red); +} + +.btn-orange { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-orange-fg); + --tblr-btn-bg: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-border-color: var(--tblr-orange); +} + +.btn-yellow { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-yellow-fg); + --tblr-btn-bg: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-border-color: var(--tblr-yellow); +} + +.btn-lime { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-lime-fg); + --tblr-btn-bg: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-border-color: var(--tblr-lime); +} + +.btn-green { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-green-fg); + --tblr-btn-bg: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-border-color: var(--tblr-green); +} + +.btn-teal { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-teal-fg); + --tblr-btn-bg: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-border-color: var(--tblr-teal); +} + +.btn-cyan { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-cyan-fg); + --tblr-btn-bg: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-border-color: var(--tblr-cyan); +} + +.btn-facebook { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-facebook-fg); + --tblr-btn-bg: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-border-color: var(--tblr-facebook); +} + +.btn-twitter { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-twitter-fg); + --tblr-btn-bg: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-border-color: var(--tblr-twitter); +} + +.btn-linkedin { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-linkedin-fg); + --tblr-btn-bg: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-border-color: var(--tblr-linkedin); +} + +.btn-google { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-google-fg); + --tblr-btn-bg: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-border-color: var(--tblr-google); +} + +.btn-youtube { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-youtube-fg); + --tblr-btn-bg: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-border-color: var(--tblr-youtube); +} + +.btn-vimeo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vimeo-fg); + --tblr-btn-bg: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-border-color: var(--tblr-vimeo); +} + +.btn-dribbble { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-dribbble-fg); + --tblr-btn-bg: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-border-color: var(--tblr-dribbble); +} + +.btn-github { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-github-fg); + --tblr-btn-bg: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-border-color: var(--tblr-github); +} + +.btn-instagram { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-instagram-fg); + --tblr-btn-bg: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-border-color: var(--tblr-instagram); +} + +.btn-pinterest { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pinterest-fg); + --tblr-btn-bg: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-border-color: var(--tblr-pinterest); +} + +.btn-vk { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vk-fg); + --tblr-btn-bg: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-border-color: var(--tblr-vk); +} + +.btn-rss { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-rss-fg); + --tblr-btn-bg: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-border-color: var(--tblr-rss); +} + +.btn-flickr { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-flickr-fg); + --tblr-btn-bg: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-border-color: var(--tblr-flickr); +} + +.btn-bitbucket { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-bitbucket-fg); + --tblr-btn-bg: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-border-color: var(--tblr-bitbucket); +} + +.btn-tabler { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-tabler-fg); + --tblr-btn-bg: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-border-color: var(--tblr-tabler); +} + +.btn-ghost-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-hover-border-color: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-hover-border-color: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-hover-border-color: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-hover-border-color: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-hover-border-color: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-hover-border-color: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-hover-border-color: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-hover-border-color: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-hover-border-color: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-hover-border-color: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-hover-border-color: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-hover-border-color: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-hover-border-color: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-hover-border-color: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-hover-border-color: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-hover-border-color: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-hover-border-color: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-hover-border-color: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-hover-border-color: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-hover-border-color: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-hover-border-color: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-hover-border-color: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-hover-border-color: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-hover-border-color: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-hover-border-color: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-hover-border-color: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-hover-border-color: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-hover-border-color: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-hover-border-color: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-hover-border-color: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-hover-border-color: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-hover-border-color: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-hover-border-color: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-hover-border-color: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-hover-border-color: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-hover-border-color: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: .75rem; +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: 2rem; +} + +.btn-pill { + padding-right: 1.5em; + padding-left: 1.5em; + border-radius: 10rem; +} +.btn-pill[class*=btn-icon] { + padding: 0.375rem 15px; +} + +.btn-square { + border-radius: 0; +} + +.btn-icon { + min-width: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + min-height: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + padding-left: 0; + padding-right: 0; +} +.btn-icon .icon { + margin: calc(-1 * var(--tblr-btn-padding-x)); +} + +.btn-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.btn-floating { + position: fixed; + z-index: 1030; + bottom: 1.5rem; + right: 1.5rem; + border-radius: 100rem; +} + +.btn-loading { + position: relative; + color: transparent !important; + text-shadow: none !important; + pointer-events: none; +} +.btn-loading > * { + opacity: 0; +} +.btn-loading:after { + content: ""; + display: inline-block; + vertical-align: text-bottom; + border: 2px var(--tblr-border-style) currentColor; + border-right-color: transparent; + border-radius: 100rem; + color: var(--tblr-btn-color); + position: absolute; + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + left: calc(50% - var(--tblr-btn-icon-size) / 2); + top: calc(50% - var(--tblr-btn-icon-size) / 2); + animation: spinner-border 0.75s linear infinite; +} + +.btn-action { + padding: 0; + border: 0; + color: var(--tblr-secondary); + display: inline-flex; + width: 2rem; + height: 2rem; + align-items: center; + justify-content: center; + border-radius: var(--tblr-border-radius); + background: transparent; +} +.btn-action:after { + content: none; +} +.btn-action:focus { + outline: none; + box-shadow: none; +} +.btn-action:hover, .btn-action.show { + color: var(--tblr-body-color); + background: var(--tblr-active-bg); +} +.btn-action.show { + color: var(--tblr-primary); +} +.btn-action .icon { + margin: 0; + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; + stroke-width: 1; +} + +.btn-actions { + display: flex; +} + +.btn-group, +.btn-group-vertical { + box-shadow: var(--tblr-box-shadow-input); +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 5; +} +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus { + z-index: 1; +} + +.calendar { + display: block; + font-size: 0.765625rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.calendar-nav { + display: flex; + align-items: center; +} + +.calendar-title { + flex: 1; + text-align: center; +} + +.calendar-body, +.calendar-header { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + padding: 0.5rem 0; +} + +.calendar-header { + color: var(--tblr-secondary); +} + +.calendar-date { + flex: 0 0 14.2857142857%; + max-width: 14.2857142857%; + padding: 0.2rem; + text-align: center; + border: 0; +} +.calendar-date.prev-month, .calendar-date.next-month { + opacity: 0.25; +} +.calendar-date .date-item { + position: relative; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + line-height: 1.4rem; + color: #66758c; + text-align: center; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: 0 0; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + border-radius: 100rem; + outline: 0; + transition: background 0.3s, border 0.3s, box-shadow 0.32s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .calendar-date .date-item { + transition: none; + } +} +.calendar-date .date-item:hover { + color: var(--tblr-primary); + text-decoration: none; + background: #fefeff; + border-color: var(--tblr-border-color); +} +.calendar-date .date-today { + color: var(--tblr-primary); + border-color: var(--tblr-border-color); +} + +.calendar-range { + position: relative; +} +.calendar-range:before { + position: absolute; + top: 50%; + right: 0; + left: 0; + height: 1.4rem; + content: ""; + background: rgba(var(--tblr-primary-rgb), 0.1); + transform: translateY(-50%); +} +.calendar-range.range-start .date-item, .calendar-range.range-end .date-item { + color: #ffffff; + background: var(--tblr-primary); + border-color: var(--tblr-primary); +} +.calendar-range.range-start:before { + left: 50%; +} +.calendar-range.range-end:before { + right: 50%; +} + +.carousel-indicators-vertical { + left: auto; + top: 0; + margin: 0 1rem 0 0; + flex-direction: column; +} +.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0 3px; + width: 3px; + height: 30px; + border: 0; + border-left: 10px var(--tblr-border-style) transparent; + border-right: 10px var(--tblr-border-style) transparent; +} + +.carousel-indicators-dot [data-bs-target] { + width: 0.5rem; + height: 0.5rem; + border-radius: 100rem; + border: 10px var(--tblr-border-style) transparent; + margin: 0; +} + +.carousel-indicators-thumb [data-bs-target] { + width: 2rem; + height: auto; + background: no-repeat center/cover; + border: 0; + border-radius: var(--tblr-border-radius); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + margin: 0 3px; + opacity: 0.75; +} +@media (min-width: 992px) { + .carousel-indicators-thumb [data-bs-target] { + width: 4rem; + } +} +.carousel-indicators-thumb [data-bs-target]:before { + content: ""; + padding-top: var(--tblr-aspect-ratio, 100%); + display: block; +} +.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0; +} + +.carousel-caption-background { + background: red; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 90%; + background: linear-gradient(0deg, rgba(24, 36, 51, 0.9), rgba(24, 36, 51, 0)); +} + +.card { + transition: transform 0.3s ease-out, opacity 0.3s ease-out, box-shadow 0.3s ease-out; +} +@media (prefers-reduced-motion: reduce) { + .card { + transition: none; + } +} +@media print { + .card { + border: none; + box-shadow: none; + } +} +a.card { + color: inherit; +} +a.card:hover { + text-decoration: none; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; +} + +.card .card { + box-shadow: none; +} + +.card-borderless, +.card-borderless .card-header, +.card-borderless .card-footer { + border-color: transparent; +} + +.card-stamp { + --tblr-stamp-size: 7rem; + position: absolute; + top: 0; + right: 0; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + max-height: 100%; + border-top-right-radius: 4px; + opacity: 0.2; + overflow: hidden; + pointer-events: none; +} + +.card-stamp-lg { + --tblr-stamp-size: 13rem; +} + +.card-stamp-icon { + background: var(--tblr-secondary); + color: var(--tblr-card-bg, var(--tblr-bg-surface)); + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + position: relative; + top: calc(var(--tblr-stamp-size) * -0.25); + right: calc(var(--tblr-stamp-size) * -0.25); + font-size: calc(var(--tblr-stamp-size) * 0.75); + transform: rotate(10deg); +} +.card-stamp-icon .icon { + stroke-width: 2; + width: calc(var(--tblr-stamp-size) * 0.75); + height: calc(var(--tblr-stamp-size) * 0.75); +} + +.card-img, +.card-img-start { + border-top-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img, +.card-img-end { + border-top-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img-overlay { + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.card-img-overlay-dark { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.card-inactive { + pointer-events: none; + box-shadow: none; +} +.card-inactive .card-body { + opacity: 0.64; +} + +.card-active { + --tblr-card-border-color: var(--tblr-primary); + --tblr-card-bg: var(--tblr-active-bg); +} + +.card-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 1.25rem 1.25rem; + text-align: center; + transition: background 0.3s; + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + flex: 1; + color: inherit; + font-weight: var(--tblr-font-weight-medium); +} +@media (prefers-reduced-motion: reduce) { + .card-btn { + transition: none; + } +} +.card-btn:hover { + text-decoration: none; + background: rgba(var(--tblr-primary-rgb), 0.04); +} +.card-btn + .card-btn { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Stacked card + */ +.card-stacked { + --tblr-card-stacked-offset: .25rem; + position: relative; +} +.card-stacked:after { + position: absolute; + top: calc(-1 * var(--tblr-card-stacked-offset)); + right: var(--tblr-card-stacked-offset); + left: var(--tblr-card-stacked-offset); + height: var(--tblr-card-stacked-offset); + content: ""; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-cover { + position: relative; + padding: 1.25rem 1.25rem; + background: #666666 no-repeat center/cover; +} +.card-cover:before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + content: ""; + background: rgba(24, 36, 51, 0.48); +} +.card-cover:first-child, .card-cover:first-child:before { + border-radius: 4px 4px 0 0; +} + +.card-cover-blurred:before { + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); +} + +.card-actions { + margin: -0.5rem -0.5rem -0.5rem auto; + padding-left: 0.5rem; +} +.card-actions a { + text-decoration: none; +} + +.card-header { + color: inherit; + display: flex; + align-items: center; + background: transparent; +} +.card-header:first-child { + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-header-light { + border-bottom-color: transparent; + background: var(--tblr-bg-surface-tertiary); +} + +.card-header-tabs { + background: var(--tblr-bg-surface-tertiary); + flex: 1; + margin: calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1); + padding: calc(var(--tblr-card-cap-padding-y) * 0.5) calc(var(--tblr-card-cap-padding-x) * 0.5) 0; +} + +.card-header-pills { + flex: 1; + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} + +.card-rotate-left { + transform: rotate(-1.5deg); +} + +.card-rotate-right { + transform: rotate(1.5deg); +} + +.card-link { + color: inherit; +} +.card-link:hover { + color: inherit; + text-decoration: none; + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.08); +} + +.card-link-rotate:hover { + transform: rotate(1.5deg); + opacity: 1; +} + +.card-link-pop:hover { + transform: translateY(-2px); + opacity: 1; +} + +.card-footer { + margin-top: auto; +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +.card-footer-transparent { + background: transparent; + border-color: transparent; + padding-top: 0; +} + +.card-footer-borderless { + border-top: none; +} + +.card-progress { + height: 0.25rem; +} +.card-progress:last-child { + border-radius: 0 0 2px 2px; +} +.card-progress:first-child { + border-radius: 2px 2px 0 0; +} + +.card-meta { + color: var(--tblr-secondary); +} + +.card-title { + display: block; + margin: 0 0 1rem; + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + color: inherit; + line-height: 1.5rem; +} +a.card-title:hover { + color: inherit; +} + +.card-header .card-title { + margin: 0; +} + +.card-subtitle { + margin-bottom: 1.25rem; + color: var(--tblr-secondary); + font-weight: normal; +} +.card-header .card-subtitle { + margin: 0; +} +.card-title .card-subtitle { + margin: 0 0 0 0.25rem; + font-size: 0.875rem; +} + +.card-body { + position: relative; +} +.card-body > :last-child { + margin-bottom: 0; +} +.card-sm > .card-body { + padding: 1rem; +} +@media (min-width: 768px) { + .card-md > .card-body { + padding: 2.5rem; + } +} +@media (min-width: 768px) { + .card-lg > .card-body { + padding: 2rem; + } +} +@media (min-width: 992px) { + .card-lg > .card-body { + padding: 4rem; + } +} +@media print { + .card-body { + padding: 0; + } +} +.card-body + .card-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.card-body-scrollable { + overflow: auto; +} + +/** +Card optinos + */ +.card-options { + top: 1.5rem; + right: 0.75rem; + display: flex; + margin-left: auto; +} + +.card-options-link { + display: inline-block; + min-width: 1rem; + margin-left: 0.25rem; + color: var(--tblr-secondary); +} + +/** +Card status + */ +.card-status-top { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2px; + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-status-start { + position: absolute; + right: auto; + bottom: 0; + width: 2px; + height: 100%; + border-radius: var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius); +} + +.card-status-bottom { + position: absolute; + top: initial; + bottom: 0; + width: 100%; + height: 2px; + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +/** +Card table + */ +.card-table { + margin-bottom: 0 !important; +} +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-left: 1.25rem; + border-left: 0; +} +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-right: 1.25rem; + border-right: 0; +} +.card-table thead tr:first-child, +.card-table tbody tr:first-child, +.card-table tfoot tr:first-child { + border-top: 0; +} +.card-table thead tr:first-child td, +.card-table thead tr:first-child th, +.card-table tbody tr:first-child td, +.card-table tbody tr:first-child th, +.card-table tfoot tr:first-child td, +.card-table tfoot tr:first-child th { + border-top: 0; +} +.card-body + .card-table { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color); +} + +/* +Card code + */ +.card-code { + padding: 0; +} +.card-code .highlight { + margin: 0; + border: 0; +} +.card-code pre { + margin: 0 !important; + border: 0 !important; +} + +/* +Card chart + */ +.card-chart { + position: relative; + z-index: 1; + height: 3.5rem; +} + +/** +Card avatar + */ +.card-avatar { + margin-left: auto; + margin-right: auto; + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-bg-surface)); + margin-top: calc(-1 * var(--tblr-avatar-size) * 0.5); +} + +/* +Card list group + */ +.card-body + .card-list-group { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.card-list-group .list-group-item { + padding-right: 1.25rem; + padding-left: 1.25rem; + border-right: 0; + border-left: 0; + border-radius: 0; +} +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-tabs .nav-tabs { + position: relative; + z-index: 1000; + border-bottom: 0; +} +.card-tabs .nav-tabs .nav-link { + background: var(--tblr-bg-surface-tertiary); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.card-tabs .nav-tabs .nav-link.active, .card-tabs .nav-tabs .nav-link:active, .card-tabs .nav-tabs .nav-link:hover { + border-color: var(--tblr-border-color-translucent); + color: var(--tblr-body-color); +} +.card-tabs .nav-tabs .nav-link.active { + color: inherit; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border-bottom-color: transparent; +} +.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link { + border-top-left-radius: 0; +} +.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link { + border-top-right-radius: 0; +} +.card-tabs .nav-tabs .nav-item + .nav-item { + margin-left: calc(-1 * var(--tblr-border-width)); +} +.card-tabs .nav-tabs-bottom { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link.active { + border-top-color: transparent; +} +.card-tabs .nav-tabs-bottom .nav-item { + margin-top: calc(-1 * var(--tblr-border-width)); + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-item .nav-link { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link { + border-bottom-left-radius: 0; +} +.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link { + border-bottom-right-radius: 0; +} +.card-tabs .card { + border-bottom-left-radius: 0; +} +.card-tabs .nav-tabs + .tab-content .card { + border-bottom-left-radius: var(--tblr-card-border-radius); + border-top-left-radius: 0; +} + +/** +Card note +*/ +.card-note { + --tblr-card-bg: #fff7dd; + --tblr-card-border-color: #fff1c9; +} + +.btn-close { + cursor: pointer; +} +.btn-close:focus { + outline: none; +} + +.dropdown-menu { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.dropdown-menu.card { + padding: 0; + min-width: 25rem; + display: none; +} +.dropdown-menu.card.show { + display: flex; +} + +.dropdown-item { + min-width: 11rem; + display: flex; + align-items: center; + margin: 0; + line-height: 1.4285714286; +} + +.dropdown-item-icon { + width: 1.25rem !important; + height: 1.25rem !important; + margin-right: 0.5rem; + color: var(--tblr-secondary); + opacity: 0.7; + text-align: center; +} + +.dropdown-item-indicator { + margin-right: 0.5rem; + margin-left: -0.25rem; + height: 1.25rem; + display: inline-flex; + line-height: 1; + vertical-align: bottom; + align-items: center; +} + +.dropdown-header { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-bottom: 0.25rem; + pointer-events: none; +} + +.dropdown-menu-scrollable { + height: auto; + max-height: 13rem; + overflow-x: hidden; +} + +.dropdown-menu-column { + min-width: 11rem; +} +.dropdown-menu-column .dropdown-item { + min-width: 0; +} + +.dropdown-menu-columns { + display: flex; + flex: 0 0.25rem; +} + +.dropdown-menu-arrow:before { + content: ""; + position: absolute; + top: -0.25rem; + left: 0.75rem; + display: block; + background: inherit; + width: 14px; + height: 14px; + /*rtl:ignore*/ + transform: rotate(45deg); + transform-origin: center; + border: 1px solid; + border-color: inherit; + z-index: -1; + clip: rect(0px, 9px, 9px, 0px); +} +.dropdown-menu-arrow.dropdown-menu-end:before { + right: 0.75rem; + left: auto; +} + +.dropend > .dropdown-menu { + margin-top: calc(-0.25rem - 1px); + margin-left: -0.25rem; +} +.dropend .dropdown-toggle:after { + margin-left: auto; +} + +.dropdown-menu-card { + padding: 0; +} +.dropdown-menu-card > .card { + margin: 0; + border: 0; + box-shadow: none; +} + +.datagrid { + --tblr-datagrid-padding: 1.5rem; + --tblr-datagrid-item-width: 15rem; + display: grid; + grid-gap: var(--tblr-datagrid-padding); + grid-template-columns: repeat(auto-fit, minmax(var(--tblr-datagrid-item-width), 1fr)); +} + +.datagrid-title { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + margin-bottom: 0.25rem; +} + +.empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + padding: 1rem; + text-align: center; +} +@media (min-width: 768px) { + .empty { + padding: 3rem; + } +} + +.empty-icon { + margin: 0 0 1rem; + width: 3rem; + height: 3rem; + line-height: 1; + color: var(--tblr-secondary); +} +.empty-icon svg { + width: 100%; + height: 100%; +} + +.empty-img { + margin: 0 0 2rem; + line-height: 1; +} +.empty-img img { + height: 8rem; + width: auto; +} + +.empty-header { + margin: 0 0 1rem; + font-size: 4rem; + font-weight: var(--tblr-font-weight-light); + line-height: 1; + color: var(--tblr-secondary); +} + +.empty-title { + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: var(--tblr-font-weight-bold); +} + +.empty-title, +.empty-subtitle { + margin: 0 0 0.5rem; +} + +.empty-action { + margin-top: 1.5rem; +} + +.empty-bordered { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.row > * { + min-width: 0; +} + +.col-separator { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.container-slim { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 16rem; +} +.container-tight { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 30rem; +} +.container-narrow { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 45rem; +} + +.row-0 { + margin-right: 0; + margin-left: 0; +} +.row-0 > .col, +.row-0 > [class*=col-] { + padding-right: 0; + padding-left: 0; +} +.row-0 .card { + margin-bottom: 0; +} + +.row-sm { + margin-right: -0.375rem; + margin-left: -0.375rem; +} +.row-sm > .col, +.row-sm > [class*=col-] { + padding-right: 0.375rem; + padding-left: 0.375rem; +} +.row-sm .card { + margin-bottom: 0.75rem; +} + +.row-md { + margin-right: -1.5rem; + margin-left: -1.5rem; +} +.row-md > .col, +.row-md > [class*=col-] { + padding-right: 1.5rem; + padding-left: 1.5rem; +} +.row-md .card { + margin-bottom: 3rem; +} + +.row-lg { + margin-right: -3rem; + margin-left: -3rem; +} +.row-lg > .col, +.row-lg > [class*=col-] { + padding-right: 3rem; + padding-left: 3rem; +} +.row-lg .card { + margin-bottom: 6rem; +} + +.row-deck > .col, +.row-deck > [class*=col-] { + display: flex; + align-items: stretch; +} +.row-deck > .col .card, +.row-deck > [class*=col-] .card { + flex: 1 1 auto; +} + +.row-cards { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: var(--tblr-page-padding); + min-width: 0; +} +.row-cards .row-cards { + flex: 1; +} + +.space-y { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x { + display: flex; + gap: 1rem; +} + +.space-y-0 { + display: flex; + flex-direction: column; + gap: 0; +} + +.space-x-0 { + display: flex; + gap: 0; +} + +.space-y-1 { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.space-x-1 { + display: flex; + gap: 0.25rem; +} + +.space-y-2 { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.space-x-2 { + display: flex; + gap: 0.5rem; +} + +.space-y-3 { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x-3 { + display: flex; + gap: 1rem; +} + +.space-y-4 { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.space-x-4 { + display: flex; + gap: 1.5rem; +} + +.space-y-5 { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.space-x-5 { + display: flex; + gap: 2rem; +} + +.space-y-6 { + display: flex; + flex-direction: column; + gap: 3rem; +} + +.space-x-6 { + display: flex; + gap: 3rem; +} + +.space-y-7 { + display: flex; + flex-direction: column; + gap: 5rem; +} + +.space-x-7 { + display: flex; + gap: 5rem; +} + +.space-y-8 { + display: flex; + flex-direction: column; + gap: 8rem; +} + +.space-x-8 { + display: flex; + gap: 8rem; +} + +.divide-y > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x > :not(template):not(:first-child) { + padding-left: 1rem !important; +} +.divide-x > :not(template):not(:last-child) { + padding-right: 1rem !important; +} + +.divide-y-0 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-0 > :not(template):not(:first-child) { + padding-top: 0 !important; +} +.divide-y-0 > :not(template):not(:last-child) { + padding-bottom: 0 !important; +} + +.divide-x-0 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-0 > :not(template):not(:first-child) { + padding-left: 0 !important; +} +.divide-x-0 > :not(template):not(:last-child) { + padding-right: 0 !important; +} + +.divide-y-1 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-1 > :not(template):not(:first-child) { + padding-top: 0.25rem !important; +} +.divide-y-1 > :not(template):not(:last-child) { + padding-bottom: 0.25rem !important; +} + +.divide-x-1 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-1 > :not(template):not(:first-child) { + padding-left: 0.25rem !important; +} +.divide-x-1 > :not(template):not(:last-child) { + padding-right: 0.25rem !important; +} + +.divide-y-2 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-2 > :not(template):not(:first-child) { + padding-top: 0.5rem !important; +} +.divide-y-2 > :not(template):not(:last-child) { + padding-bottom: 0.5rem !important; +} + +.divide-x-2 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-2 > :not(template):not(:first-child) { + padding-left: 0.5rem !important; +} +.divide-x-2 > :not(template):not(:last-child) { + padding-right: 0.5rem !important; +} + +.divide-y-3 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-3 > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y-3 > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x-3 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-3 > :not(template):not(:first-child) { + padding-left: 1rem !important; +} +.divide-x-3 > :not(template):not(:last-child) { + padding-right: 1rem !important; +} + +.divide-y-4 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-4 > :not(template):not(:first-child) { + padding-top: 1.5rem !important; +} +.divide-y-4 > :not(template):not(:last-child) { + padding-bottom: 1.5rem !important; +} + +.divide-x-4 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-4 > :not(template):not(:first-child) { + padding-left: 1.5rem !important; +} +.divide-x-4 > :not(template):not(:last-child) { + padding-right: 1.5rem !important; +} + +.divide-y-5 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-5 > :not(template):not(:first-child) { + padding-top: 2rem !important; +} +.divide-y-5 > :not(template):not(:last-child) { + padding-bottom: 2rem !important; +} + +.divide-x-5 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-5 > :not(template):not(:first-child) { + padding-left: 2rem !important; +} +.divide-x-5 > :not(template):not(:last-child) { + padding-right: 2rem !important; +} + +.divide-y-6 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-6 > :not(template):not(:first-child) { + padding-top: 3rem !important; +} +.divide-y-6 > :not(template):not(:last-child) { + padding-bottom: 3rem !important; +} + +.divide-x-6 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-6 > :not(template):not(:first-child) { + padding-left: 3rem !important; +} +.divide-x-6 > :not(template):not(:last-child) { + padding-right: 3rem !important; +} + +.divide-y-7 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-7 > :not(template):not(:first-child) { + padding-top: 5rem !important; +} +.divide-y-7 > :not(template):not(:last-child) { + padding-bottom: 5rem !important; +} + +.divide-x-7 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-7 > :not(template):not(:first-child) { + padding-left: 5rem !important; +} +.divide-x-7 > :not(template):not(:last-child) { + padding-right: 5rem !important; +} + +.divide-y-8 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-8 > :not(template):not(:first-child) { + padding-top: 8rem !important; +} +.divide-y-8 > :not(template):not(:last-child) { + padding-bottom: 8rem !important; +} + +.divide-x-8 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-8 > :not(template):not(:first-child) { + padding-left: 8rem !important; +} +.divide-x-8 > :not(template):not(:last-child) { + padding-right: 8rem !important; +} + +.divide-y-fill { + display: flex; + flex-direction: column; + height: 100%; +} +.divide-y-fill > :not(template) { + flex: 1; + display: flex; + justify-content: center; + flex-direction: column; +} + +.icon { + --tblr-icon-size: 1.25rem; + width: var(--tblr-icon-size); + height: var(--tblr-icon-size); + font-size: var(--tblr-icon-size); + vertical-align: bottom; + stroke-width: 1.5; +} +.icon:hover { + text-decoration: none; +} + +.icon-inline { + --tblr-icon-size: 1rem; + vertical-align: -0.2rem; +} + +.icon-filled { + fill: currentColor; +} + +.icon-sm { + --tblr-icon-size: 1rem; + stroke-width: 1; +} + +.icon-md { + --tblr-icon-size: 2.5rem; + stroke-width: 1; +} + +.icon-lg { + --tblr-icon-size: 3.5rem; + stroke-width: 1; +} + +.icon-pulse { + transition: all 0.15s ease 0s; + animation: pulse 2s ease infinite; + animation-fill-mode: both; +} + +.icon-tada { + transition: all 0.15s ease 0s; + animation: tada 3s ease infinite; + animation-fill-mode: both; +} + +.icon-rotate { + transition: all 0.15s ease 0s; + animation: rotate-360 3s linear infinite; + animation-fill-mode: both; +} + +.img-responsive { + --tblr-img-responsive-ratio: 75%; + background: no-repeat center/cover; + padding-top: var(--tblr-img-responsive-ratio); +} + +.img-responsive-grid { + padding-top: calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2); +} + +.img-responsive-1x1 { + --tblr-img-responsive-ratio: 100%; +} + +.img-responsive-2x1 { + --tblr-img-responsive-ratio: 50%; +} + +.img-responsive-1x2 { + --tblr-img-responsive-ratio: 200%; +} + +.img-responsive-3x1 { + --tblr-img-responsive-ratio: 33.3333333333%; +} + +.img-responsive-1x3 { + --tblr-img-responsive-ratio: 300%; +} + +.img-responsive-4x3 { + --tblr-img-responsive-ratio: 75%; +} + +.img-responsive-3x4 { + --tblr-img-responsive-ratio: 133.3333333333%; +} + +.img-responsive-16x9 { + --tblr-img-responsive-ratio: 56.25%; +} + +.img-responsive-9x16 { + --tblr-img-responsive-ratio: 177.7777777778%; +} + +.img-responsive-21x9 { + --tblr-img-responsive-ratio: 42.8571428571%; +} + +.img-responsive-9x21 { + --tblr-img-responsive-ratio: 233.3333333333%; +} + +textarea[cols] { + height: auto; +} + +/** +Form label + */ +.col-form-label, +.form-label { + display: block; + font-weight: var(--tblr-font-weight-medium); +} +.col-form-label.required:after, +.form-label.required:after { + content: "*"; + margin-left: 0.25rem; + color: #d63939; +} + +.form-label-description { + float: right; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-secondary); +} + +/** +Form hint + */ +.form-hint { + display: block; + color: var(--tblr-secondary); +} +.form-hint:last-child { + margin-bottom: 0; +} +.form-hint + .form-control { + margin-top: 0.25rem; +} +.form-label + .form-hint { + margin-top: -0.25rem; +} +.input-group + .form-hint, .form-control + .form-hint, .form-select + .form-hint { + margin-top: 0.5rem; +} + +/** +Form select + */ +.form-select:-moz-focusring { + color: var(--tblr-body-color); +} + +/** +Form control + */ +.form-control:-webkit-autofill { + box-shadow: 0 0 0 1000px var(--tblr-body-bg) inset; + color: var(--tblr-body-color); + -webkit-text-fill-color: var(--tblr-body-color); +} +.form-control:disabled, .form-control.disabled { + color: var(--tblr-secondary); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-control[size] { + width: auto; +} + +.form-control-light { + background-color: var(--tblr-gray-100); + border-color: transparent; +} + +.form-control-dark { + background-color: rgba(0, 0, 0, 0.1); + color: #ffffff; + border-color: transparent; +} +.form-control-dark:focus { + background-color: rgba(0, 0, 0, 0.1); + box-shadow: none; + border-color: rgba(255, 255, 255, 0.24); +} +.form-control-dark::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.form-control-rounded { + border-radius: 10rem; +} + +.form-control-flush { + padding: 0; + background: none !important; + border-color: transparent !important; + resize: none; + box-shadow: none !important; + line-height: inherit; +} + +.form-footer { + margin-top: 2rem; +} + +.form-fieldset { + padding: 1rem; + margin-bottom: 1rem; + background: var(--tblr-body-bg); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +/** +Form help + */ +.form-help { + display: inline-flex; + font-weight: var(--tblr-font-weight-bold); + align-items: center; + justify-content: center; + width: 1.125rem; + height: 1.125rem; + font-size: 0.75rem; + color: var(--tblr-secondary); + text-align: center; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-gray-100); + border-radius: 100rem; + transition: background-color 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-help { + transition: none; + } +} +.form-help:hover, .form-help[aria-describedby] { + color: #ffffff; + background: var(--tblr-primary); +} + +/** +Input group + */ +.input-group { + box-shadow: var(--tblr-box-shadow-input); + border-radius: var(--tblr-border-radius); +} +.input-group .form-control, +.input-group .btn { + box-shadow: none; +} + +.input-group-link { + font-size: 0.75rem; +} + +.input-group-flat:focus-within { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-radius: var(--tblr-border-radius); +} +.input-group-flat:focus-within .form-control, +.input-group-flat:focus-within .input-group-text { + border-color: #80aad3 !important; +} +.input-group-flat .form-control:focus { + border-color: var(--tblr-border-color); + box-shadow: none; +} +.input-group-flat .form-control:not(:last-child) { + border-right: 0; +} +.input-group-flat .form-control:not(:first-child) { + border-left: 0; +} +.input-group-flat .input-group-text { + background: var(--tblr-bg-forms); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .input-group-flat .input-group-text { + transition: none; + } +} +.input-group-flat .input-group-text:first-child { + padding-right: 0; +} +.input-group-flat .input-group-text:last-child { + padding-left: 0; +} + +/** +Upload files + */ +.form-file-button { + margin-left: 0; + border-left: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} +.input-icon .form-control:not(:last-child), +.input-icon .form-select:not(:last-child) { + padding-right: 2.5rem; +} +.input-icon .form-control:not(:first-child), +.input-icon .form-select:not(:last-child) { + padding-left: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + color: var(--tblr-icon-color); + pointer-events: none; + font-size: 1.2em; +} +.input-icon-addon:last-child { + right: 0; + left: auto; +} + +/* +Color Input + */ +.form-colorinput { + position: relative; + display: inline-block; + margin: 0; + line-height: 1; + cursor: pointer; +} + +.form-colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-colorinput-color { + display: block; + width: 1.5rem; + height: 1.5rem; + color: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 3px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} +.form-colorinput-color:before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ""; + background: no-repeat center center/1.25rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-colorinput-color:before { + transition: none; + } +} +.form-colorinput-input:checked ~ .form-colorinput-color:before { + opacity: 1; +} +.form-colorinput-input:focus ~ .form-colorinput-color { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-colorinput-light .form-colorinput-color:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} + +/** +Image check + */ +.form-imagecheck { + position: relative; + margin: 0; + cursor: pointer; +} + +.form-imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-imagecheck-figure { + position: relative; + display: block; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; +} +.form-imagecheck-input:focus ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); +} +.form-imagecheck-figure:before { + position: absolute; + top: 0.25rem; + left: 0.25rem; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: #ffffff; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-bg-forms); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-figure:before { + transition: none; + } +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure:before { + background-color: var(--tblr-primary); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-imagecheck-input[type=radio] ~ .form-imagecheck-figure:before { + border-radius: 50%; +} +.form-imagecheck-input[type=radio]:checked ~ .form-imagecheck-figure:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-imagecheck-image { + max-width: 100%; + display: block; + opacity: 0.64; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-image { + transition: none; + } +} +.form-imagecheck-image:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} +.form-imagecheck-image:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.form-imagecheck:hover .form-imagecheck-image, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-image, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-image { + opacity: 1; +} + +.form-imagecheck-caption { + padding: 0.25rem; + font-size: 0.765625rem; + color: var(--tblr-secondary); + text-align: center; + transition: color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-caption { + transition: none; + } +} +.form-imagecheck:hover .form-imagecheck-caption, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-caption, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-caption { + color: var(--tblr-body-color); +} + +/* +Select group + */ +.form-selectgroup { + display: inline-flex; + margin: 0 -0.5rem -0.5rem 0; + flex-wrap: wrap; +} +.form-selectgroup .form-selectgroup-item { + margin: 0 0.5rem 0.5rem 0; +} + +.form-selectgroup-vertical { + flex-direction: column; +} + +.form-selectgroup-item { + display: block; + position: relative; +} + +.form-selectgroup-input { + position: absolute; + top: 0; + left: 0; + z-index: -1; + opacity: 0; +} + +.form-selectgroup-label { + position: relative; + display: block; + min-width: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + margin: 0; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-secondary); + background: var(--tblr-bg-forms); + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.3s, background 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-selectgroup-label { + transition: none; + } +} +.form-selectgroup-label .icon:only-child { + margin: 0 -0.25rem; +} +.form-selectgroup-label:hover { + color: var(--tblr-body-color); +} + +.form-selectgroup-check { + display: inline-block; + width: 1.25rem; + height: 1.25rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + vertical-align: middle; + box-shadow: var(--tblr-box-shadow-input); +} +.form-selectgroup-input[type=checkbox] + .form-selectgroup-label .form-selectgroup-check { + border-radius: var(--tblr-border-radius); +} +.form-selectgroup-input[type=radio] + .form-selectgroup-label .form-selectgroup-check { + border-radius: 50%; +} +.form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-check { + background-color: var(--tblr-primary); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-selectgroup-input[type=checkbox]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-selectgroup-input[type=radio]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-selectgroup-check-floated { + position: absolute; + top: 0.5625rem; + right: 0.5625rem; +} + +.form-selectgroup-input:checked + .form-selectgroup-label { + z-index: 1; + color: var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.04); + border-color: var(--tblr-primary); +} + +.form-selectgroup-input:focus + .form-selectgroup-label { + z-index: 2; + color: var(--tblr-primary); + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +/** +Alternate version of form select group + */ +.form-selectgroup-boxes .form-selectgroup-label { + text-align: left; + padding: 1.25rem 1.25rem; + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label { + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-title { + color: var(--tblr-primary); +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-label-content { + opacity: 1; +} + +/** +Select group + */ +.form-selectgroup-pills { + flex-wrap: wrap; + align-items: flex-start; +} +.form-selectgroup-pills .form-selectgroup-item { + flex-grow: 0; +} +.form-selectgroup-pills .form-selectgroup-label { + border-radius: 50px; +} + +/** +Bootstrap color input + */ +.form-control-color::-webkit-color-swatch { + border: none; +} + +/** +Remove the cancel buttons in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/** +Form control dark theme fix + */ +.form-control::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} + +/* +Form check + */ +.form-check { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-check.form-check-highlight .form-check-input:not(:checked) ~ .form-check-label { + color: var(--tblr-secondary); +} +.form-check .form-check-label-off { + color: var(--tblr-secondary); +} +.form-check .form-check-input:checked ~ .form-check-label-off { + display: none; +} +.form-check .form-check-input:not(:checked) ~ .form-check-label-on { + display: none; +} + +.form-check-input { + background-size: 1.25rem; + margin-top: 0rem; + box-shadow: var(--tblr-box-shadow-input); +} +.form-switch .form-check-input { + transition: background-color 0.3s, background-position 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} + +.form-check-label { + display: block; +} +.form-check-label.required:after { + content: "*"; + margin-left: 0.25rem; + color: #d63939; +} + +.form-check-description { + display: block; + color: var(--tblr-secondary); + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.form-check-single { + margin: 0; +} +.form-check-single .form-check-input { + margin: 0; +} + +/* +Form switch + */ +.form-switch .form-check-input { + height: 1.25rem; + margin-top: 0rem; +} + +.form-switch-lg { + padding-left: 3.5rem; + min-height: 1.5rem; +} +.form-switch-lg .form-check-input { + height: 1.5rem; + width: 2.75rem; + background-size: 1.5rem; + margin-left: -3.5rem; +} +.form-switch-lg .form-check-label { + padding-top: 0.125rem; +} + +/*Correction of Form-check position*/ +.form-check-input:checked { + border: none; +} + +.form-select.is-invalid-lite, .form-control.is-invalid-lite, .form-select.is-valid-lite, .form-control.is-valid-lite { + border-color: var(--tblr-border-color) !important; +} + +/** +Legend + */ +.legend { + --tblr-legend-size: 0.75em; + display: inline-block; + background: var(--tblr-border-color); + width: var(--tblr-legend-size); + height: var(--tblr-legend-size); + border-radius: var(--tblr-border-radius-sm); + border: 1px solid var(--tblr-border-color-translucent); +} + +.list-group { + margin-left: 0; + margin-right: 0; +} + +.list-group-header { + background: var(--tblr-bg-surface-tertiary); + padding: 0.5rem 1.25rem; + font-size: 0.75rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + text-transform: uppercase; + color: var(--tblr-secondary); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.list-group-flush > .list-group-header:last-child { + border-bottom-width: 0; +} + +.list-group-item { + background-color: inherit; +} + +.list-group-item.active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + border-left-color: #0054a6; + border-left-width: 2px; +} + +.list-group-item:active, .list-group-item:focus, .list-group-item:hover { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #929dab; + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-bordered .list-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + margin-top: -1px; +} +.list-bordered .list-item:first-child { + border-top: none; +} + +.list-group-hoverable .list-group-item-actions { + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .list-group-hoverable .list-group-item-actions { + transition: none; + } +} +.list-group-hoverable .list-group-item:hover .list-group-item-actions, +.list-group-hoverable .list-group-item-actions.show { + opacity: 1; +} + +.list-group-transparent { + --tblr-list-group-border-radius: 0; + margin: 0 -1.25rem; +} +.list-group-transparent .list-group-item { + background: none; + border: 0; +} +.list-group-transparent .list-group-item .icon { + color: var(--tblr-secondary); +} +.list-group-transparent .list-group-item.active { + font-weight: var(--tblr-font-weight-bold); + color: inherit; + background: var(--tblr-active-bg); +} +.list-group-transparent .list-group-item.active .icon { + color: inherit; +} + +.list-separated-item { + padding: 1rem 0; +} +.list-separated-item:first-child { + padding-top: 0; +} +.list-separated-item:last-child { + padding-bottom: 0; +} +.list-separated-item + .list-separated-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Inline list + */ +.list-inline-item:not(:last-child) { + margin-right: auto; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: " · "; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.loader { + position: relative; + display: block; + width: 2.5rem; + height: 2.5rem; + color: #0054a6; + vertical-align: middle; +} +.loader:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ""; + border: 1px var(--tblr-border-style); + border-color: transparent; + border-top-color: currentColor; + border-left-color: currentColor; + border-radius: 100rem; + animation: rotate-360 0.6s linear; + animation-iteration-count: infinite; +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} +.dimmer .loader { + position: absolute; + top: 50%; + right: 0; + left: 0; + display: none; + margin: 0 auto; + transform: translateY(-50%); +} +.dimmer.active .loader { + display: block; +} +.dimmer.active .dimmer-content { + pointer-events: none; + opacity: 0.1; +} + +@keyframes animated-dots { + 0% { + transform: translateX(-100%); + } +} +.animated-dots { + display: inline-block; + overflow: hidden; + vertical-align: bottom; +} +.animated-dots:after { + display: inline-block; + content: "..."; + animation: animated-dots 1.2s steps(4, jump-none) infinite; +} + +.modal-content .btn-close { + position: absolute; + top: 0; + right: 0; + width: 3.5rem; + height: 3.5rem; + margin: 0; + padding: 0; + z-index: 10; +} + +.modal-body { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +.modal-body::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .modal-body::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +.modal-body::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +.modal-body::-webkit-scrollbar-track { + background: transparent; +} +.modal-body:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +.modal-body::-webkit-scrollbar-corner { + background: transparent; +} +.modal-body .modal-title { + margin-bottom: 1rem; +} +.modal-body + .modal-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.modal-status { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + background: var(--tblr-secondary); + border-radius: var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0; +} + +.modal-header { + align-items: center; + min-height: 3.5rem; + background: transparent; + padding: 0 3.5rem 0 1.5rem; +} + +.modal-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-bold); + color: inherit; + line-height: 1.4285714286; +} + +.modal-footer { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.modal-blur { + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} + +.modal-full-width { + max-width: none; + margin: 0 0.5rem; +} + +.nav-vertical, +.nav-vertical .nav { + flex-direction: column; + flex-wrap: nowrap; +} +.nav-vertical .nav { + margin-left: 1.25rem; + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding-left: 0.5rem; +} +.nav-vertical .nav-link.active, +.nav-vertical .nav-item.show .nav-link { + font-weight: var(--tblr-font-weight-bold); +} +.nav-vertical.nav-pills { + margin: 0 -0.75rem; +} + +.nav-bordered { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.nav-bordered .nav-item + .nav-item { + margin-left: 1.25rem; +} +.nav-bordered .nav-link { + padding-left: 0; + padding-right: 0; + margin: 0 0 -var(--tblr-border-width); + border: 0; + border-bottom: 2px var(--tblr-border-style) transparent; + color: var(--tblr-secondary); +} +.nav-bordered .nav-link.active, +.nav-bordered .nav-item.show .nav-link { + color: var(--tblr-primary); + border-color: var(--tblr-primary); +} + +.nav-link { + display: flex; + transition: color 0.3s; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} + +.nav-link-toggle { + margin-left: auto; + padding: 0 0.25rem; + transition: transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .nav-link-toggle { + transition: none; + } +} +.nav-link-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-45deg); +} +.nav-link-toggle:after { + margin: 0; +} +.nav-link[aria-expanded=true] .nav-link-toggle { + transform: rotate(180deg); +} + +.nav-link-icon { + width: 1.25rem; + height: 1.25rem; + margin-right: 0.5rem; + color: var(--tblr-icon-color); +} +.nav-link-icon svg { + display: block; + height: 100%; +} + +.nav-fill .nav-item .nav-link { + justify-content: center; +} + +.stars { + display: inline-flex; + color: #bbc3cd; + font-size: 0.75rem; +} +.stars .star:not(:first-child) { + margin-left: 0.25rem; +} + +.pagination { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.page-link { + min-width: 1.75rem; + border-radius: var(--tblr-border-radius); +} + +.page-item { + text-align: center; +} +.page-item:not(.active) .page-link:hover { + background: transparent; +} +.page-item.page-prev, .page-item.page-next { + flex: 0 0 50%; + text-align: left; +} +.page-item.page-next { + margin-left: auto; + text-align: right; +} + +.page-item-subtitle { + margin-bottom: 2px; + font-size: 12px; + color: var(--tblr-secondary); + text-transform: uppercase; +} +.page-item.disabled .page-item-subtitle { + color: var(--tblr-disabled-color); +} + +.page-item-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-body-color); +} +.page-link:hover .page-item-title { + color: #0054a6; +} +.page-item.disabled .page-item-title { + color: var(--tblr-disabled-color); +} + +@keyframes progress-indeterminate { + 0% { + right: 100%; + left: -35%; + } + 100%, 60% { + right: -90%; + left: 100%; + } +} +/** +Progress + */ +.progress { + position: relative; + width: 100%; + line-height: 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.progress::-webkit-progress-bar { + background: var(--tblr-progress-bg); +} +.progress::-webkit-progress-value { + background-color: var(--tblr-primary); +} +.progress::-moz-progress-bar { + background-color: var(--tblr-primary); +} +.progress::-ms-fill { + background-color: var(--tblr-primary); + border: none; +} + +.progress-sm { + height: 0.25rem; +} + +/** +Progress bar + */ +.progress-bar { + height: 100%; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + position: absolute; + top: 0; + bottom: 0; + left: 0; + content: ""; + background-color: inherit; + will-change: left, right; +} +.progress-bar-indeterminate:before { + animation: progress-indeterminate 1.5s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-separated .progress-bar { + box-shadow: 0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface)); +} + +/** +Progressbg + */ +.progressbg { + position: relative; + padding: 0.25rem 0.5rem; + display: flex; +} + +.progressbg-text { + position: relative; + z-index: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.progressbg-progress { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 0; + height: 100%; + background: transparent; + pointer-events: none; +} + +.progressbg-value { + font-weight: var(--tblr-font-weight-medium); + margin-left: auto; + padding-left: 2rem; +} + +.ribbon { + --tblr-ribbon-margin: 0.25rem; + --tblr-ribbon-border-radius: var(--tblr-border-radius); + position: absolute; + top: 0.75rem; + right: calc(-1 * var(--tblr-ribbon-margin)); + z-index: 1; + padding: 0.25rem 0.75rem; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + line-height: 1; + color: #ffffff; + text-align: center; + text-transform: uppercase; + background: var(--tblr-primary); + border-color: var(--tblr-primary); + border-radius: var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2rem; + min-width: 2rem; +} +.ribbon:before { + position: absolute; + right: 0; + bottom: 100%; + width: 0; + height: 0; + content: ""; + filter: brightness(70%); + border: calc(var(--tblr-ribbon-margin) * 0.5) var(--tblr-border-style); + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} +.ribbon.bg-blue { + border-color: var(--tblr-blue); +} +.ribbon.bg-blue-lt { + border-color: rgba(var(--tblr-blue-rgb), 0.1) !important; +} +.ribbon.bg-azure { + border-color: var(--tblr-azure); +} +.ribbon.bg-azure-lt { + border-color: rgba(var(--tblr-azure-rgb), 0.1) !important; +} +.ribbon.bg-indigo { + border-color: var(--tblr-indigo); +} +.ribbon.bg-indigo-lt { + border-color: rgba(var(--tblr-indigo-rgb), 0.1) !important; +} +.ribbon.bg-purple { + border-color: var(--tblr-purple); +} +.ribbon.bg-purple-lt { + border-color: rgba(var(--tblr-purple-rgb), 0.1) !important; +} +.ribbon.bg-pink { + border-color: var(--tblr-pink); +} +.ribbon.bg-pink-lt { + border-color: rgba(var(--tblr-pink-rgb), 0.1) !important; +} +.ribbon.bg-red { + border-color: var(--tblr-red); +} +.ribbon.bg-red-lt { + border-color: rgba(var(--tblr-red-rgb), 0.1) !important; +} +.ribbon.bg-orange { + border-color: var(--tblr-orange); +} +.ribbon.bg-orange-lt { + border-color: rgba(var(--tblr-orange-rgb), 0.1) !important; +} +.ribbon.bg-yellow { + border-color: var(--tblr-yellow); +} +.ribbon.bg-yellow-lt { + border-color: rgba(var(--tblr-yellow-rgb), 0.1) !important; +} +.ribbon.bg-lime { + border-color: var(--tblr-lime); +} +.ribbon.bg-lime-lt { + border-color: rgba(var(--tblr-lime-rgb), 0.1) !important; +} +.ribbon.bg-green { + border-color: var(--tblr-green); +} +.ribbon.bg-green-lt { + border-color: rgba(var(--tblr-green-rgb), 0.1) !important; +} +.ribbon.bg-teal { + border-color: var(--tblr-teal); +} +.ribbon.bg-teal-lt { + border-color: rgba(var(--tblr-teal-rgb), 0.1) !important; +} +.ribbon.bg-cyan { + border-color: var(--tblr-cyan); +} +.ribbon.bg-cyan-lt { + border-color: rgba(var(--tblr-cyan-rgb), 0.1) !important; +} +.ribbon .icon { + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; +} + +.ribbon-top { + top: calc(-1 * var(--tblr-ribbon-margin)); + right: 0.75rem; + width: 2rem; + padding: 0.5rem 0; + border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); +} +.ribbon-top:before { + top: 0; + right: 100%; + bottom: auto; + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} +.ribbon-top.ribbon-start { + right: auto; + left: 0.75rem; +} +.ribbon-top.ribbon-start:before { + top: 0; + right: 100%; + left: auto; +} + +.ribbon-start { + right: auto; + left: calc(-1 * var(--tblr-ribbon-margin)); +} +.ribbon-start:before { + top: auto; + bottom: 100%; + left: 0; + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} + +.ribbon-bottom { + top: auto; + bottom: 0.75rem; +} + +.ribbon-bookmark { + padding-left: 0.25rem; + border-radius: 0 0 var(--tblr-ribbon-border-radius) 0; +} +.ribbon-bookmark:after { + position: absolute; + top: 0; + right: 100%; + display: block; + width: 0; + height: 0; + content: ""; + border: 1rem var(--tblr-border-style); + border-color: inherit; + border-right-width: 0; + border-left-color: transparent; + border-left-width: 0.5rem; +} +.ribbon-bookmark.ribbon-left { + padding-right: 0.5rem; +} +.ribbon-bookmark.ribbon-left:after { + right: auto; + left: 100%; + border-right-color: transparent; + border-right-width: 0.5rem; + border-left-width: 0; +} +.ribbon-bookmark.ribbon-top { + padding-right: 0; + padding-bottom: 0.25rem; + padding-left: 0; + border-radius: 0 var(--tblr-ribbon-border-radius) 0 0; +} +.ribbon-bookmark.ribbon-top:after { + top: 100%; + right: 0; + left: 0; + border-color: inherit; + border-width: 1rem; + border-top-width: 0; + border-bottom-color: transparent; + border-bottom-width: 0.5rem; +} + +/** +Markdown + */ +.markdown { + line-height: 1.7142857143; +} +.markdown > :first-child { + margin-top: 0; +} +.markdown > :last-child, +.markdown > :last-child .highlight { + margin-bottom: 0; +} +@media (min-width: 768px) { + .markdown > hr, .markdown > .hr { + margin-top: 3em; + margin-bottom: 3em; + } +} +.markdown > h1, .markdown > .h1, .markdown > h2, .markdown > .h2, .markdown > h3, .markdown > .h3, .markdown > h4, .markdown > .h4, .markdown > h5, .markdown > .h5, .markdown > h6, .markdown > .h6 { + font-weight: var(--tblr-font-weight-bold); +} +.markdown > blockquote { + font-size: 1rem; + margin: 1.5rem 0; + padding: 0.5rem 1.5rem; +} +.markdown > img { + border-radius: var(--tblr-border-radius); +} + +.placeholder:not(.btn):not([class*=bg-]) { + background-color: currentColor !important; +} +.placeholder:not(.avatar):not([class*=card-img-]) { + border-radius: var(--tblr-border-radius); +} + +.steps { + --tblr-steps-color: var(--tblr-primary); + --tblr-steps-inactive-color: var(--tblr-border-color); + --tblr-steps-dot-size: .5rem; + --tblr-steps-border-width: 2px; + display: flex; + flex-wrap: nowrap; + width: 100%; + padding: 0; + margin: 0; + list-style: none; +} + +.steps-blue { + --tblr-steps-color: var(--tblr-blue); +} + +.steps-azure { + --tblr-steps-color: var(--tblr-azure); +} + +.steps-indigo { + --tblr-steps-color: var(--tblr-indigo); +} + +.steps-purple { + --tblr-steps-color: var(--tblr-purple); +} + +.steps-pink { + --tblr-steps-color: var(--tblr-pink); +} + +.steps-red { + --tblr-steps-color: var(--tblr-red); +} + +.steps-orange { + --tblr-steps-color: var(--tblr-orange); +} + +.steps-yellow { + --tblr-steps-color: var(--tblr-yellow); +} + +.steps-lime { + --tblr-steps-color: var(--tblr-lime); +} + +.steps-green { + --tblr-steps-color: var(--tblr-green); +} + +.steps-teal { + --tblr-steps-color: var(--tblr-teal); +} + +.steps-cyan { + --tblr-steps-color: var(--tblr-cyan); +} + +.step-item { + position: relative; + flex: 1 1 0; + min-height: 1rem; + margin-top: 0; + color: inherit; + text-align: center; + cursor: default; + padding-top: calc(var(--tblr-steps-dot-size)); +} +a.step-item { + cursor: pointer; +} +a.step-item:hover { + color: inherit; +} + +.step-item:after, .step-item:before { + background: var(--tblr-steps-color); +} +.step-item:not(:last-child):after { + position: absolute; + left: 50%; + width: 100%; + content: ""; + transform: translateY(-50%); +} +.step-item:after { + top: calc(var(--tblr-steps-dot-size) * 0.5); + height: var(--tblr-steps-border-width); +} +.step-item:before { + content: ""; + position: absolute; + top: 0; + left: 50%; + z-index: 1; + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + transform: translateX(-50%); + color: var(--tblr-white); + width: var(--tblr-steps-dot-size); + height: var(--tblr-steps-dot-size); +} +.step-item.active { + font-weight: var(--tblr-font-weight-bold); +} +.step-item.active:after { + background: var(--tblr-steps-inactive-color); +} +.step-item.active ~ .step-item { + color: var(--tblr-disabled-color); +} +.step-item.active ~ .step-item:after, .step-item.active ~ .step-item:before { + background: var(--tblr-steps-inactive-color); +} + +.steps-counter { + --tblr-steps-dot-size: 1.5rem; + counter-reset: steps; +} +.steps-counter .step-item { + counter-increment: steps; +} +.steps-counter .step-item:before { + content: counter(steps); +} + +.steps-vertical { + --tblr-steps-dot-offset: 6px; + flex-direction: column; +} +.steps-vertical.steps-counter { + --tblr-steps-dot-offset: -2px; +} +.steps-vertical .step-item { + text-align: left; + padding-top: 0; + padding-left: calc(var(--tblr-steps-dot-size) + 1rem); + min-height: auto; +} +.steps-vertical .step-item:not(:first-child) { + margin-top: 1rem; +} +.steps-vertical .step-item:before { + top: var(--tblr-steps-dot-offset); + left: 0; + transform: translate(0, 0); +} +.steps-vertical .step-item:not(:last-child):after { + position: absolute; + content: ""; + transform: translateX(-50%); + top: var(--tblr-steps-dot-offset); + left: calc(var(--tblr-steps-dot-size) * 0.5); + width: var(--tblr-steps-border-width); + height: calc(100% + 1rem); +} + +@keyframes status-pulsate-main { + 40% { + transform: scale(1.25, 1.25); + } + 60% { + transform: scale(1.25, 1.25); + } +} +@keyframes status-pulsate-secondary { + 10% { + transform: scale(1, 1); + } + 30% { + transform: scale(3, 3); + } + 80% { + transform: scale(3, 3); + } + 100% { + transform: scale(1, 1); + } +} +@keyframes status-pulsate-tertiary { + 25% { + transform: scale(1, 1); + } + 80% { + transform: scale(3, 3); + opacity: 0; + } + 100% { + transform: scale(3, 3); + opacity: 0; + } +} +.status { + --tblr-status-height: 1.5rem; + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; + display: inline-flex; + align-items: center; + height: var(--tblr-status-height); + padding: 0.25rem 0.75rem; + gap: 0.5rem; + color: var(--tblr-status-color); + background: rgba(var(--tblr-status-color-rgb), 0.1); + font-size: 0.875rem; + text-transform: none; + letter-spacing: normal; + border-radius: 100rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + margin: 0; +} +.status .status-dot { + background: var(--tblr-status-color); +} +.status .icon { + font-size: 1.25rem; +} + +.status-lite { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + background: transparent !important; + color: var(--tblr-body-color) !important; +} + +.status-primary { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-secondary { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-success { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-info { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-warning { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-danger { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-light { + --tblr-status-color: #fcfdfe; + --tblr-status-color-rgb: 252, 253, 254; +} + +.status-dark { + --tblr-status-color: #182433; + --tblr-status-color-rgb: 24, 36, 51; +} + +.status-muted { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-blue { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-azure { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-indigo { + --tblr-status-color: #4263eb; + --tblr-status-color-rgb: 66, 99, 235; +} + +.status-purple { + --tblr-status-color: #ae3ec9; + --tblr-status-color-rgb: 174, 62, 201; +} + +.status-pink { + --tblr-status-color: #d6336c; + --tblr-status-color-rgb: 214, 51, 108; +} + +.status-red { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-orange { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-yellow { + --tblr-status-color: #f59f00; + --tblr-status-color-rgb: 245, 159, 0; +} + +.status-lime { + --tblr-status-color: #74b816; + --tblr-status-color-rgb: 116, 184, 22; +} + +.status-green { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-teal { + --tblr-status-color: #0ca678; + --tblr-status-color-rgb: 12, 166, 120; +} + +.status-cyan { + --tblr-status-color: #17a2b8; + --tblr-status-color-rgb: 23, 162, 184; +} + +.status-facebook { + --tblr-status-color: #1877f2; + --tblr-status-color-rgb: 24, 119, 242; +} + +.status-twitter { + --tblr-status-color: #1da1f2; + --tblr-status-color-rgb: 29, 161, 242; +} + +.status-linkedin { + --tblr-status-color: #0a66c2; + --tblr-status-color-rgb: 10, 102, 194; +} + +.status-google { + --tblr-status-color: #dc4e41; + --tblr-status-color-rgb: 220, 78, 65; +} + +.status-youtube { + --tblr-status-color: #ff0000; + --tblr-status-color-rgb: 255, 0, 0; +} + +.status-vimeo { + --tblr-status-color: #1ab7ea; + --tblr-status-color-rgb: 26, 183, 234; +} + +.status-dribbble { + --tblr-status-color: #ea4c89; + --tblr-status-color-rgb: 234, 76, 137; +} + +.status-github { + --tblr-status-color: #181717; + --tblr-status-color-rgb: 24, 23, 23; +} + +.status-instagram { + --tblr-status-color: #e4405f; + --tblr-status-color-rgb: 228, 64, 95; +} + +.status-pinterest { + --tblr-status-color: #bd081c; + --tblr-status-color-rgb: 189, 8, 28; +} + +.status-vk { + --tblr-status-color: #6383a8; + --tblr-status-color-rgb: 99, 131, 168; +} + +.status-rss { + --tblr-status-color: #ffa500; + --tblr-status-color-rgb: 255, 165, 0; +} + +.status-flickr { + --tblr-status-color: #0063dc; + --tblr-status-color-rgb: 0, 99, 220; +} + +.status-bitbucket { + --tblr-status-color: #0052cc; + --tblr-status-color-rgb: 0, 82, 204; +} + +.status-tabler { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-dot { + --tblr-status-dot-color: var(--tblr-status-color, #667382); + --tblr-status-size: 0.5rem; + position: relative; + display: inline-block; + width: var(--tblr-status-size); + height: var(--tblr-status-size); + background: var(--tblr-status-dot-color); + border-radius: 100rem; +} + +.status-dot-animated:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background: inherit; + border-radius: inherit; + opacity: 0.6; + animation: 1s linear 2s backwards infinite status-pulsate-tertiary; +} + +.status-indicator { + --tblr-status-indicator-size: 2.5rem; + --tblr-status-indicator-color: var(--tblr-status-color, #667382); + display: block; + position: relative; + width: var(--tblr-status-indicator-size); + height: var(--tblr-status-indicator-size); +} + +.status-indicator-circle { + --tblr-status-circle-size: .75rem; + position: absolute; + left: 50%; + top: 50%; + margin: calc(var(--tblr-status-circle-size) / -2) 0 0 calc(var(--tblr-status-circle-size) / -2); + width: var(--tblr-status-circle-size); + height: var(--tblr-status-circle-size); + border-radius: 100rem; + background: var(--tblr-status-color); +} +.status-indicator-circle:nth-child(1) { + z-index: 3; +} +.status-indicator-circle:nth-child(2) { + z-index: 2; + opacity: 0.1; +} +.status-indicator-circle:nth-child(3) { + z-index: 1; + opacity: 0.3; +} + +.status-indicator-animated .status-indicator-circle:nth-child(1) { + animation: 2s linear 1s infinite backwards status-pulsate-main; +} +.status-indicator-animated .status-indicator-circle:nth-child(2) { + animation: 2s linear 1s infinite backwards status-pulsate-secondary; +} +.status-indicator-animated .status-indicator-circle:nth-child(3) { + animation: 2s linear 1s infinite backwards status-pulsate-tertiary; +} + +.switch-icon { + display: inline-block; + line-height: 1; + border: 0; + padding: 0; + background: transparent; + width: 1.25rem; + height: 1.25rem; + vertical-align: bottom; + position: relative; + cursor: pointer; +} +.switch-icon.disabled { + pointer-events: none; + opacity: 0.4; +} +.switch-icon:focus { + outline: none; +} +.switch-icon svg { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a, +.switch-icon .switch-icon-b { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a { + opacity: 1; +} +.switch-icon .switch-icon-b { + position: absolute; + top: 0; + left: 0; + opacity: 0; +} +.switch-icon.active .switch-icon-a { + opacity: 0; +} +.switch-icon.active .switch-icon-b { + opacity: 1; +} + +.switch-icon-fade .switch-icon-a, +.switch-icon-fade .switch-icon-b { + transition: opacity 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-fade .switch-icon-a, + .switch-icon-fade .switch-icon-b { + transition: none; + } +} + +.switch-icon-scale .switch-icon-a, +.switch-icon-scale .switch-icon-b { + transition: opacity 0.5s, transform 0s 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale .switch-icon-a, + .switch-icon-scale .switch-icon-b { + transition: none; + } +} +.switch-icon-scale .switch-icon-b { + transform: scale(1.5); +} +.switch-icon-scale.active .switch-icon-a, +.switch-icon-scale.active .switch-icon-b { + transition: opacity 0s, transform 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale.active .switch-icon-a, + .switch-icon-scale.active .switch-icon-b { + transition: none; + } +} +.switch-icon-scale.active .switch-icon-b { + transform: scale(1); +} + +.switch-icon-flip { + perspective: 10em; +} +.switch-icon-flip .switch-icon-a, +.switch-icon-flip .switch-icon-b { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform-style: preserve-3d; + transition: opacity 0s 0.2s, transform 0.4s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-flip .switch-icon-a, + .switch-icon-flip .switch-icon-b { + transition: none; + } +} +.switch-icon-flip .switch-icon-a { + opacity: 1; + transform: rotateY(0deg); +} +.switch-icon-flip .switch-icon-b { + opacity: 1; + transform: rotateY(-180deg); +} +.switch-icon-flip.active .switch-icon-a { + opacity: 1; + transform: rotateY(180deg); +} +.switch-icon-flip.active .switch-icon-b { + opacity: 1; + transform: rotateY(0deg); +} + +.switch-icon-slide-up, +.switch-icon-slide-left, +.switch-icon-slide-right, +.switch-icon-slide-down { + overflow: hidden; +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-down .switch-icon-a, +.switch-icon-slide-down .switch-icon-b { + transition: opacity 0.3s, transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-slide-up .switch-icon-a, + .switch-icon-slide-up .switch-icon-b, + .switch-icon-slide-left .switch-icon-a, + .switch-icon-slide-left .switch-icon-b, + .switch-icon-slide-right .switch-icon-a, + .switch-icon-slide-right .switch-icon-b, + .switch-icon-slide-down .switch-icon-a, + .switch-icon-slide-down .switch-icon-b { + transition: none; + } +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-down .switch-icon-b { + transform: translateY(100%); +} +.switch-icon-slide-up.active .switch-icon-a, +.switch-icon-slide-left.active .switch-icon-a, +.switch-icon-slide-right.active .switch-icon-a, +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(-100%); +} +.switch-icon-slide-up.active .switch-icon-b, +.switch-icon-slide-left.active .switch-icon-b, +.switch-icon-slide-right.active .switch-icon-b, +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.switch-icon-slide-left .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-left .switch-icon-b { + transform: translateX(100%); +} +.switch-icon-slide-left.active .switch-icon-a { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-right .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-right .switch-icon-b { + transform: translateX(-100%); +} +.switch-icon-slide-right.active .switch-icon-a { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-down .switch-icon-b { + transform: translateY(-100%); +} +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(100%); +} +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.table thead th, .markdown > table thead th { + color: var(--tblr-secondary); + background: var(--tblr-bg-surface-tertiary); + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + white-space: nowrap; +} +@media print { + .table thead th, .markdown > table thead th { + background: transparent; + } +} + +.table-responsive .table, .table-responsive .markdown > table { + margin-bottom: 0; +} +.table-responsive + .card-footer { + border-top: 0; +} + +.table-transparent thead th { + background: transparent; +} + +.table-nowrap > :not(caption) > * > * { + white-space: nowrap; +} + +.table-vcenter > :not(caption) > * > * { + vertical-align: middle; +} + +.table-center > :not(caption) > * > * { + text-align: center; +} + +.td-truncate { + max-width: 1px; + width: 100%; +} + +.table-mobile { + display: block; +} +.table-mobile thead { + display: none; +} +.table-mobile tbody, +.table-mobile tr { + display: flex; + flex-direction: column; +} +.table-mobile td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; +} +.table-mobile td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; +} +.table-mobile tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.table-mobile .btn { + display: block; +} +@media (max-width: 575.98px) { + .table-mobile-sm { + display: block; + } + .table-mobile-sm thead { + display: none; + } + .table-mobile-sm tbody, + .table-mobile-sm tr { + display: flex; + flex-direction: column; + } + .table-mobile-sm td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-sm td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-sm tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-sm .btn { + display: block; + } +} +@media (max-width: 767.98px) { + .table-mobile-md { + display: block; + } + .table-mobile-md thead { + display: none; + } + .table-mobile-md tbody, + .table-mobile-md tr { + display: flex; + flex-direction: column; + } + .table-mobile-md td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-md td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-md tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-md .btn { + display: block; + } +} +@media (max-width: 991.98px) { + .table-mobile-lg { + display: block; + } + .table-mobile-lg thead { + display: none; + } + .table-mobile-lg tbody, + .table-mobile-lg tr { + display: flex; + flex-direction: column; + } + .table-mobile-lg td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-lg td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-lg tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-lg .btn { + display: block; + } +} +@media (max-width: 1199.98px) { + .table-mobile-xl { + display: block; + } + .table-mobile-xl thead { + display: none; + } + .table-mobile-xl tbody, + .table-mobile-xl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xl .btn { + display: block; + } +} +@media (max-width: 1399.98px) { + .table-mobile-xxl { + display: block; + } + .table-mobile-xxl thead { + display: none; + } + .table-mobile-xxl tbody, + .table-mobile-xxl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xxl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xxl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xxl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xxl .btn { + display: block; + } +} + +/** +Table sort + */ +.table-sort { + font: inherit; + color: inherit; + text-transform: inherit; + letter-spacing: inherit; + border: 0; + background: inherit; + display: block; + width: 100%; + text-align: inherit; + transition: color 0.3s; + margin: -0.5rem -0.75rem; + padding: 0.5rem 0.75rem; +} +@media (prefers-reduced-motion: reduce) { + .table-sort { + transition: none; + } +} +.table-sort:hover, .table-sort.asc, .table-sort.desc { + color: var(--tblr-body-color); +} +.table-sort:after { + content: ""; + display: inline-flex; + width: 1rem; + height: 1rem; + vertical-align: bottom; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); + background: currentColor; + margin-left: 0.25rem; +} +.table-sort.asc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} +.table-sort.desc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} + +.table-borderless thead th { + background: transparent; +} + +.tag { + --tblr-tag-height: 1.5rem; + border: 1px solid var(--tblr-border-color); + display: inline-flex; + align-items: center; + height: var(--tblr-tag-height); + border-radius: var(--tblr-border-radius); + padding: 0 0.5rem; + background: var(--tblr-bg-surface); + box-shadow: var(--tblr-box-shadow-input); + gap: 0.5rem; +} +.tag .btn-close { + margin-right: -0.25rem; + margin-left: -0.125rem; + padding: 0; + width: 1rem; + height: 1rem; + font-size: 0.5rem; +} + +.tag-badge { + --tblr-badge-font-size: 0.625rem; + --tblr-badge-padding-x: .25rem; + --tblr-badge-padding-y: .125rem; + margin-right: -0.25rem; +} + +.tag-avatar, +.tag-flag, +.tag-payment, +.tag-icon, +.tag-check { + margin-left: -0.25rem; +} + +.tag-icon { + color: var(--tblr-secondary); + margin-right: -0.125rem; + width: 1rem; + height: 1rem; +} + +.tag-check { + width: 1rem; + height: 1rem; + background-size: 1rem; +} + +.tags-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.toast { + background: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.toast .toast-header { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.toast button[data-bs-dismiss=toast] { + outline: none; +} + +.toast-primary { + --tblr-toast-color: #0054a6; +} + +.toast-secondary { + --tblr-toast-color: #667382; +} + +.toast-success { + --tblr-toast-color: #2fb344; +} + +.toast-info { + --tblr-toast-color: #4299e1; +} + +.toast-warning { + --tblr-toast-color: #f76707; +} + +.toast-danger { + --tblr-toast-color: #d63939; +} + +.toast-light { + --tblr-toast-color: #fcfdfe; +} + +.toast-dark { + --tblr-toast-color: #182433; +} + +.toast-muted { + --tblr-toast-color: #667382; +} + +.toast-blue { + --tblr-toast-color: #0054a6; +} + +.toast-azure { + --tblr-toast-color: #4299e1; +} + +.toast-indigo { + --tblr-toast-color: #4263eb; +} + +.toast-purple { + --tblr-toast-color: #ae3ec9; +} + +.toast-pink { + --tblr-toast-color: #d6336c; +} + +.toast-red { + --tblr-toast-color: #d63939; +} + +.toast-orange { + --tblr-toast-color: #f76707; +} + +.toast-yellow { + --tblr-toast-color: #f59f00; +} + +.toast-lime { + --tblr-toast-color: #74b816; +} + +.toast-green { + --tblr-toast-color: #2fb344; +} + +.toast-teal { + --tblr-toast-color: #0ca678; +} + +.toast-cyan { + --tblr-toast-color: #17a2b8; +} + +.toast-facebook { + --tblr-toast-color: #1877f2; +} + +.toast-twitter { + --tblr-toast-color: #1da1f2; +} + +.toast-linkedin { + --tblr-toast-color: #0a66c2; +} + +.toast-google { + --tblr-toast-color: #dc4e41; +} + +.toast-youtube { + --tblr-toast-color: #ff0000; +} + +.toast-vimeo { + --tblr-toast-color: #1ab7ea; +} + +.toast-dribbble { + --tblr-toast-color: #ea4c89; +} + +.toast-github { + --tblr-toast-color: #181717; +} + +.toast-instagram { + --tblr-toast-color: #e4405f; +} + +.toast-pinterest { + --tblr-toast-color: #bd081c; +} + +.toast-vk { + --tblr-toast-color: #6383a8; +} + +.toast-rss { + --tblr-toast-color: #ffa500; +} + +.toast-flickr { + --tblr-toast-color: #0063dc; +} + +.toast-bitbucket { + --tblr-toast-color: #0052cc; +} + +.toast-tabler { + --tblr-toast-color: #0054a6; +} + +.toolbar { + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + margin: 0 -0.5rem; +} +.toolbar > * { + margin: 0 0.5rem; +} + +.tracking { + --tblr-tracking-height: 1.5rem; + --tblr-tracking-gap-width: 0.125rem; + --tblr-tracking-block-border-radius: var(--tblr-border-radius); + display: flex; + gap: var(--tblr-tracking-gap-width); +} + +.tracking-squares { + --tblr-tracking-block-border-radius: var(--tblr-border-radius-sm); +} +.tracking-squares .tracking-block { + height: auto; +} +.tracking-squares .tracking-block:before { + content: ""; + display: block; + padding-top: 100%; +} + +.tracking-block { + flex: 1; + border-radius: var(--tblr-tracking-block-border-radius); + height: var(--tblr-tracking-height); + min-width: 0.25rem; + background: var(--tblr-border-color); +} + +.timeline { + --tblr-timeline-icon-size: 2.5rem; + position: relative; + list-style: none; + padding: 0; +} + +.timeline-event { + position: relative; +} +.timeline-event:not(:last-child) { + margin-bottom: var(--tblr-page-padding); +} +.timeline-event:not(:last-child):before { + content: ""; + position: absolute; + top: var(--tblr-timeline-icon-size); + left: calc(var(--tblr-timeline-icon-size) / 2); + bottom: calc(-1 * var(--tblr-page-padding)); + width: var(--tblr-border-width); + background-color: var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.timeline-event-icon { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: var(--tblr-timeline-icon-size, 2.5rem); + height: var(--tblr-timeline-icon-size, 2.5rem); + background: var(--tblr-gray-200); + color: var(--tblr-secondary); + border-radius: var(--tblr-border-radius); + z-index: 5; +} + +.timeline-event-card { + margin-left: calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding)); +} + +.timeline-simple .timeline-event-icon { + display: none; +} +.timeline-simple .timeline-event-card { + margin-left: 0; +} + +/** +Horizontal rules + */ +/** +Hr text + */ +.hr-text { + display: flex; + align-items: center; + margin: 2rem 0; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + height: 1px; +} +.hr-text:after, .hr-text:before { + flex: 1 1 auto; + height: 1px; + background-color: var(--tblr-border-color); +} +.hr-text:before { + content: ""; + margin-right: 0.5rem; +} +.hr-text:after { + content: ""; + margin-left: 0.5rem; +} +.hr-text > *:first-child { + padding-right: 0.5rem; + padding-left: 0; + color: var(--tblr-secondary); +} +.hr-text.hr-text-left:before { + content: none; +} +.hr-text.hr-text-left > *:first-child { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.hr-text.hr-text-right:before { + content: ""; +} +.hr-text.hr-text-right:after { + content: none; +} +.hr-text.hr-text-right > *:first-child { + padding-right: 0; + padding-left: 0.5rem; +} +.card > .hr-text { + margin: 0; +} + +.hr-text-spaceless { + margin: -0.5rem 0; +} + +.lead { + line-height: 1.4; +} + +a { + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a, +.h1 a, +.h2 a, +.h3 a, +.h4 a, +.h5 a, +.h6 a { + color: inherit; +} +h1 a:hover, +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +h6 a:hover, +.h1 a:hover, +.h2 a:hover, +.h3 a:hover, +.h4 a:hover, +.h5 a:hover, +.h6 a:hover { + color: inherit; +} + +h1, +.h1 { + font-size: var(--tblr-font-size-h1); + line-height: var(--tblr-line-height-h1); +} + +h2, +.h2 { + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h2); +} + +h3, +.h3 { + font-size: var(--tblr-font-size-h3); + line-height: var(--tblr-line-height-h3); +} + +h4, +.h4 { + font-size: var(--tblr-font-size-h4); + line-height: var(--tblr-line-height-h4); +} + +h5, +.h5 { + font-size: var(--tblr-font-size-h5); + line-height: var(--tblr-line-height-h5); +} + +h6, +.h6 { + font-size: var(--tblr-font-size-h6); + line-height: var(--tblr-line-height-h6); +} + +strong, +.strong, +b { + font-weight: var(--tblr-font-weight-bold); +} + +blockquote { + padding-left: 1rem; + border-left: 2px var(--tblr-border-style) var(--tblr-border-color); +} +blockquote p { + margin-bottom: 1rem; +} +blockquote cite { + display: block; + text-align: right; +} +blockquote cite:before { + content: "— "; +} + +ul, ol { + padding-left: 1.5rem; +} + +hr, .hr { + margin: 2rem 0; +} + +dl dd:last-child { + margin-bottom: 0; +} + +pre { + padding: 1rem; + background: var(--tblr-bg-surface-dark); + color: var(--tblr-light); + border-radius: var(--tblr-border-radius); +} +pre code { + background: transparent; +} + +code { + background: var(--tblr-code-bg); + padding: 2px 4px; + border-radius: var(--tblr-border-radius); +} + +kbd, +.kbd { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + display: inline-block; + box-sizing: border-box; + max-width: 100%; + font-size: var(--tblr-font-size-h5); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + vertical-align: baseline; + border-radius: var(--tblr-border-radius); +} + +img { + max-width: 100%; +} + +.list-unstyled { + margin-left: 0; +} + +/** +Selection + */ +::-moz-selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} +::selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} + +/** +Links + */ +[class^=link-].disabled, [class*=" link-"].disabled { + color: var(--tblr-disabled-color); + pointer-events: none; +} + +/** +Subheader + */ +.subheader { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.chart { + display: block; + min-height: 10rem; +} +.chart text { + font-family: inherit; +} + +.chart-sm { + height: 2.5rem; +} + +.chart-lg { + height: 15rem; +} + +.chart-square { + height: 5.75rem; +} + +/** +Chart sparkline + */ +.chart-sparkline { + position: relative; + width: 4rem; + height: 2.5rem; + line-height: 1; + min-height: 0 !important; +} + +.chart-sparkline-sm { + height: 1.5rem; +} + +.chart-sparkline-square { + width: 2.5rem; +} + +.chart-sparkline-wide { + width: 6rem; +} + +.chart-sparkline-label { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.625rem; +} +.chart-sparkline-label .icon { + width: 1rem; + height: 1rem; + font-size: 1rem; +} + +.offcanvas-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14); +} + +.offcanvas-footer { + padding: 1.5rem 1.5rem; +} + +.offcanvas-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.5rem; +} + +.offcanvas-narrow { + width: 20rem; +} + +.chat-bubbles { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.chat-bubble { + background: var(--tblr-bg-surface-secondary); + border-radius: var(--tblr-border-radius-lg); + padding: 1rem; + position: relative; +} + +.chat-bubble-me { + background-color: var(--tblr-primary-lt); + box-shadow: none; +} + +.chat-bubble-title { + margin-bottom: 0.25rem; +} + +.chat-bubble-author { + font-weight: 600; +} + +.chat-bubble-date { + color: var(--tblr-secondary); +} + +.chat-bubble-body > *:last-child { + margin-bottom: 0; +} + +.bg-white-overlay { + color: #ffffff; + background-color: rgba(252, 253, 254, 0.24); +} + +.bg-dark-overlay { + color: #ffffff; + background-color: rgba(24, 36, 51, 0.24); +} + +.bg-cover { + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-primary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-primary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-primary { + border-color: #0054a6 !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-secondary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-secondary { + border-color: #667382 !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-success-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-success { + border-color: #2fb344 !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-info-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-info { + border-color: #4299e1 !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-warning-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-warning { + border-color: #f76707 !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-danger-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-danger { + border-color: #d63939 !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-light-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-light { + border-color: #fcfdfe !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dark-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dark { + border-color: #182433 !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-muted-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-muted { + border-color: #667382 !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-blue-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-blue { + border-color: #0054a6 !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-azure-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-azure { + border-color: #4299e1 !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-indigo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-indigo { + border-color: #4263eb !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-purple-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-purple { + border-color: #ae3ec9 !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pink-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pink { + border-color: #d6336c !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-red-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-red { + border-color: #d63939 !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-orange-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-orange { + border-color: #f76707 !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-yellow-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-yellow { + border-color: #f59f00 !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-lime-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-lime { + border-color: #74b816 !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-green-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-green { + border-color: #2fb344 !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-teal-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-teal { + border-color: #0ca678 !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-cyan-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-cyan { + border-color: #17a2b8 !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-facebook-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-facebook { + border-color: #1877f2 !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-twitter-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-twitter { + border-color: #1da1f2 !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-linkedin-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-linkedin { + border-color: #0a66c2 !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-google-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-google { + border-color: #dc4e41 !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-youtube-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-youtube { + border-color: #ff0000 !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vimeo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vimeo { + border-color: #1ab7ea !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dribbble-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dribbble { + border-color: #ea4c89 !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-github-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-github { + border-color: #181717 !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-instagram-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-instagram { + border-color: #e4405f !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pinterest-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pinterest { + border-color: #bd081c !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vk-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vk { + border-color: #6383a8 !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-rss-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-rss { + border-color: #ffa500 !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-flickr-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-flickr { + border-color: #0063dc !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-bitbucket-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-bitbucket { + border-color: #0052cc !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-tabler-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-tabler { + border-color: #0054a6 !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-white-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-white { + border-color: #ffffff !important; +} + +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-primary-fg { + color: var(--tblr-primary-fg) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary-fg { + color: var(--tblr-secondary-fg) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success-fg { + color: var(--tblr-success-fg) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info-fg { + color: var(--tblr-info-fg) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning-fg { + color: var(--tblr-warning-fg) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger-fg { + color: var(--tblr-danger-fg) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light-fg { + color: var(--tblr-light-fg) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark-fg { + color: var(--tblr-dark-fg) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted-fg { + color: var(--tblr-muted-fg) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-blue-fg { + color: var(--tblr-blue-fg) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure-fg { + color: var(--tblr-azure-fg) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo-fg { + color: var(--tblr-indigo-fg) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple-fg { + color: var(--tblr-purple-fg) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink-fg { + color: var(--tblr-pink-fg) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red-fg { + color: var(--tblr-red-fg) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange-fg { + color: var(--tblr-orange-fg) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow-fg { + color: var(--tblr-yellow-fg) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime-fg { + color: var(--tblr-lime-fg) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green-fg { + color: var(--tblr-green-fg) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal-fg { + color: var(--tblr-teal-fg) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan-fg { + color: var(--tblr-cyan-fg) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook-fg { + color: var(--tblr-facebook-fg) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter-fg { + color: var(--tblr-twitter-fg) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin-fg { + color: var(--tblr-linkedin-fg) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google-fg { + color: var(--tblr-google-fg) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube-fg { + color: var(--tblr-youtube-fg) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo-fg { + color: var(--tblr-vimeo-fg) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble-fg { + color: var(--tblr-dribbble-fg) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github-fg { + color: var(--tblr-github-fg) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram-fg { + color: var(--tblr-instagram-fg) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest-fg { + color: var(--tblr-pinterest-fg) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk-fg { + color: var(--tblr-vk-fg) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss-fg { + color: var(--tblr-rss-fg) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr-fg { + color: var(--tblr-flickr-fg) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket-fg { + color: var(--tblr-bitbucket-fg) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler-fg { + color: var(--tblr-tabler-fg) !important; +} + +.bg-gray-50 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-50-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-50-fg { + color: #182433 !important; +} + +.bg-gray-100 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-100-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-100-fg { + color: #182433 !important; +} + +.bg-gray-200 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-200-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-200-fg { + color: #182433 !important; +} + +.bg-gray-300 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-300-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-300-fg { + color: #182433 !important; +} + +.bg-gray-400 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-400-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-400-fg { + color: #fcfdfe !important; +} + +.bg-gray-500 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-500-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-500-fg { + color: #fcfdfe !important; +} + +.bg-gray-600 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-600-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-600-fg { + color: #fcfdfe !important; +} + +.bg-gray-700 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-700-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-700-fg { + color: #fcfdfe !important; +} + +.bg-gray-800 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-800-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-800-fg { + color: #fcfdfe !important; +} + +.bg-gray-900 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-900-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-900-fg { + color: #fcfdfe !important; +} + +/* +Scrollable +*/ +.scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.scrollable.hover { + overflow-y: hidden; +} +.scrollable.hover > * { + margin-top: -1px; +} +.scrollable.hover:hover, .scrollable.hover:focus, .scrollable.hover:active { + overflow: visible; + overflow-y: auto; +} +.touch .scrollable { + overflow-y: auto !important; +} + +.scroll-x, +.scroll-y { + overflow: hidden; + -webkit-overflow-scrolling: touch; +} + +.scroll-y { + overflow-y: auto; +} + +.scroll-x { + overflow-x: auto; +} + +.no-scroll { + overflow: hidden; +} + +.w-0 { + width: 0 !important; +} + +.h-0 { + height: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.w-auto { + width: auto !important; +} + +.h-auto { + height: auto !important; +} + +.w-px { + width: 1px !important; +} + +.h-px { + height: 1px !important; +} + +.w-full { + width: 100% !important; +} + +.h-full { + height: 100% !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-30 { + opacity: 0.3 !important; +} + +.opacity-35 { + opacity: 0.35 !important; +} + +.opacity-40 { + opacity: 0.4 !important; +} + +.opacity-45 { + opacity: 0.45 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-55 { + opacity: 0.55 !important; +} + +.opacity-60 { + opacity: 0.6 !important; +} + +.opacity-65 { + opacity: 0.65 !important; +} + +.opacity-70 { + opacity: 0.7 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-80 { + opacity: 0.8 !important; +} + +.opacity-85 { + opacity: 0.85 !important; +} + +.opacity-90 { + opacity: 0.9 !important; +} + +.opacity-95 { + opacity: 0.95 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.hover-shadow-sm:hover { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.hover-shadow:hover { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.hover-shadow-lg:hover { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.hover-shadow-none:hover { + box-shadow: none !important; +} + +/** +Antialiasing + */ +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} \ No newline at end of file diff --git a/public/css/tabler.min.css b/public/css/tabler.min.css index 714fbcf..c79e375 100644 --- a/public/css/tabler.min.css +++ b/public/css/tabler.min.css @@ -1,28577 +1,13 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna * Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) */ -@charset "UTF-8"; - - -.form-label:focus, -.form-control:focus { - outline: none; - box-shadow: none; -} - -:root, -[data-bs-theme=light] { - --tblr-blue: #206bc4; - --tblr-indigo: #4263eb; - --tblr-purple: #ae3ec9; - --tblr-pink: #d6336c; - --tblr-red: #d63939; - --tblr-orange: #f76707; - --tblr-yellow: #f59f00; - --tblr-green: #2fb344; - --tblr-teal: #0ca678; - --tblr-cyan: #17a2b8; - --tblr-black: #000000; - --tblr-white: #ffffff; - --tblr-gray: #667382; - --tblr-gray-dark: #182433; - --tblr-gray-100: #f6f8fb; - --tblr-gray-200: #eef1f4; - --tblr-gray-300: #dadfe5; - --tblr-gray-400: #bbc3cd; - --tblr-gray-500: #929dab; - --tblr-gray-600: #667382; - --tblr-gray-700: #3a4859; - --tblr-gray-800: #182433; - --tblr-gray-900: #040a11; - --tblr-primary: #206bc4; - --tblr-secondary: #667382; - --tblr-success: #2fb344; - --tblr-info: #4299e1; - --tblr-warning: #f76707; - --tblr-danger: #d63939; - --tblr-light: #fcfdfe; - --tblr-dark: #182433; - --tblr-muted: #667382; - --tblr-blue: #206bc4; - --tblr-azure: #4299e1; - --tblr-indigo: #4263eb; - --tblr-purple: #ae3ec9; - --tblr-pink: #d6336c; - --tblr-red: #d63939; - --tblr-orange: #f76707; - --tblr-yellow: #f59f00; - --tblr-lime: #74b816; - --tblr-green: #2fb344; - --tblr-teal: #0ca678; - --tblr-cyan: #17a2b8; - --tblr-facebook: #1877f2; - --tblr-twitter: #1da1f2; - --tblr-linkedin: #0a66c2; - --tblr-google: #dc4e41; - --tblr-youtube: #ff0000; - --tblr-vimeo: #1ab7ea; - --tblr-dribbble: #ea4c89; - --tblr-github: #181717; - --tblr-instagram: #e4405f; - --tblr-pinterest: #bd081c; - --tblr-vk: #6383a8; - --tblr-rss: #ffa500; - --tblr-flickr: #0063dc; - --tblr-bitbucket: #0052cc; - --tblr-tabler: #206bc4; - --tblr-primary-rgb: 32, 107, 196; - --tblr-secondary-rgb: 102, 115, 130; - --tblr-success-rgb: 47, 179, 68; - --tblr-info-rgb: 66, 153, 225; - --tblr-warning-rgb: 247, 103, 7; - --tblr-danger-rgb: 214, 57, 57; - --tblr-light-rgb: 252, 253, 254; - --tblr-dark-rgb: 24, 36, 51; - --tblr-muted-rgb: 102, 115, 130; - --tblr-blue-rgb: 32, 107, 196; - --tblr-azure-rgb: 66, 153, 225; - --tblr-indigo-rgb: 66, 99, 235; - --tblr-purple-rgb: 174, 62, 201; - --tblr-pink-rgb: 214, 51, 108; - --tblr-red-rgb: 214, 57, 57; - --tblr-orange-rgb: 247, 103, 7; - --tblr-yellow-rgb: 245, 159, 0; - --tblr-lime-rgb: 116, 184, 22; - --tblr-green-rgb: 47, 179, 68; - --tblr-teal-rgb: 12, 166, 120; - --tblr-cyan-rgb: 23, 162, 184; - --tblr-facebook-rgb: 24, 119, 242; - --tblr-twitter-rgb: 29, 161, 242; - --tblr-linkedin-rgb: 10, 102, 194; - --tblr-google-rgb: 220, 78, 65; - --tblr-youtube-rgb: 255, 0, 0; - --tblr-vimeo-rgb: 26, 183, 234; - --tblr-dribbble-rgb: 234, 76, 137; - --tblr-github-rgb: 24, 23, 23; - --tblr-instagram-rgb: 228, 64, 95; - --tblr-pinterest-rgb: 189, 8, 28; - --tblr-vk-rgb: 99, 131, 168; - --tblr-rss-rgb: 255, 165, 0; - --tblr-flickr-rgb: 0, 99, 220; - --tblr-bitbucket-rgb: 0, 82, 204; - --tblr-tabler-rgb: 32, 107, 196; - --tblr-primary-text-emphasis: #0d2b4e; - --tblr-secondary-text-emphasis: #292e34; - --tblr-success-text-emphasis: #13481b; - --tblr-info-text-emphasis: #1a3d5a; - --tblr-warning-text-emphasis: #632903; - --tblr-danger-text-emphasis: #561717; - --tblr-light-text-emphasis: #3a4859; - --tblr-dark-text-emphasis: #3a4859; - --tblr-primary-bg-subtle: #d2e1f3; - --tblr-secondary-bg-subtle: #e0e3e6; - --tblr-success-bg-subtle: #d5f0da; - --tblr-info-bg-subtle: #d9ebf9; - --tblr-warning-bg-subtle: #fde1cd; - --tblr-danger-bg-subtle: #f7d7d7; - --tblr-light-bg-subtle: #fbfcfd; - --tblr-dark-bg-subtle: #bbc3cd; - --tblr-primary-border-subtle: #a6c4e7; - --tblr-secondary-border-subtle: #c2c7cd; - --tblr-success-border-subtle: #ace1b4; - --tblr-info-border-subtle: #b3d6f3; - --tblr-warning-border-subtle: #fcc29c; - --tblr-danger-border-subtle: #efb0b0; - --tblr-light-border-subtle: #eef1f4; - --tblr-dark-border-subtle: #929dab; - --tblr-white-rgb: 255, 255, 255; - --tblr-black-rgb: 0, 0, 0; - --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; - --tblr-font-monospace: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; - --tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --tblr-body-font-family: var(--tblr-font-sans-serif); - --tblr-body-font-size: 0.875rem; - --tblr-body-font-weight: 400; - --tblr-body-line-height: 1.4285714286; - --tblr-body-color: #182433; - --tblr-body-color-rgb: 24, 36, 51; - --tblr-body-bg: #f6f8fb; - --tblr-body-bg-rgb: 246, 248, 251; - --tblr-emphasis-color: #182433; - --tblr-emphasis-color-rgb: 24, 36, 51; - --tblr-secondary-color: rgba(24, 36, 51, 0.75); - --tblr-secondary-color-rgb: 24, 36, 51; - --tblr-secondary-bg: #eef1f4; - --tblr-secondary-bg-rgb: 238, 241, 244; - --tblr-tertiary-color: rgba(24, 36, 51, 0.5); - --tblr-tertiary-color-rgb: 24, 36, 51; - --tblr-tertiary-bg: #f6f8fb; - --tblr-tertiary-bg-rgb: 246, 248, 251; - --tblr-link-color: #206bc4; - --tblr-link-color-rgb: 32, 107, 196; - --tblr-link-decoration: none; - --tblr-link-hover-color: #1a569d; - --tblr-link-hover-color-rgb: 26, 86, 157; - --tblr-link-hover-decoration: underline; - --tblr-code-color: var(--tblr-gray-600); - --tblr-highlight-bg: #fdeccc; - --tblr-border-width: 1px; - --tblr-border-style: solid; - --tblr-border-color: #dadfe5; - --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); - --tblr-border-radius: 4px; - --tblr-border-radius-sm: 2px; - --tblr-border-radius-lg: 8px; - --tblr-border-radius-xl: 1rem; - --tblr-border-radius-xxl: 2rem; - --tblr-border-radius-2xl: var(--tblr-border-radius-xxl); - --tblr-border-radius-pill: 100rem; - --tblr-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --tblr-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); - --tblr-box-shadow-inset: 0 0 transparent; - --tblr-focus-ring-width: 0.25rem; - --tblr-focus-ring-opacity: 0.25; - --tblr-focus-ring-color: rgba(32, 107, 196, 0.25); - --tblr-form-valid-color: #2fb344; - --tblr-form-valid-border-color: #2fb344; - --tblr-form-invalid-color: #d63939; - --tblr-form-invalid-border-color: #d63939 -} - -[data-bs-theme=dark] { - color-scheme: dark; - --tblr-body-color: #fcfdfe; - --tblr-body-color-rgb: 252, 253, 254; - --tblr-body-bg: #040a11; - --tblr-body-bg-rgb: 4, 10, 17; - --tblr-emphasis-color: #ffffff; - --tblr-emphasis-color-rgb: 255, 255, 255; - --tblr-secondary-color: rgba(252, 253, 254, 0.75); - --tblr-secondary-color-rgb: 252, 253, 254; - --tblr-secondary-bg: #182433; - --tblr-secondary-bg-rgb: 24, 36, 51; - --tblr-tertiary-color: rgba(252, 253, 254, 0.5); - --tblr-tertiary-color-rgb: 252, 253, 254; - --tblr-tertiary-bg: #0e1722; - --tblr-tertiary-bg-rgb: 14, 23, 34; - --tblr-primary-text-emphasis: #79a6dc; - --tblr-secondary-text-emphasis: #a3abb4; - --tblr-success-text-emphasis: #82d18f; - --tblr-info-text-emphasis: #8ec2ed; - --tblr-warning-text-emphasis: #faa46a; - --tblr-danger-text-emphasis: #e68888; - --tblr-light-text-emphasis: #f6f8fb; - --tblr-dark-text-emphasis: #dadfe5; - --tblr-primary-bg-subtle: #061527; - --tblr-secondary-bg-subtle: #14171a; - --tblr-success-bg-subtle: #09240e; - --tblr-info-bg-subtle: #0d1f2d; - --tblr-warning-bg-subtle: #311501; - --tblr-danger-bg-subtle: #2b0b0b; - --tblr-light-bg-subtle: #182433; - --tblr-dark-bg-subtle: #0c121a; - --tblr-primary-border-subtle: #134076; - --tblr-secondary-border-subtle: #3d454e; - --tblr-success-border-subtle: #1c6b29; - --tblr-info-border-subtle: #285c87; - --tblr-warning-border-subtle: #943e04; - --tblr-danger-border-subtle: #802222; - --tblr-light-border-subtle: #3a4859; - --tblr-dark-border-subtle: #182433; - --tblr-link-color: #79a6dc; - --tblr-link-hover-color: #94b8e3; - --tblr-link-color-rgb: 121, 166, 220; - --tblr-link-hover-color-rgb: 148, 184, 227; - --tblr-code-color: var(--tblr-gray-300); - --tblr-border-color: #1f2e41; - --tblr-border-color-translucent: rgba(72, 110, 149, 0.14); - --tblr-form-valid-color: #82d18f; - --tblr-form-valid-border-color: #82d18f; - --tblr-form-invalid-color: #e68888; - --tblr-form-invalid-border-color: #e68888 -} - -*, -::after, -::before { - box-sizing: border-box -} - -@media (prefers-reduced-motion:no-preference) { - :root { - scroll-behavior: smooth - } -} - -body { - margin: 0; - font-family: var(--tblr-body-font-family); - font-size: var(--tblr-body-font-size); - font-weight: var(--tblr-body-font-weight); - line-height: var(--tblr-body-line-height); - color: var(--tblr-body-color); - text-align: var(--tblr-body-text-align); - background-color: var(--tblr-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent -} - -.hr, -hr { - margin: 2rem 0; - color: inherit; - border: 0; - border-top: var(--tblr-border-width) solid; - opacity: .16 -} - -.h1, -.h2, -.h3, -.h4, -.h5, -.h6, -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: var(--tblr-spacer); - font-weight: var(--tblr-font-weight-bold); - line-height: 1.2; - color: var(--tblr-heading-color, inherit) -} - -.h1, -h1 { - font-size: 1.5rem -} - -.h2, -h2 { - font-size: 1.25rem -} - -.h3, -h3 { - font-size: 1rem -} - -.h4, -h4 { - font-size: .875rem -} - -.h5, -h5 { - font-size: .75rem -} - -.h6, -h6 { - font-size: .625rem -} - -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: 600 -} - -dd { - margin-bottom: .5rem; - margin-left: 0 -} - -blockquote { - margin: 0 0 1rem -} - -b, -strong { - font-weight: bolder -} - -.small, -small { - font-size: 85.714285% -} - -.mark, -mark { - padding: .1875em; - background-color: var(--tblr-highlight-bg) -} - -sub, -sup { - position: relative; - font-size: .75em; - line-height: 0; - vertical-align: baseline -} - -sub { - bottom: -.25em -} - -sup { - top: -.5em -} - -a { - color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 1)); - text-decoration: none -} - -a:hover { - --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); - text-decoration: underline -} - -a:not([href]):not([class]), -a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none -} - -code, -kbd, -pre, -samp { - font-family: var(--tblr-font-monospace); - font-size: 1em -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 85.714285%; - color: var(--tblr-light) -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal -} - -code { - font-size: 85.714285%; - color: var(--tblr-code-color); - word-wrap: break-word -} - -a>code { - color: inherit -} - -kbd { - padding: .25rem .5rem; - font-size: var(--tblr-font-size-h5); - color: var(--tblr-muted-dark); - background-color: var(--tblr-code-bg); - border-radius: 2px -} - -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: .75rem; - padding-bottom: .75rem; - color: var(--tblr-secondary-color); - text-align: left -} - -th { - text-align: inherit; - text-align: -webkit-match-parent -} - -tbody, -td, -tfoot, -th, -thead, -tr { - border-color: inherit; - border-style: solid; - border-width: 0 -} - -label { - display: inline-block -} - -button { - border-radius: 0 -} - -button:focus:not(:focus-visible) { - outline: 0 -} - -button, -input, -optgroup, -select, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit -} - -button, -select { - text-transform: none -} - -[role=button] { - cursor: pointer -} - -select { - word-wrap: normal -} - -select:disabled { - opacity: 1 -} - -[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { - display: none !important -} - -[type=button], -[type=reset], -[type=submit], -button { - -webkit-appearance: button -} - -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled), -button:not(:disabled) { - cursor: pointer -} - -::-moz-focus-inner { - padding: 0; - border-style: none -} - -textarea { - resize: vertical -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0 -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit -} - -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] { - outline-offset: -2px; - -webkit-appearance: textfield -} - -::-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: .875rem; - font-weight: var(--tblr-font-weight-normal) -} - -.display-1 { - font-size: 5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-2 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-3 { - font-size: 4rem; - font-weight: 300; - line-height: 1.2 -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-5 { - font-size: 3rem; - font-weight: 300; - line-height: 1.2 -} - -.display-6 { - font-size: 2rem; - font-weight: 300; - line-height: 1.2 -} - -.list-unstyled { - padding-left: 0; - list-style: none -} - -.list-inline { - padding-left: 0; - list-style: none -} - -.list-inline-item { - display: inline-block -} - -.list-inline-item:not(:last-child) { - margin-right: .5rem -} - -.initialism { - font-size: 85.714285%; - text-transform: uppercase -} - -.blockquote { - margin-bottom: 1rem; - font-size: .875rem -} - -.blockquote>:last-child { - margin-bottom: 0 -} - -.blockquote-footer { - margin-top: -1rem; - margin-bottom: 1rem; - font-size: 85.714285%; - color: #667382 -} - -.blockquote-footer::before { - content: "— " -} - -.img-fluid { - max-width: 100%; - height: auto -} - -.img-thumbnail { - padding: .25rem; - background-color: var(--tblr-body-bg); - border: var(--tblr-border-width) solid var(--tblr-border-color); - border-radius: var(--tblr-border-radius); - box-shadow: var(--tblr-box-shadow-sm); - max-width: 100%; - height: auto -} - -.figure { - display: inline-block -} - -.figure-img { - margin-bottom: .5rem; - line-height: 1 -} - -.figure-caption { - font-size: 85.714285%; - color: var(--tblr-secondary-color) -} - -.container, -.container-fluid, -.container-lg, -.container-md, -.container-sm, -.container-xl, -.container-xxl { - --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); - --tblr-gutter-y: 0; - width: 100%; - padding-right: calc(var(--tblr-gutter-x) * .5); - padding-left: calc(var(--tblr-gutter-x) * .5); - margin-right: auto; - margin-left: auto -} - -@media (min-width:576px) { - - .container, - .container-sm { - max-width: 540px - } -} - -@media (min-width:768px) { - - .container, - .container-md, - .container-sm { - max-width: 720px - } -} - -@media (min-width:992px) { - - .container, - .container-lg, - .container-md, - .container-sm { - max-width: 960px - } -} - -@media (min-width:1200px) { - - .container, - .container-lg, - .container-md, - .container-sm, - .container-xl { - max-width: 1140px - } -} - -@media (min-width:1400px) { - - .container, - .container-lg, - .container-md, - .container-sm, - .container-xl, - .container-xxl { - max-width: 1320px - } -} - -:root { - --tblr-breakpoint-xs: 0; - --tblr-breakpoint-sm: 576px; - --tblr-breakpoint-md: 768px; - --tblr-breakpoint-lg: 992px; - --tblr-breakpoint-xl: 1200px; - --tblr-breakpoint-xxl: 1400px -} - -.row { - --tblr-gutter-x: var(--tblr-page-padding); - --tblr-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--tblr-gutter-y)); - margin-right: calc(-.5 * var(--tblr-gutter-x)); - margin-left: calc(-.5 * var(--tblr-gutter-x)) -} - -.row>* { - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--tblr-gutter-x) * .5); - padding-left: calc(var(--tblr-gutter-x) * .5); - margin-top: calc(var(--tblr-gutter-y) * .7); -} - -.grid { - display: grid; - grid-template-rows: repeat(var(--tblr-rows, 1), 1fr); - grid-template-columns: repeat(var(--tblr-columns, 12), 1fr); - gap: var(--tblr-gap, var(--tblr-page-padding)) -} - -.grid .g-col-1 { - grid-column: auto/span 1 -} - -.grid .g-col-2 { - grid-column: auto/span 2 -} - -.grid .g-col-3 { - grid-column: auto/span 3 -} - -.grid .g-col-4 { - grid-column: auto/span 4 -} - -.grid .g-col-5 { - grid-column: auto/span 5 -} - -.grid .g-col-6 { - grid-column: auto/span 6 -} - -.grid .g-col-7 { - grid-column: auto/span 7 -} - -.grid .g-col-8 { - grid-column: auto/span 8 -} - -.grid .g-col-9 { - grid-column: auto/span 9 -} - -.grid .g-col-10 { - grid-column: auto/span 10 -} - -.grid .g-col-11 { - grid-column: auto/span 11 -} - -.grid .g-col-12 { - grid-column: auto/span 12 -} - -.grid .g-start-1 { - grid-column-start: 1 -} - -.grid .g-start-2 { - grid-column-start: 2 -} - -.grid .g-start-3 { - grid-column-start: 3 -} - -.grid .g-start-4 { - grid-column-start: 4 -} - -.grid .g-start-5 { - grid-column-start: 5 -} - -.grid .g-start-6 { - grid-column-start: 6 -} - -.grid .g-start-7 { - grid-column-start: 7 -} - -.grid .g-start-8 { - grid-column-start: 8 -} - -.grid .g-start-9 { - grid-column-start: 9 -} - -.grid .g-start-10 { - grid-column-start: 10 -} - -.grid .g-start-11 { - grid-column-start: 11 -} - -@media (min-width:576px) { - .grid .g-col-sm-1 { - grid-column: auto/span 1 - } - - .grid .g-col-sm-2 { - grid-column: auto/span 2 - } - - .grid .g-col-sm-3 { - grid-column: auto/span 3 - } - - .grid .g-col-sm-4 { - grid-column: auto/span 4 - } - - .grid .g-col-sm-5 { - grid-column: auto/span 5 - } - - .grid .g-col-sm-6 { - grid-column: auto/span 6 - } - - .grid .g-col-sm-7 { - grid-column: auto/span 7 - } - - .grid .g-col-sm-8 { - grid-column: auto/span 8 - } - - .grid .g-col-sm-9 { - grid-column: auto/span 9 - } - - .grid .g-col-sm-10 { - grid-column: auto/span 10 - } - - .grid .g-col-sm-11 { - grid-column: auto/span 11 - } - - .grid .g-col-sm-12 { - grid-column: auto/span 12 - } - - .grid .g-start-sm-1 { - grid-column-start: 1 - } - - .grid .g-start-sm-2 { - grid-column-start: 2 - } - - .grid .g-start-sm-3 { - grid-column-start: 3 - } - - .grid .g-start-sm-4 { - grid-column-start: 4 - } - - .grid .g-start-sm-5 { - grid-column-start: 5 - } - - .grid .g-start-sm-6 { - grid-column-start: 6 - } - - .grid .g-start-sm-7 { - grid-column-start: 7 - } - - .grid .g-start-sm-8 { - grid-column-start: 8 - } - - .grid .g-start-sm-9 { - grid-column-start: 9 - } - - .grid .g-start-sm-10 { - grid-column-start: 10 - } - - .grid .g-start-sm-11 { - grid-column-start: 11 - } -} - -@media (min-width:768px) { - .grid .g-col-md-1 { - grid-column: auto/span 1 - } - - .grid .g-col-md-2 { - grid-column: auto/span 2 - } - - .grid .g-col-md-3 { - grid-column: auto/span 3 - } - - .grid .g-col-md-4 { - grid-column: auto/span 4 - } - - .grid .g-col-md-5 { - grid-column: auto/span 5 - } - - .grid .g-col-md-6 { - grid-column: auto/span 6 - } - - .grid .g-col-md-7 { - grid-column: auto/span 7 - } - - .grid .g-col-md-8 { - grid-column: auto/span 8 - } - - .grid .g-col-md-9 { - grid-column: auto/span 9 - } - - .grid .g-col-md-10 { - grid-column: auto/span 10 - } - - .grid .g-col-md-11 { - grid-column: auto/span 11 - } - - .grid .g-col-md-12 { - grid-column: auto/span 12 - } - - .grid .g-start-md-1 { - grid-column-start: 1 - } - - .grid .g-start-md-2 { - grid-column-start: 2 - } - - .grid .g-start-md-3 { - grid-column-start: 3 - } - - .grid .g-start-md-4 { - grid-column-start: 4 - } - - .grid .g-start-md-5 { - grid-column-start: 5 - } - - .grid .g-start-md-6 { - grid-column-start: 6 - } - - .grid .g-start-md-7 { - grid-column-start: 7 - } - - .grid .g-start-md-8 { - grid-column-start: 8 - } - - .grid .g-start-md-9 { - grid-column-start: 9 - } - - .grid .g-start-md-10 { - grid-column-start: 10 - } - - .grid .g-start-md-11 { - grid-column-start: 11 - } -} - -@media (min-width:992px) { - .grid .g-col-lg-1 { - grid-column: auto/span 1 - } - - .grid .g-col-lg-2 { - grid-column: auto/span 2 - } - - .grid .g-col-lg-3 { - grid-column: auto/span 3 - } - - .grid .g-col-lg-4 { - grid-column: auto/span 4 - } - - .grid .g-col-lg-5 { - grid-column: auto/span 5 - } - - .grid .g-col-lg-6 { - grid-column: auto/span 6 - } - - .grid .g-col-lg-7 { - grid-column: auto/span 7 - } - - .grid .g-col-lg-8 { - grid-column: auto/span 8 - } - - .grid .g-col-lg-9 { - grid-column: auto/span 9 - } - - .grid .g-col-lg-10 { - grid-column: auto/span 10 - } - - .grid .g-col-lg-11 { - grid-column: auto/span 11 - } - - .grid .g-col-lg-12 { - grid-column: auto/span 12 - } - - .grid .g-start-lg-1 { - grid-column-start: 1 - } - - .grid .g-start-lg-2 { - grid-column-start: 2 - } - - .grid .g-start-lg-3 { - grid-column-start: 3 - } - - .grid .g-start-lg-4 { - grid-column-start: 4 - } - - .grid .g-start-lg-5 { - grid-column-start: 5 - } - - .grid .g-start-lg-6 { - grid-column-start: 6 - } - - .grid .g-start-lg-7 { - grid-column-start: 7 - } - - .grid .g-start-lg-8 { - grid-column-start: 8 - } - - .grid .g-start-lg-9 { - grid-column-start: 9 - } - - .grid .g-start-lg-10 { - grid-column-start: 10 - } - - .grid .g-start-lg-11 { - grid-column-start: 11 - } -} - -@media (min-width:1200px) { - .grid .g-col-xl-1 { - grid-column: auto/span 1 - } - - .grid .g-col-xl-2 { - grid-column: auto/span 2 - } - - .grid .g-col-xl-3 { - grid-column: auto/span 3 - } - - .grid .g-col-xl-4 { - grid-column: auto/span 4 - } - - .grid .g-col-xl-5 { - grid-column: auto/span 5 - } - - .grid .g-col-xl-6 { - grid-column: auto/span 6 - } - - .grid .g-col-xl-7 { - grid-column: auto/span 7 - } - - .grid .g-col-xl-8 { - grid-column: auto/span 8 - } - - .grid .g-col-xl-9 { - grid-column: auto/span 9 - } - - .grid .g-col-xl-10 { - grid-column: auto/span 10 - } - - .grid .g-col-xl-11 { - grid-column: auto/span 11 - } - - .grid .g-col-xl-12 { - grid-column: auto/span 12 - } - - .grid .g-start-xl-1 { - grid-column-start: 1 - } - - .grid .g-start-xl-2 { - grid-column-start: 2 - } - - .grid .g-start-xl-3 { - grid-column-start: 3 - } - - .grid .g-start-xl-4 { - grid-column-start: 4 - } - - .grid .g-start-xl-5 { - grid-column-start: 5 - } - - .grid .g-start-xl-6 { - grid-column-start: 6 - } - - .grid .g-start-xl-7 { - grid-column-start: 7 - } - - .grid .g-start-xl-8 { - grid-column-start: 8 - } - - .grid .g-start-xl-9 { - grid-column-start: 9 - } - - .grid .g-start-xl-10 { - grid-column-start: 10 - } - - .grid .g-start-xl-11 { - grid-column-start: 11 - } -} - -@media (min-width:1400px) { - .grid .g-col-xxl-1 { - grid-column: auto/span 1 - } - - .grid .g-col-xxl-2 { - grid-column: auto/span 2 - } - - .grid .g-col-xxl-3 { - grid-column: auto/span 3 - } - - .grid .g-col-xxl-4 { - grid-column: auto/span 4 - } - - .grid .g-col-xxl-5 { - grid-column: auto/span 5 - } - - .grid .g-col-xxl-6 { - grid-column: auto/span 6 - } - - .grid .g-col-xxl-7 { - grid-column: auto/span 7 - } - - .grid .g-col-xxl-8 { - grid-column: auto/span 8 - } - - .grid .g-col-xxl-9 { - grid-column: auto/span 9 - } - - .grid .g-col-xxl-10 { - grid-column: auto/span 10 - } - - .grid .g-col-xxl-11 { - grid-column: auto/span 11 - } - - .grid .g-col-xxl-12 { - grid-column: auto/span 12 - } - - .grid .g-start-xxl-1 { - grid-column-start: 1 - } - - .grid .g-start-xxl-2 { - grid-column-start: 2 - } - - .grid .g-start-xxl-3 { - grid-column-start: 3 - } - - .grid .g-start-xxl-4 { - grid-column-start: 4 - } - - .grid .g-start-xxl-5 { - grid-column-start: 5 - } - - .grid .g-start-xxl-6 { - grid-column-start: 6 - } - - .grid .g-start-xxl-7 { - grid-column-start: 7 - } - - .grid .g-start-xxl-8 { - grid-column-start: 8 - } - - .grid .g-start-xxl-9 { - grid-column-start: 9 - } - - .grid .g-start-xxl-10 { - grid-column-start: 10 - } - - .grid .g-start-xxl-11 { - grid-column-start: 11 - } -} - -.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.3333333333% -} - -.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.6666666667% -} - -.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 { - --tblr-gutter-x: 0 -} - -.g-0, -.gy-0 { - --tblr-gutter-y: 0 -} - -.g-1, -.gx-1 { - --tblr-gutter-x: 0.25rem -} - -.g-1, -.gy-1 { - --tblr-gutter-y: 0.25rem -} - -.g-2, -.gx-2 { - --tblr-gutter-x: 0.5rem -} - -.g-2, -.gy-2 { - --tblr-gutter-y: 0.5rem -} - -.g-3, -.gx-3 { - --tblr-gutter-x: 1rem -} - -.g-3, -.gy-3 { - --tblr-gutter-y: 1rem -} - -.g-4, -.gx-4 { - --tblr-gutter-x: 1.5rem -} - -.g-4, -.gy-4 { - --tblr-gutter-y: 1.5rem -} - -.g-5, -.gx-5 { - --tblr-gutter-x: 2rem -} - -.g-5, -.gy-5 { - --tblr-gutter-y: 2rem -} - -.g-6, -.gx-6 { - --tblr-gutter-x: 3rem -} - -.g-6, -.gy-6 { - --tblr-gutter-y: 3rem -} - -.g-7, -.gx-7 { - --tblr-gutter-x: 5rem -} - -.g-7, -.gy-7 { - --tblr-gutter-y: 5rem -} - -.g-8, -.gx-8 { - --tblr-gutter-x: 8rem -} - -.g-8, -.gy-8 { - --tblr-gutter-y: 8rem -} - -@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.3333333333% - } - - .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.6666666667% - } - - .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 { - --tblr-gutter-x: 0 - } - - .g-sm-0, - .gy-sm-0 { - --tblr-gutter-y: 0 - } - - .g-sm-1, - .gx-sm-1 { - --tblr-gutter-x: 0.25rem - } - - .g-sm-1, - .gy-sm-1 { - --tblr-gutter-y: 0.25rem - } - - .g-sm-2, - .gx-sm-2 { - --tblr-gutter-x: 0.5rem - } - - .g-sm-2, - .gy-sm-2 { - --tblr-gutter-y: 0.5rem - } - - .g-sm-3, - .gx-sm-3 { - --tblr-gutter-x: 1rem - } - - .g-sm-3, - .gy-sm-3 { - --tblr-gutter-y: 1rem - } - - .g-sm-4, - .gx-sm-4 { - --tblr-gutter-x: 1.5rem - } - - .g-sm-4, - .gy-sm-4 { - --tblr-gutter-y: 1.5rem - } - - .g-sm-5, - .gx-sm-5 { - --tblr-gutter-x: 2rem - } - - .g-sm-5, - .gy-sm-5 { - --tblr-gutter-y: 2rem - } - - .g-sm-6, - .gx-sm-6 { - --tblr-gutter-x: 3rem - } - - .g-sm-6, - .gy-sm-6 { - --tblr-gutter-y: 3rem - } - - .g-sm-7, - .gx-sm-7 { - --tblr-gutter-x: 5rem - } - - .g-sm-7, - .gy-sm-7 { - --tblr-gutter-y: 5rem - } - - .g-sm-8, - .gx-sm-8 { - --tblr-gutter-x: 8rem - } - - .g-sm-8, - .gy-sm-8 { - --tblr-gutter-y: 8rem - } -} - -@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.3333333333% - } - - .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.6666666667% - } - - .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 { - --tblr-gutter-x: 0 - } - - .g-md-0, - .gy-md-0 { - --tblr-gutter-y: 0 - } - - .g-md-1, - .gx-md-1 { - --tblr-gutter-x: 0.25rem - } - - .g-md-1, - .gy-md-1 { - --tblr-gutter-y: 0.25rem - } - - .g-md-2, - .gx-md-2 { - --tblr-gutter-x: 0.5rem - } - - .g-md-2, - .gy-md-2 { - --tblr-gutter-y: 0.5rem - } - - .g-md-3, - .gx-md-3 { - --tblr-gutter-x: 1rem - } - - .g-md-3, - .gy-md-3 { - --tblr-gutter-y: 1rem - } - - .g-md-4, - .gx-md-4 { - --tblr-gutter-x: 1.5rem - } - - .g-md-4, - .gy-md-4 { - --tblr-gutter-y: 1.5rem - } - - .g-md-5, - .gx-md-5 { - --tblr-gutter-x: 2rem - } - - .g-md-5, - .gy-md-5 { - --tblr-gutter-y: 2rem - } - - .g-md-6, - .gx-md-6 { - --tblr-gutter-x: 3rem - } - - .g-md-6, - .gy-md-6 { - --tblr-gutter-y: 3rem - } - - .g-md-7, - .gx-md-7 { - --tblr-gutter-x: 5rem - } - - .g-md-7, - .gy-md-7 { - --tblr-gutter-y: 5rem - } - - .g-md-8, - .gx-md-8 { - --tblr-gutter-x: 8rem - } - - .g-md-8, - .gy-md-8 { - --tblr-gutter-y: 8rem - } -} - -@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.3333333333% - } - - .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.6666666667% - } - - .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 { - --tblr-gutter-x: 0 - } - - .g-lg-0, - .gy-lg-0 { - --tblr-gutter-y: 0 - } - - .g-lg-1, - .gx-lg-1 { - --tblr-gutter-x: 0.25rem - } - - .g-lg-1, - .gy-lg-1 { - --tblr-gutter-y: 0.25rem - } - - .g-lg-2, - .gx-lg-2 { - --tblr-gutter-x: 0.5rem - } - - .g-lg-2, - .gy-lg-2 { - --tblr-gutter-y: 0.5rem - } - - .g-lg-3, - .gx-lg-3 { - --tblr-gutter-x: 1rem - } - - .g-lg-3, - .gy-lg-3 { - --tblr-gutter-y: 1rem - } - - .g-lg-4, - .gx-lg-4 { - --tblr-gutter-x: 1.5rem - } - - .g-lg-4, - .gy-lg-4 { - --tblr-gutter-y: 1.5rem - } - - .g-lg-5, - .gx-lg-5 { - --tblr-gutter-x: 2rem - } - - .g-lg-5, - .gy-lg-5 { - --tblr-gutter-y: 2rem - } - - .g-lg-6, - .gx-lg-6 { - --tblr-gutter-x: 3rem - } - - .g-lg-6, - .gy-lg-6 { - --tblr-gutter-y: 3rem - } - - .g-lg-7, - .gx-lg-7 { - --tblr-gutter-x: 5rem - } - - .g-lg-7, - .gy-lg-7 { - --tblr-gutter-y: 5rem - } - - .g-lg-8, - .gx-lg-8 { - --tblr-gutter-x: 8rem - } - - .g-lg-8, - .gy-lg-8 { - --tblr-gutter-y: 8rem - } -} - -@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.3333333333% - } - - .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.6666666667% - } - - .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 { - --tblr-gutter-x: 0 - } - - .g-xl-0, - .gy-xl-0 { - --tblr-gutter-y: 0 - } - - .g-xl-1, - .gx-xl-1 { - --tblr-gutter-x: 0.25rem - } - - .g-xl-1, - .gy-xl-1 { - --tblr-gutter-y: 0.25rem - } - - .g-xl-2, - .gx-xl-2 { - --tblr-gutter-x: 0.5rem - } - - .g-xl-2, - .gy-xl-2 { - --tblr-gutter-y: 0.5rem - } - - .g-xl-3, - .gx-xl-3 { - --tblr-gutter-x: 1rem - } - - .g-xl-3, - .gy-xl-3 { - --tblr-gutter-y: 1rem - } - - .g-xl-4, - .gx-xl-4 { - --tblr-gutter-x: 1.5rem - } - - .g-xl-4, - .gy-xl-4 { - --tblr-gutter-y: 1.5rem - } - - .g-xl-5, - .gx-xl-5 { - --tblr-gutter-x: 2rem - } - - .g-xl-5, - .gy-xl-5 { - --tblr-gutter-y: 2rem - } - - .g-xl-6, - .gx-xl-6 { - --tblr-gutter-x: 3rem - } - - .g-xl-6, - .gy-xl-6 { - --tblr-gutter-y: 3rem - } - - .g-xl-7, - .gx-xl-7 { - --tblr-gutter-x: 5rem - } - - .g-xl-7, - .gy-xl-7 { - --tblr-gutter-y: 5rem - } - - .g-xl-8, - .gx-xl-8 { - --tblr-gutter-x: 8rem - } - - .g-xl-8, - .gy-xl-8 { - --tblr-gutter-y: 8rem - } -} - -@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.3333333333% - } - - .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.6666666667% - } - - .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 { - --tblr-gutter-x: 0 - } - - .g-xxl-0, - .gy-xxl-0 { - --tblr-gutter-y: 0 - } - - .g-xxl-1, - .gx-xxl-1 { - --tblr-gutter-x: 0.25rem - } - - .g-xxl-1, - .gy-xxl-1 { - --tblr-gutter-y: 0.25rem - } - - .g-xxl-2, - .gx-xxl-2 { - --tblr-gutter-x: 0.5rem - } - - .g-xxl-2, - .gy-xxl-2 { - --tblr-gutter-y: 0.5rem - } - - .g-xxl-3, - .gx-xxl-3 { - --tblr-gutter-x: 1rem - } - - .g-xxl-3, - .gy-xxl-3 { - --tblr-gutter-y: 1rem - } - - .g-xxl-4, - .gx-xxl-4 { - --tblr-gutter-x: 1.5rem - } - - .g-xxl-4, - .gy-xxl-4 { - --tblr-gutter-y: 1.5rem - } - - .g-xxl-5, - .gx-xxl-5 { - --tblr-gutter-x: 2rem - } - - .g-xxl-5, - .gy-xxl-5 { - --tblr-gutter-y: 2rem - } - - .g-xxl-6, - .gx-xxl-6 { - --tblr-gutter-x: 3rem - } - - .g-xxl-6, - .gy-xxl-6 { - --tblr-gutter-y: 3rem - } - - .g-xxl-7, - .gx-xxl-7 { - --tblr-gutter-x: 5rem - } - - .g-xxl-7, - .gy-xxl-7 { - --tblr-gutter-y: 5rem - } - - .g-xxl-8, - .gx-xxl-8 { - --tblr-gutter-x: 8rem - } - - .g-xxl-8, - .gy-xxl-8 { - --tblr-gutter-y: 8rem - } -} - -.markdown>table, -.table { - --tblr-table-color: inherit; - --tblr-table-bg: transparent; - --tblr-table-border-color: var(--tblr-border-color-translucent); - --tblr-table-accent-bg: transparent; - --tblr-table-striped-color: inherit; - --tblr-table-striped-bg: var(--tblr-bg-surface-tertiary); - --tblr-table-active-color: inherit; - --tblr-table-active-bg: rgba(0, 0, 0, 0.1); - --tblr-table-hover-color: inherit; - --tblr-table-hover-bg: rgba(0, 0, 0, 0.075); - width: 100%; - margin-bottom: 1rem; - color: var(--tblr-table-color); - vertical-align: top; - border-color: var(--tblr-table-border-color) -} - -.markdown>table>:not(caption)>*>*, -.table>:not(caption)>*>* { - padding: .75rem .75rem; - background-color: var(--tblr-table-bg); - border-bottom-width: var(--tblr-border-width); - box-shadow: inset 0 0 0 9999px var(--tblr-table-accent-bg) -} - -.markdown>table>tbody, -.table>tbody { - vertical-align: inherit -} - -.markdown>table>thead, -.table>thead { - vertical-align: bottom -} - -.table-group-divider { - border-top: calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent) -} - -.caption-top { - caption-side: top -} - -.table-sm>:not(caption)>*>* { - padding: .25rem .25rem -} - -.markdown>table>:not(caption)>*, -.table-bordered>:not(caption)>* { - border-width: var(--tblr-border-width) 0 -} - -.markdown>table>:not(caption)>*>*, -.table-bordered>:not(caption)>*>* { - border-width: 0 var(--tblr-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(even)>* { - --tblr-table-accent-bg: var(--tblr-table-striped-bg); - color: var(--tblr-table-striped-color) -} - -.table-striped-columns>:not(caption)>tr>:nth-child(even) { - --tblr-table-accent-bg: var(--tblr-table-striped-bg); - color: var(--tblr-table-striped-color) -} - -.table-active { - --tblr-table-accent-bg: var(--tblr-table-active-bg); - color: var(--tblr-table-active-color) -} - -.table-hover>tbody>tr:hover>* { - --tblr-table-accent-bg: var(--tblr-table-hover-bg); - color: var(--tblr-table-hover-color) -} - -.table-primary { - --tblr-table-color: #182433; - --tblr-table-bg: #d2e1f3; - --tblr-table-border-color: #bfcee0; - --tblr-table-striped-bg: #c9d8e9; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #bfcee0; - --tblr-table-active-color: #fcfdfe; - --tblr-table-hover-bg: #c4d3e5; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-secondary { - --tblr-table-color: #182433; - --tblr-table-bg: #e0e3e6; - --tblr-table-border-color: #ccd0d4; - --tblr-table-striped-bg: #d6d9dd; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #ccd0d4; - --tblr-table-active-color: #fcfdfe; - --tblr-table-hover-bg: #d1d5d9; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-success { - --tblr-table-color: #182433; - --tblr-table-bg: #d5f0da; - --tblr-table-border-color: #c2dcc9; - --tblr-table-striped-bg: #cce6d2; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #c2dcc9; - --tblr-table-active-color: #182433; - --tblr-table-hover-bg: #c7e1cd; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-info { - --tblr-table-color: #182433; - --tblr-table-bg: #d9ebf9; - --tblr-table-border-color: #c6d7e5; - --tblr-table-striped-bg: #cfe1ef; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #c6d7e5; - --tblr-table-active-color: #182433; - --tblr-table-hover-bg: #cbdcea; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-warning { - --tblr-table-color: #182433; - --tblr-table-bg: #fde1cd; - --tblr-table-border-color: #e6cebe; - --tblr-table-striped-bg: #f2d8c5; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #e6cebe; - --tblr-table-active-color: #182433; - --tblr-table-hover-bg: #ecd3c1; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-danger { - --tblr-table-color: #182433; - --tblr-table-bg: #f7d7d7; - --tblr-table-border-color: #e1c5c7; - --tblr-table-striped-bg: #eccecf; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #e1c5c7; - --tblr-table-active-color: #fcfdfe; - --tblr-table-hover-bg: #e6cacb; - --tblr-table-hover-color: #fcfdfe; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-light { - --tblr-table-color: #182433; - --tblr-table-bg: #fcfdfe; - --tblr-table-border-color: #e5e7ea; - --tblr-table-striped-bg: #f1f2f4; - --tblr-table-striped-color: #182433; - --tblr-table-active-bg: #e5e7ea; - --tblr-table-active-color: #182433; - --tblr-table-hover-bg: #ebedef; - --tblr-table-hover-color: #182433; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-dark { - --tblr-table-color: #fcfdfe; - --tblr-table-bg: #182433; - --tblr-table-border-color: #2f3a47; - --tblr-table-striped-bg: #232f3d; - --tblr-table-striped-color: #fcfdfe; - --tblr-table-active-bg: #2f3a47; - --tblr-table-active-color: #fcfdfe; - --tblr-table-hover-bg: #293442; - --tblr-table-hover-color: #fcfdfe; - color: var(--tblr-table-color); - border-color: var(--tblr-table-border-color) -} - -.table-responsive { - overflow-x: auto; - -webkit-overflow-scrolling: touch -} - -@media (max-width:575.98px) { - .table-responsive-sm { - overflow-x: auto; - -webkit-overflow-scrolling: touch - } -} - -@media (max-width:767.98px) { - .table-responsive-md { - overflow-x: auto; - -webkit-overflow-scrolling: touch - } -} - -@media (max-width:991.98px) { - .table-responsive-lg { - overflow-x: auto; - -webkit-overflow-scrolling: touch - } -} - -@media (max-width:1199.98px) { - .table-responsive-xl { - overflow-x: auto; - -webkit-overflow-scrolling: touch - } -} - -@media (max-width:1399.98px) { - .table-responsive-xxl { - overflow-x: auto; - -webkit-overflow-scrolling: touch - } -} - -.form-label { - margin-bottom: .5rem; - font-size: .875rem; - font-weight: var(--tblr-font-weight-medium) -} - -.col-form-label { - padding-top: calc(.4375rem + var(--tblr-border-width)); - padding-bottom: calc(.4375rem + var(--tblr-border-width)); - margin-bottom: 0; - font-size: inherit; - font-weight: var(--tblr-font-weight-medium); - line-height: 1.4285714286 -} - -.col-form-label-lg { - padding-top: calc(.5rem + var(--tblr-border-width)); - padding-bottom: calc(.5rem + var(--tblr-border-width)); - font-size: 1.25rem -} - -.col-form-label-sm { - padding-top: calc(.125rem + var(--tblr-border-width)); - padding-bottom: calc(.125rem + var(--tblr-border-width)); - font-size: .75rem -} - -.form-text { - margin-top: .25rem; - font-size: 85.714285%; - color: var(--tblr-secondary-color) -} - -.form-control { - display: block; - width: 100%; - padding: .4375rem .75rem; - font-family: var(--tblr-font-sans-serif); - font-size: .875rem; - font-weight: 400; - line-height: 1.4285714286; - color: inherit; - background-color: var(--tblr-bg-forms); - background-clip: padding-box; - border: var(--tblr-border-width) solid var(--tblr-border-color); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: var(--tblr-border-radius); - box-shadow: 0 0 transparent; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-control { - transition: none - } -} - -.form-control[type=file] { - overflow: hidden -} - -.form-control[type=file]:not(:disabled):not([readonly]) { - cursor: pointer -} - - - -.form-control::-webkit-date-and-time-value { - min-width: 85px; - height: 1.4285714286em; - margin: 0 -} - -.form-control::-webkit-datetime-edit { - display: block; - padding: 0 -} - -.form-control::-webkit-input-placeholder { - color: #929dab; - opacity: 1 -} - -.form-control:-ms-input-placeholder { - color: #929dab; - opacity: 1 -} - -.form-control::-ms-input-placeholder { - color: #929dab; - opacity: 1 -} - -.form-control::placeholder { - color: #929dab; - opacity: 1 -} - -.form-control:disabled { - background-color: var(--tblr-bg-surface-secondary); - opacity: 1 -} - -.form-control::-webkit-file-upload-button { - padding: .4375rem .75rem; - margin: -.4375rem -.75rem; - -webkit-margin-end: .75rem; - margin-inline-end: .75rem; - color: inherit; - background-color: var(--tblr-tertiary-bg); - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: var(--tblr-border-width); - border-radius: 0; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -.form-control::file-selector-button { - padding: .4375rem .75rem; - margin: -.4375rem -.75rem; - -webkit-margin-end: .75rem; - margin-inline-end: .75rem; - color: inherit; - background-color: var(--tblr-tertiary-bg); - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: var(--tblr-border-width); - border-radius: 0; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-control::-webkit-file-upload-button { - -webkit-transition: none; - transition: none - } - - .form-control::file-selector-button { - transition: none - } -} - -.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { - background-color: var(--tblr-secondary-bg) -} - -.form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: var(--tblr-secondary-bg) -} - -.form-control-plaintext { - display: block; - width: 100%; - padding: .4375rem 0; - margin-bottom: 0; - line-height: 1.4285714286; - color: var(--tblr-body-color); - background-color: transparent; - border: solid transparent; - border-width: var(--tblr-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.4285714286em + .25rem + calc(var(--tblr-border-width) * 2)); - padding: .125rem .25rem; - font-size: .75rem; - border-radius: var(--tblr-border-radius-sm) -} - -.form-control-sm::-webkit-file-upload-button { - padding: .125rem .25rem; - margin: -.125rem -.25rem; - -webkit-margin-end: .25rem; - margin-inline-end: .25rem -} - -.form-control-sm::file-selector-button { - padding: .125rem .25rem; - margin: -.125rem -.25rem; - -webkit-margin-end: .25rem; - margin-inline-end: .25rem -} - -.form-control-lg { - min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); - padding: .5rem .75rem; - font-size: 1.25rem; - border-radius: var(--tblr-border-radius-lg) -} - -.form-control-lg::-webkit-file-upload-button { - padding: .5rem .75rem; - margin: -.5rem -.75rem; - -webkit-margin-end: .75rem; - margin-inline-end: .75rem -} - -.form-control-lg::file-selector-button { - padding: .5rem .75rem; - margin: -.5rem -.75rem; - -webkit-margin-end: .75rem; - margin-inline-end: .75rem -} - -textarea.form-control { - min-height: calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2)) -} - -textarea.form-control-sm { - min-height: calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2)) -} - -textarea.form-control-lg { - min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)) -} - -.form-control-color { - width: 3rem; - height: calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2)); - padding: .4375rem -} - -.form-control-color:not(:disabled):not([readonly]) { - cursor: pointer -} - -.form-control-color::-moz-color-swatch { - border: 0 !important; - border-radius: var(--tblr-border-radius) -} - -.form-control-color::-webkit-color-swatch { - border: 0 !important; - border-radius: var(--tblr-border-radius) -} - -.form-control-color.form-control-sm { - height: calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2)) -} - -.form-control-color.form-control-lg { - height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)) -} - -.form-select { - --tblr-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='%23929dab' 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: .4375rem 2.25rem .4375rem .75rem; - font-family: var(--tblr-font-sans-serif); - font-size: .875rem; - font-weight: 400; - line-height: 1.4285714286; - color: inherit; - background-color: var(--tblr-bg-forms); - background-image: var(--tblr-form-select-bg-img), var(--tblr-form-select-bg-icon, none); - background-repeat: no-repeat; - background-position: right .75rem center; - background-size: 16px 12px; - border: var(--tblr-border-width) solid var(--tblr-border-color); - border-radius: var(--tblr-border-radius); - box-shadow: 0 0 transparent; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .form-select { - transition: none - } -} - - -.form-select[multiple], -.form-select[size]:not([size="1"]) { - padding-right: .75rem; - background-image: none -} - -.form-select:disabled { - background-color: var(--tblr-bg-surface-secondary) -} - -.form-select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 inherit -} - -.form-select-sm { - padding-top: .125rem; - padding-bottom: .125rem; - padding-left: .25rem; - font-size: .75rem; - border-radius: var(--tblr-border-radius-sm) -} - -.form-select-lg { - padding-top: .5rem; - padding-bottom: .5rem; - padding-left: .75rem; - font-size: 1.25rem; - border-radius: var(--tblr-border-radius-lg) -} - -[data-bs-theme=dark] .form-select { - --tblr-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='%23fcfdfe' 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.25rem; - padding-left: 1.5rem; - margin-bottom: .5rem -} - -.form-check .form-check-input { - float: left; - margin-left: -1.5rem -} - -.form-check-reverse { - padding-right: 1.5rem; - padding-left: 0; - text-align: right -} - -.form-check-reverse .form-check-input { - float: right; - margin-right: -1.5rem; - margin-left: 0 -} - -.form-check-input { - --tblr-form-check-bg: var(--tblr-bg-forms); - width: 1rem; - height: 1rem; - margin-top: .2142857143rem; - vertical-align: top; - background-color: var(--tblr-form-check-bg); - background-image: var(--tblr-form-check-bg-image); - background-repeat: no-repeat; - background-position: center; - background-size: contain; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - -webkit-print-color-adjust: exact; - color-adjust: exact; - print-color-adjust: exact -} - -.form-check-input[type=checkbox] { - border-radius: var(--tblr-border-radius) -} - -.form-check-input[type=radio] { - border-radius: 50% -} - -.form-check-input:active { - filter: brightness(90%) -} - - -.form-check-input:checked { - background-color: var(--tblr-primary); - border-color: var(--tblr-border-color-translucent) -} - -.form-check-input:checked[type=checkbox] { - --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e") -} - -.form-check-input:checked[type=radio] { - --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e") -} - -.form-check-input[type=checkbox]:indeterminate { - background-color: var(--tblr-primary); - border-color: var(--tblr-primary); - --tblr-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='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e") -} - -.form-check-input:disabled { - pointer-events: none; - filter: none; - opacity: .5 -} - -.form-check-input:disabled~.form-check-label, -.form-check-input[disabled]~.form-check-label { - cursor: default; - opacity: .7 -} - -.form-switch { - padding-left: 2.5rem -} - -.form-switch .form-check-input { - --tblr-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='%23dadfe5'/%3e%3c/svg%3e"); - width: 2rem; - margin-left: -2.5rem; - background-image: var(--tblr-form-switch-bg); - background-position: left center; - border-radius: 2rem; - transition: background-position .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-switch .form-check-input { - transition: none - } -} - -.form-switch .form-check-input { - --tblr-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='%2390b5e2'/%3e%3c/svg%3e") -} - -.form-switch .form-check-input:checked { - background-position: right center; - --tblr-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='%23ffffff'/%3e%3c/svg%3e") -} - -.form-switch.form-check-reverse { - padding-right: 2.5rem; - padding-left: 0 -} - -.form-switch.form-check-reverse .form-check-input { - margin-right: -2.5rem; - 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: .4 -} - -[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { - --tblr-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.25rem; - padding: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.form-range:focus { - outline: 0 -} - -.form-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.form-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.form-range::-moz-focus-outer { - border: 0 -} - -.form-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -.375rem; - background-color: var(--tblr-primary); - border: 2px var(--tblr-border-style) #fff; - border-radius: 1rem; - box-shadow: 0 .1rem .25rem rgba(0, 0, 0, .1); - -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - -webkit-appearance: none; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .form-range::-webkit-slider-thumb { - -webkit-transition: none; - transition: none - } -} - -.form-range::-webkit-slider-thumb:active { - background-color: #bcd3ed -} - -.form-range::-webkit-slider-runnable-track { - width: 100%; - height: .25rem; - color: transparent; - cursor: pointer; - background-color: var(--tblr-border-color); - border-color: transparent; - border-radius: 1rem; - box-shadow: 0 0 transparent -} - -.form-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: var(--tblr-primary); - border: 2px var(--tblr-border-style) #fff; - border-radius: 1rem; - box-shadow: 0 .1rem .25rem rgba(0, 0, 0, .1); - -moz-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - -moz-appearance: none; - appearance: none -} - -@media (prefers-reduced-motion:reduce) { - .form-range::-moz-range-thumb { - -moz-transition: none; - transition: none - } -} - -.form-range::-moz-range-thumb:active { - background-color: #bcd3ed -} - -.form-range::-moz-range-track { - width: 100%; - height: .25rem; - color: transparent; - cursor: pointer; - background-color: var(--tblr-border-color); - border-color: transparent; - border-radius: 1rem; - box-shadow: 0 0 transparent -} - -.form-range:disabled { - pointer-events: none -} - -.form-range:disabled::-webkit-slider-thumb { - background-color: var(--tblr-secondary-color) -} - -.form-range:disabled::-moz-range-thumb { - background-color: var(--tblr-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(--tblr-border-width) * 2)); - line-height: 1.25 -} - -.form-floating>label { - position: absolute; - top: 0; - left: 0; - z-index: 2; - height: 100%; - padding: 1rem .75rem; - overflow: hidden; - text-align: start; - text-overflow: ellipsis; - white-space: nowrap; - pointer-events: none; - border: var(--tblr-border-width) solid transparent; - transform-origin: 0 0; - transition: opacity .1s ease-in-out, transform .1s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .form-floating>label { - transition: none - } -} - -.form-floating>.form-control, -.form-floating>.form-control-plaintext { - padding: 1rem .75rem -} - -.form-floating>.form-control-plaintext::-webkit-input-placeholder, -.form-floating>.form-control::-webkit-input-placeholder { - color: transparent -} - -.form-floating>.form-control-plaintext:-ms-input-placeholder, -.form-floating>.form-control:-ms-input-placeholder { - color: transparent -} - -.form-floating>.form-control-plaintext::-ms-input-placeholder, -.form-floating>.form-control::-ms-input-placeholder { - color: transparent -} - -.form-floating>.form-control-plaintext::placeholder, -.form-floating>.form-control::placeholder { - color: transparent -} - -.form-floating>.form-control-plaintext:not(:-ms-input-placeholder), -.form-floating>.form-control:not(:-ms-input-placeholder) { - padding-top: 1.625rem; - padding-bottom: .625rem -} - -.form-floating>.form-control-plaintext:focus, -.form-floating>.form-control-plaintext:not(:placeholder-shown), -.form-floating>.form-control:focus, -.form-floating>.form-control:not(:placeholder-shown) { - padding-top: 1.625rem; - padding-bottom: .625rem -} - -.form-floating>.form-control-plaintext:-webkit-autofill, -.form-floating>.form-control:-webkit-autofill { - padding-top: 1.625rem; - padding-bottom: .625rem -} - -.form-floating>.form-select { - padding-top: 1.625rem; - padding-bottom: .625rem -} - -.form-floating>.form-control:not(:-ms-input-placeholder)~label { - color: rgba(var(--tblr-body-color-rgb), .65); - transform: scale(.85) translateY(-.5rem) translateX(.15rem) -} - -.form-floating>.form-control-plaintext~label, -.form-floating>.form-control:focus~label, -.form-floating>.form-control:not(:placeholder-shown)~label, -.form-floating>.form-select~label { - color: rgba(var(--tblr-body-color-rgb), .65); - transform: scale(.85) translateY(-.5rem) translateX(.15rem) -} - -.form-floating>.form-control:not(:-ms-input-placeholder)~label::after { - position: absolute; - inset: 1rem .375rem; - z-index: -1; - height: 1.5em; - content: ""; - background-color: var(--tblr-bg-forms); - border-radius: var(--tblr-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 .375rem; - z-index: -1; - height: 1.5em; - content: ""; - background-color: var(--tblr-bg-forms); - border-radius: var(--tblr-border-radius) -} - -.form-floating>.form-control:-webkit-autofill~label { - color: rgba(var(--tblr-body-color-rgb), .65); - transform: scale(.85) translateY(-.5rem) translateX(.15rem) -} - -.form-floating>.form-control-plaintext~label { - border-width: var(--tblr-border-width) 0 -} - -.form-floating>:disabled~label { - color: #667382 -} - -.form-floating>:disabled~label::after { - background-color: var(--tblr-bg-surface-secondary) -} - -.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: .4375rem .75rem; - font-size: .875rem; - font-weight: 400; - line-height: 1.4285714286; - color: var(--tblr-muted); - text-align: center; - white-space: nowrap; - background-color: var(--tblr-bg-surface-secondary); - border: var(--tblr-border-width) solid var(--tblr-border-color); - border-radius: var(--tblr-border-radius) -} - -.input-group-lg>.btn, -.input-group-lg>.form-control, -.input-group-lg>.form-select, -.input-group-lg>.input-group-text { - padding: .5rem .75rem; - font-size: 1.25rem; - border-radius: var(--tblr-border-radius-lg) -} - -.input-group-sm>.btn, -.input-group-sm>.form-control, -.input-group-sm>.form-select, -.input-group-sm>.input-group-text { - padding: .125rem .25rem; - font-size: .75rem; - border-radius: var(--tblr-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(--tblr-border-width) * -1); - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.input-group>.form-floating:not(:first-child)>.form-control, -.input-group>.form-floating:not(:first-child)>.form-select { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 85.714285%; - color: var(--tblr-form-valid-color) -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: var(--tblr-spacer-2) var(--tblr-spacer-2); - margin-top: .1rem; - font-size: .765625rem; - color: #fff; - background-color: var(--tblr-success); - border-radius: var(--tblr-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(--tblr-form-valid-border-color); - padding-right: calc(1.4285714286em + .875rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(.3571428572em + .21875rem) center; - background-size: calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem) -} - -.form-control.is-valid:focus, -.was-validated .form-control:valid:focus { - border-color: var(--tblr-form-valid-border-color); - box-shadow: 0 0 0 .25rem rgba(var(--tblr-success-rgb), .25) -} - -.was-validated textarea.form-control:valid, -textarea.form-control.is-valid { - padding-right: calc(1.4285714286em + .875rem); - background-position: top calc(.3571428572em + .21875rem) right calc(.3571428572em + .21875rem) -} - -.form-select.is-valid, -.was-validated .form-select:valid { - border-color: var(--tblr-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"] { - --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right .75rem center, center right 2.25rem; - background-size: 16px 12px, calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem) -} - -.form-select.is-valid:focus, -.was-validated .form-select:valid:focus { - border-color: var(--tblr-form-valid-border-color); - box-shadow: 0 0 0 .25rem rgba(var(--tblr-success-rgb), .25) -} - -.form-control-color.is-valid, -.was-validated .form-control-color:valid { - width: calc(3rem + calc(1.4285714286em + .875rem)) -} - -.form-check-input.is-valid, -.was-validated .form-check-input:valid { - border-color: var(--tblr-form-valid-border-color) -} - -.form-check-input.is-valid:checked, -.was-validated .form-check-input:valid:checked { - background-color: var(--tblr-form-valid-color) -} - -.form-check-input.is-valid:focus, -.was-validated .form-check-input:valid:focus { - box-shadow: 0 0 0 .25rem rgba(var(--tblr-success-rgb), .25) -} - -.form-check-input.is-valid~.form-check-label, -.was-validated .form-check-input:valid~.form-check-label { - color: var(--tblr-form-valid-color) -} - -.form-check-inline .form-check-input~.valid-feedback { - margin-left: .5em -} - -.input-group>.form-control:not(:focus).is-valid, -.input-group>.form-floating:not(:focus-within).is-valid, -.input-group>.form-select:not(:focus).is-valid, -.was-validated .input-group>.form-control:not(:focus):valid, -.was-validated .input-group>.form-floating:not(:focus-within):valid, -.was-validated .input-group>.form-select:not(:focus):valid { - z-index: 3 -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 85.714285%; - color: var(--tblr-form-invalid-color) -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: var(--tblr-spacer-2) var(--tblr-spacer-2); - margin-top: .1rem; - font-size: .765625rem; - color: #fff; - background-color: var(--tblr-danger); - border-radius: var(--tblr-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(--tblr-form-invalid-border-color); - padding-right: calc(1.4285714286em + .875rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(.3571428572em + .21875rem) center; - background-size: calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem) -} - -.form-control.is-invalid:focus, -.was-validated .form-control:invalid:focus { - border-color: var(--tblr-form-invalid-border-color); - box-shadow: 0 0 0 .25rem rgba(var(--tblr-danger-rgb), .25) -} - -.was-validated textarea.form-control:invalid, -textarea.form-control.is-invalid { - padding-right: calc(1.4285714286em + .875rem); - background-position: top calc(.3571428572em + .21875rem) right calc(.3571428572em + .21875rem) -} - -.form-select.is-invalid, -.was-validated .form-select:invalid { - border-color: var(--tblr-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"] { - --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); - padding-right: 4.125rem; - background-position: right .75rem center, center right 2.25rem; - background-size: 16px 12px, calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem) -} - -.form-select.is-invalid:focus, -.was-validated .form-select:invalid:focus { - border-color: var(--tblr-form-invalid-border-color); - box-shadow: 0 0 0 .25rem rgba(var(--tblr-danger-rgb), .25) -} - -.form-control-color.is-invalid, -.was-validated .form-control-color:invalid { - width: calc(3rem + calc(1.4285714286em + .875rem)) -} - -.form-check-input.is-invalid, -.was-validated .form-check-input:invalid { - border-color: var(--tblr-form-invalid-border-color) -} - -.form-check-input.is-invalid:checked, -.was-validated .form-check-input:invalid:checked { - background-color: var(--tblr-form-invalid-color) -} - -.form-check-input.is-invalid:focus, -.was-validated .form-check-input:invalid:focus { - box-shadow: 0 0 0 .25rem rgba(var(--tblr-danger-rgb), .25) -} - -.form-check-input.is-invalid~.form-check-label, -.was-validated .form-check-input:invalid~.form-check-label { - color: var(--tblr-form-invalid-color) -} - -.form-check-inline .form-check-input~.invalid-feedback { - margin-left: .5em -} - -.input-group>.form-control:not(:focus).is-invalid, -.input-group>.form-floating:not(:focus-within).is-invalid, -.input-group>.form-select:not(:focus).is-invalid, -.was-validated .input-group>.form-control:not(:focus):invalid, -.was-validated .input-group>.form-floating:not(:focus-within):invalid, -.was-validated .input-group>.form-select:not(:focus):invalid { - z-index: 4 -} - -.btn { - --tblr-btn-padding-x: 1rem; - --tblr-btn-padding-y: 0.4375rem; - --tblr-btn-font-family: var(--tblr-font-sans-serif); - --tblr-btn-font-size: 0.875rem; - --tblr-btn-font-weight: var(--tblr-font-weight-medium); - --tblr-btn-line-height: 1.4285714286; - --tblr-btn-color: var(--tblr-body-color); - --tblr-btn-bg: transparent; - --tblr-btn-border-width: var(--tblr-border-width); - --tblr-btn-border-color: transparent; - --tblr-btn-border-radius: var(--tblr-border-radius); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); - --tblr-btn-disabled-opacity: 0.4; - --tblr-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5); - display: inline-block; - padding: var(--tblr-btn-padding-y) var(--tblr-btn-padding-x); - font-family: var(--tblr-btn-font-family); - font-size: var(--tblr-btn-font-size); - font-weight: var(--tblr-btn-font-weight); - line-height: var(--tblr-btn-line-height); - color: var(--tblr-btn-color); - text-align: center; - vertical-align: middle; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: var(--tblr-btn-border-width) solid var(--tblr-btn-border-color); - border-radius: var(--tblr-btn-border-radius); - background-color: var(--tblr-btn-bg); - box-shadow: var(--tblr-btn-box-shadow); - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .btn { - transition: none - } -} - -.btn:hover { - color: var(--tblr-btn-hover-color); - text-decoration: none; - background-color: var(--tblr-btn-hover-bg); - border-color: var(--tblr-btn-hover-border-color) -} - -.btn-check+.btn:hover { - color: var(--tblr-btn-color); - background-color: var(--tblr-btn-bg); - border-color: var(--tblr-btn-border-color) -} - -.btn:focus-visible { - color: var(--tblr-btn-hover-color); - background-color: var(--tblr-btn-hover-bg); - border-color: var(--tblr-btn-hover-border-color); - outline: 0; - box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow) -} - -.btn-check:focus-visible+.btn { - border-color: var(--tblr-btn-hover-border-color); - outline: 0; - box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow) -} - -.btn-check:checked+.btn, -.btn.active, -.btn.show, -.btn:first-child:active, -:not(.btn-check)+.btn:active { - color: var(--tblr-btn-active-color); - background-color: var(--tblr-btn-active-bg); - border-color: var(--tblr-btn-active-border-color); - box-shadow: var(--tblr-btn-active-shadow) -} - -.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(--tblr-btn-active-shadow), var(--tblr-btn-focus-box-shadow) -} - -.btn.disabled, -.btn:disabled, -fieldset:disabled .btn { - color: var(--tblr-btn-disabled-color); - pointer-events: none; - background-color: var(--tblr-btn-disabled-bg); - border-color: var(--tblr-btn-disabled-border-color); - opacity: var(--tblr-btn-disabled-opacity); - box-shadow: none -} - -.btn-link { - --tblr-btn-font-weight: 400; - --tblr-btn-color: var(--tblr-link-color); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-link-hover-color); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-color: var(--tblr-link-hover-color); - --tblr-btn-active-border-color: transparent; - --tblr-btn-disabled-color: #667382; - --tblr-btn-disabled-border-color: transparent; - --tblr-btn-box-shadow: 0 0 0 #000; - --tblr-btn-focus-shadow-rgb: 65, 129, 205; - text-decoration: none -} - -.btn-link:focus-visible, -.btn-link:hover { - text-decoration: underline -} - -.btn-link:focus-visible { - color: var(--tblr-btn-color) -} - -.btn-link:hover { - color: var(--tblr-btn-hover-color) -} - -.btn-group-lg>.btn, -.btn-lg { - --tblr-btn-padding-y: 0.5rem; - --tblr-btn-padding-x: 0.75rem; - --tblr-btn-font-size: 1.25rem; - --tblr-btn-border-radius: var(--tblr-border-radius-lg) -} - -.btn-group-sm>.btn, -.btn-sm { - --tblr-btn-padding-y: 0.125rem; - --tblr-btn-padding-x: 0.25rem; - --tblr-btn-font-size: 0.75rem; - --tblr-btn-border-radius: var(--tblr-border-radius-sm) -} - -.fade { - transition: opacity .15s linear -} - -@media (prefers-reduced-motion:reduce) { - .fade { - transition: none - } -} - -.fade:not(.show) { - opacity: 0 -} - -.collapse:not(.show) { - display: none -} - -.collapsing { - height: 0; - overflow: hidden; - transition: height .35s ease -} - -@media (prefers-reduced-motion:reduce) { - .collapsing { - transition: none - } -} - -.collapsing.collapse-horizontal { - width: 0; - height: auto; - transition: width .35s ease -} - -@media (prefers-reduced-motion:reduce) { - .collapsing.collapse-horizontal { - transition: none - } -} - -.dropdown, -.dropdown-center, -.dropend, -.dropstart, -.dropup, -.dropup-center { - position: relative -} - -.dropdown-toggle { - white-space: nowrap -} - -.dropdown-toggle:after { - content: ""; - display: inline-block; - vertical-align: .306em; - width: .36em; - height: .36em; - border-bottom: 1px var(--tblr-border-style); - border-left: 1px var(--tblr-border-style); - margin-right: .1em; - margin-left: .4em; - transform: rotate(-45deg) -} - -.dropdown-menu { - --tblr-dropdown-zindex: 1000; - --tblr-dropdown-min-width: 11rem; - --tblr-dropdown-padding-x: 0; - --tblr-dropdown-padding-y: 0.25rem; - --tblr-dropdown-spacer: 1px; - --tblr-dropdown-font-size: 0.875rem; - --tblr-dropdown-color: var(--tblr-body-color); - --tblr-dropdown-bg: var(--tblr-bg-surface); - --tblr-dropdown-border-color: var(--tblr-border-color-translucent); - --tblr-dropdown-border-radius: var(--tblr-border-radius); - --tblr-dropdown-border-width: var(--tblr-border-width); - --tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width)); - --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); - --tblr-dropdown-divider-margin-y: var(--tblr-spacer); - --tblr-dropdown-box-shadow: var(--tblr-shadow-dropdown); - --tblr-dropdown-link-color: inherit; - --tblr-dropdown-link-hover-color: inherit; - --tblr-dropdown-link-hover-bg: rgba(var(--tblr-muted-rgb), 0.04); - --tblr-dropdown-link-active-color: var(--tblr-primary); - --tblr-dropdown-link-active-bg: var(--tblr-active-bg); - --tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color); - --tblr-dropdown-item-padding-x: 0.75rem; - --tblr-dropdown-item-padding-y: 0.5rem; - --tblr-dropdown-header-color: #667382; - --tblr-dropdown-header-padding-x: 0.75rem; - --tblr-dropdown-header-padding-y: 0.25rem; - position: absolute; - z-index: var(--tblr-dropdown-zindex); - display: none; - min-width: var(--tblr-dropdown-min-width); - padding: var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x); - margin: 0; - font-size: var(--tblr-dropdown-font-size); - color: var(--tblr-dropdown-color); - text-align: left; - list-style: none; - background-color: var(--tblr-dropdown-bg); - background-clip: padding-box; - border: var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color); - border-radius: var(--tblr-dropdown-border-radius); - box-shadow: var(--tblr-dropdown-box-shadow) -} - -.dropdown-menu[data-bs-popper] { - top: 100%; - left: 0; - margin-top: var(--tblr-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(--tblr-dropdown-spacer) -} - -.dropup .dropdown-toggle:after { - content: ""; - display: inline-block; - vertical-align: .306em; - width: .36em; - height: .36em; - border-bottom: 1px var(--tblr-border-style); - border-left: 1px var(--tblr-border-style); - margin-right: .1em; - margin-left: .4em; - transform: rotate(135deg) -} - -.dropend .dropdown-menu[data-bs-popper] { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: var(--tblr-dropdown-spacer) -} - -.dropend .dropdown-toggle:after { - content: ""; - display: inline-block; - vertical-align: .306em; - width: .36em; - height: .36em; - border-bottom: 1px var(--tblr-border-style); - border-left: 1px var(--tblr-border-style); - margin-right: .1em; - margin-left: .4em; - transform: rotate(-135deg) -} - -.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(--tblr-dropdown-spacer) -} - -.dropstart .dropdown-toggle:after { - content: ""; - display: inline-block; - vertical-align: .306em; - width: .36em; - height: .36em; - border-bottom: 1px var(--tblr-border-style); - border-left: 1px var(--tblr-border-style); - margin-right: .1em; - margin-left: .4em; - transform: rotate(45deg) -} - -.dropstart .dropdown-toggle::before { - vertical-align: 0 -} - -.dropdown-divider { - height: 0; - margin: var(--tblr-dropdown-divider-margin-y) 0; - overflow: hidden; - border-top: 1px solid var(--tblr-dropdown-divider-bg); - opacity: 1 -} - -.dropdown-item { - display: block; - width: 100%; - padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); - clear: both; - font-weight: 400; - color: var(--tblr-dropdown-link-color); - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; - border-radius: var(--tblr-dropdown-item-border-radius, 0) -} - -.dropdown-item:focus, -.dropdown-item:hover { - color: var(--tblr-dropdown-link-hover-color); - text-decoration: none; - background-color: var(--tblr-dropdown-link-hover-bg) -} - -.dropdown-item.active, -.dropdown-item:active { - color: var(--tblr-dropdown-link-active-color); - text-decoration: none; - background-color: var(--tblr-dropdown-link-active-bg) -} - -.dropdown-item.disabled, -.dropdown-item:disabled { - color: var(--tblr-dropdown-link-disabled-color); - pointer-events: none; - background-color: transparent -} - -.dropdown-menu.show { - display: block -} - -.dropdown-header { - display: block; - padding: var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x); - margin-bottom: 0; - font-size: .765625rem; - color: var(--tblr-dropdown-header-color); - white-space: nowrap -} - -.dropdown-item-text { - display: block; - padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); - color: var(--tblr-dropdown-link-color) -} - -.dropdown-menu-dark { - --tblr-dropdown-color: #dadfe5; - --tblr-dropdown-bg: #182433; - --tblr-dropdown-border-color: var(--tblr-border-color-translucent); - --tblr-dropdown-link-color: #dadfe5; - --tblr-dropdown-link-hover-color: #ffffff; - --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); - --tblr-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); - --tblr-dropdown-link-active-color: var(--tblr-primary); - --tblr-dropdown-link-active-bg: var(--tblr-active-bg); - --tblr-dropdown-link-disabled-color: #929dab; - --tblr-dropdown-header-color: #929dab -} - -.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(--tblr-border-radius) -} - -.btn-group>.btn-group:not(:first-child), -.btn-group>:not(.btn-check:first-child)+.btn { - margin-left: calc(var(--tblr-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: .75rem; - padding-left: .75rem -} - -.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: .1875rem; - padding-left: .1875rem -} - -.btn-group-lg>.btn+.dropdown-toggle-split, -.btn-lg+.dropdown-toggle-split { - padding-right: .5625rem; - padding-left: .5625rem -} - -.btn-group.show .dropdown-toggle { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125) -} - -.btn-group.show .dropdown-toggle.btn-link { - box-shadow: none -} - -.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(--tblr-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 { - --tblr-nav-link-padding-x: 0.75rem; - --tblr-nav-link-padding-y: 0.5rem; - --tblr-nav-link-color: var(--tblr-muted); - --tblr-nav-link-hover-color: var(--tblr-link-hover-color); - --tblr-nav-link-disabled-color: var(--tblr-disabled-color); - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none -} - -.nav-link { - display: block; - padding: var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x); - font-size: var(--tblr-nav-link-font-size); - font-weight: var(--tblr-nav-link-font-weight); - color: var(--tblr-nav-link-color); - background: 0 0; - border: 0; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .nav-link { - transition: none - } -} - -.nav-link:focus, -.nav-link:hover { - color: var(--tblr-nav-link-hover-color); - text-decoration: none -} - -.nav-link:focus-visible { - outline: 0; - box-shadow: 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.nav-link.disabled { - color: var(--tblr-nav-link-disabled-color); - pointer-events: none; - cursor: default -} - -.nav-tabs { - --tblr-nav-tabs-border-width: var(--tblr-border-width); - --tblr-nav-tabs-border-color: var(--tblr-border-color); - --tblr-nav-tabs-border-radius: var(--tblr-border-radius); - --tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); - --tblr-nav-tabs-link-active-color: var(--tblr-body-color); - --tblr-nav-tabs-link-active-bg: var(--tblr-body-bg); - --tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); - border-bottom: var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color) -} - -.nav-tabs .nav-link { - margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width)); - border: var(--tblr-nav-tabs-border-width) solid transparent; - border-top-left-radius: var(--tblr-nav-tabs-border-radius); - border-top-right-radius: var(--tblr-nav-tabs-border-radius) -} - -.nav-tabs .nav-link:focus, -.nav-tabs .nav-link:hover { - isolation: isolate; - border-color: var(--tblr-nav-tabs-link-hover-border-color) -} - -.nav-tabs .nav-link.disabled, -.nav-tabs .nav-link:disabled { - color: var(--tblr-nav-link-disabled-color); - background-color: transparent; - border-color: transparent -} - -.nav-tabs .nav-item.show .nav-link, -.nav-tabs .nav-link.active { - color: var(--tblr-nav-tabs-link-active-color); - background-color: var(--tblr-nav-tabs-link-active-bg); - border-color: var(--tblr-nav-tabs-link-active-border-color) -} - -.nav-tabs .dropdown-menu { - margin-top: calc(-1 * var(--tblr-nav-tabs-border-width)); - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.nav-pills { - --tblr-nav-pills-border-radius: var(--tblr-border-radius); - --tblr-nav-pills-link-active-color: var(--tblr-primary); - --tblr-nav-pills-link-active-bg: var(--tblr-active-bg) -} - -.nav-pills .nav-link { - border-radius: var(--tblr-nav-pills-border-radius) -} - -.nav-pills .nav-link:disabled { - color: var(--tblr-nav-link-disabled-color); - background-color: transparent; - border-color: transparent -} - -.nav-pills .nav-link.active, -.nav-pills .show>.nav-link { - color: var(--tblr-nav-pills-link-active-color); - background-color: var(--tblr-nav-pills-link-active-bg) -} - -.nav-underline { - --tblr-nav-underline-gap: 1rem; - --tblr-nav-underline-border-width: 0.125rem; - --tblr-nav-underline-link-active-color: var(--tblr-emphasis-color); - gap: var(--tblr-nav-underline-gap) -} - -.nav-underline .nav-link { - padding-right: 0; - padding-left: 0; - border-bottom: var(--tblr-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: 600; - color: var(--tblr-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 { - --tblr-navbar-padding-x: 0; - --tblr-navbar-padding-y: 0.25rem; - --tblr-navbar-color: var(--tblr-body-color); - --tblr-navbar-hover-color: rgba(var(--tblr-emphasis-color-rgb), 0.8); - --tblr-navbar-disabled-color: var(--tblr-disabled-color); - --tblr-navbar-active-color: var(--tblr-body-color) color; - --tblr-navbar-brand-padding-y: 0.5rem; - --tblr-navbar-brand-margin-end: 1rem; - --tblr-navbar-brand-font-size: 1.25rem; - --tblr-navbar-brand-color: var(--tblr-body-color); - --tblr-navbar-brand-hover-color: var(--tblr-body-color) color; - --tblr-navbar-nav-link-padding-x: 0.75rem; - --tblr-navbar-toggler-padding-y: 0; - --tblr-navbar-toggler-padding-x: 0; - --tblr-navbar-toggler-font-size: 1rem; - --tblr-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%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); - --tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), 0.15); - --tblr-navbar-toggler-border-radius: var(--tblr-border-radius); - --tblr-navbar-toggler-focus-width: 0; - --tblr-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(--tblr-navbar-padding-y) var(--tblr-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(--tblr-navbar-brand-padding-y); - padding-bottom: var(--tblr-navbar-brand-padding-y); - margin-right: var(--tblr-navbar-brand-margin-end); - font-size: var(--tblr-navbar-brand-font-size); - color: var(--tblr-navbar-brand-color); - white-space: nowrap -} - -.navbar-brand:focus, -.navbar-brand:hover { - color: var(--tblr-navbar-brand-hover-color); - text-decoration: none -} - -.navbar-nav { - --tblr-nav-link-padding-x: 0; - --tblr-nav-link-padding-y: 0.5rem; - --tblr-nav-link-color: var(--tblr-navbar-color); - --tblr-nav-link-hover-color: var(--tblr-navbar-hover-color); - --tblr-nav-link-disabled-color: var(--tblr-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(--tblr-navbar-active-color) -} - -.navbar-nav .dropdown-menu { - position: static -} - -.navbar-text { - padding-top: .5rem; - padding-bottom: .5rem; - color: var(--tblr-navbar-color) -} - -.navbar-text a, -.navbar-text a:focus, -.navbar-text a:hover { - color: var(--tblr-navbar-active-color) -} - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center -} - -.navbar-toggler { - padding: var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x); - font-size: var(--tblr-navbar-toggler-font-size); - line-height: 1; - color: var(--tblr-navbar-color); - background-color: transparent; - border: var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color); - border-radius: var(--tblr-navbar-toggler-border-radius); - transition: var(--tblr-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(--tblr-navbar-toggler-focus-width) -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - background-image: var(--tblr-navbar-toggler-icon-bg); - background-repeat: no-repeat; - background-position: center; - background-size: 100% -} - -.navbar-nav-scroll { - max-height: var(--tblr-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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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(--tblr-navbar-nav-link-padding-x); - padding-left: var(--tblr-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; - box-shadow: none; - 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 { - --tblr-navbar-color: rgba(255, 255, 255, 0.7); - --tblr-navbar-hover-color: rgba(255, 255, 255, 0.75); - --tblr-navbar-disabled-color: var(--tblr-disabled-color); - --tblr-navbar-active-color: #ffffff; - --tblr-navbar-brand-color: #ffffff; - --tblr-navbar-brand-hover-color: #ffffff; - --tblr-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); - --tblr-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.7%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 { - --tblr-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.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") -} - -.card { - --tblr-card-spacer-y: 1rem; - --tblr-card-spacer-x: 1.5rem; - --tblr-card-title-spacer-y: 1.25rem; - --tblr-card-border-width: var(--tblr-border-width); - --tblr-card-border-color: var(--tblr-border-color-translucent); - --tblr-card-border-radius: var(--tblr-border-radius); - --tblr-card-box-shadow: var(--tblr-shadow-card); - --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); - --tblr-card-cap-padding-y: 1rem; - --tblr-card-cap-padding-x: 1.5rem; - --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); - --tblr-card-cap-color: inherit; - --tblr-card-color: inherit; - --tblr-card-bg: var(--tblr-bg-surface); - --tblr-card-img-overlay-padding: 1rem; - --tblr-card-group-margin: 1.5rem; - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - height: var(--tblr-card-height); - color: var(--tblr-body-color); - word-wrap: break-word; - background-color: var(--tblr-card-bg); - background-clip: border-box; - border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); - border-radius: var(--tblr-card-border-radius); - box-shadow: var(--tblr-card-box-shadow) -} - -.card>.hr, -.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(--tblr-card-inner-border-radius); - border-top-right-radius: var(--tblr-card-inner-border-radius) -} - -.card>.list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: var(--tblr-card-inner-border-radius); - border-bottom-left-radius: var(--tblr-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(--tblr-card-spacer-y) var(--tblr-card-spacer-x); - color: var(--tblr-card-color) -} - -.card-title { - margin-bottom: var(--tblr-card-title-spacer-y); - color: var(--tblr-card-title-color) -} - -.card-subtitle { - margin-top: calc(-.5 * var(--tblr-card-title-spacer-y)); - margin-bottom: 0; - color: var(--tblr-card-subtitle-color) -} - -.card-text:last-child { - margin-bottom: 0 -} - -.card-link:hover { - text-decoration: none -} - -.card-link+.card-link { - margin-left: var(--tblr-card-spacer-x) -} - -.card-header { - padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); - margin-bottom: 0; - color: var(--tblr-card-cap-color); - background-color: var(--tblr-card-cap-bg); - border-bottom: var(--tblr-card-border-width) solid var(--tblr-card-border-color) -} - -.card-header:first-child { - border-radius: var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0 -} - -.card-footer { - padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); - color: var(--tblr-card-cap-color); - background-color: var(--tblr-card-cap-bg); - border-top: var(--tblr-card-border-width) solid var(--tblr-card-border-color) -} - -.card-footer:last-child { - border-radius: 0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) -} - -.card-header-tabs { - margin-right: calc(-.5 * var(--tblr-card-cap-padding-x)); - margin-bottom: calc(-1 * var(--tblr-card-cap-padding-y)); - margin-left: calc(-.5 * var(--tblr-card-cap-padding-x)); - border-bottom: 0 -} - -.card-header-tabs .nav-link.active { - background-color: var(--tblr-card-bg); - border-bottom-color: var(--tblr-card-bg) -} - -.card-header-pills { - margin-right: calc(-.5 * var(--tblr-card-cap-padding-x)); - margin-left: calc(-.5 * var(--tblr-card-cap-padding-x)) -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: var(--tblr-card-img-overlay-padding); - border-radius: var(--tblr-card-inner-border-radius) -} - -.card-img, -.card-img-bottom, -.card-img-top { - width: 100% -} - -.card-img, -.card-img-top { - border-top-left-radius: var(--tblr-card-inner-border-radius); - border-top-right-radius: var(--tblr-card-inner-border-radius) -} - -.card-img, -.card-img-bottom { - border-bottom-right-radius: var(--tblr-card-inner-border-radius); - border-bottom-left-radius: var(--tblr-card-inner-border-radius) -} - -.card-group>.card { - margin-bottom: var(--tblr-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 { - --tblr-accordion-color: var(--tblr-body-color); - --tblr-accordion-bg: transparent; - --tblr-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; - --tblr-accordion-border-color: var(--tblr-border-color-translucent); - --tblr-accordion-border-width: var(--tblr-border-width); - --tblr-accordion-border-radius: var(--tblr-border-radius); - --tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); - --tblr-accordion-btn-padding-x: 1.25rem; - --tblr-accordion-btn-padding-y: 1rem; - --tblr-accordion-btn-color: var(--tblr-body-color); - --tblr-accordion-btn-bg: transparent; - --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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"); - --tblr-accordion-btn-icon-width: 1rem; - --tblr-accordion-btn-icon-transform: rotate(-180deg); - --tblr-accordion-btn-icon-transition: transform 0.2s ease-in-out; - --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230d2b4e'%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"); - --tblr-accordion-btn-focus-border-color: var(--tblr-border-color-translucent); - --tblr-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(32, 107, 196, 0.25); - --tblr-accordion-body-padding-x: 1.25rem; - --tblr-accordion-body-padding-y: 1rem; - --tblr-accordion-active-color: inherit; - --tblr-accordion-active-bg: transparent -} - -.accordion-button { - position: relative; - display: flex; - align-items: center; - width: 100%; - padding: var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x); - font-size: .875rem; - color: var(--tblr-accordion-btn-color); - text-align: left; - background-color: var(--tblr-accordion-btn-bg); - border: 0; - border-radius: 0; - overflow-anchor: none; - transition: var(--tblr-accordion-transition) -} - -@media (prefers-reduced-motion:reduce) { - .accordion-button { - transition: none - } -} - -.accordion-button:not(.collapsed) { - color: var(--tblr-accordion-active-color); - background-color: var(--tblr-accordion-active-bg); - box-shadow: inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color) -} - -.accordion-button:not(.collapsed)::after { - background-image: var(--tblr-accordion-btn-active-icon); - transform: var(--tblr-accordion-btn-icon-transform) -} - -.accordion-button::after { - flex-shrink: 0; - width: var(--tblr-accordion-btn-icon-width); - height: var(--tblr-accordion-btn-icon-width); - margin-left: auto; - content: ""; - background-image: var(--tblr-accordion-btn-icon); - background-repeat: no-repeat; - background-size: var(--tblr-accordion-btn-icon-width); - transition: var(--tblr-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(--tblr-accordion-btn-focus-border-color); - outline: 0; - box-shadow: var(--tblr-accordion-btn-focus-box-shadow) -} - -.accordion-header { - margin-bottom: 0 -} - -.accordion-item { - color: var(--tblr-accordion-color); - background-color: var(--tblr-accordion-bg); - border: var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color) -} - -.accordion-item:first-of-type { - border-top-left-radius: var(--tblr-accordion-border-radius); - border-top-right-radius: var(--tblr-accordion-border-radius) -} - -.accordion-item:first-of-type .accordion-button { - border-top-left-radius: var(--tblr-accordion-inner-border-radius); - border-top-right-radius: var(--tblr-accordion-inner-border-radius) -} - -.accordion-item:not(:first-of-type) { - border-top: 0 -} - -.accordion-item:last-of-type { - border-bottom-right-radius: var(--tblr-accordion-border-radius); - border-bottom-left-radius: var(--tblr-accordion-border-radius) -} - -.accordion-item:last-of-type .accordion-button.collapsed { - border-bottom-right-radius: var(--tblr-accordion-inner-border-radius); - border-bottom-left-radius: var(--tblr-accordion-inner-border-radius) -} - -.accordion-item:last-of-type .accordion-collapse { - border-bottom-right-radius: var(--tblr-accordion-border-radius); - border-bottom-left-radius: var(--tblr-accordion-border-radius) -} - -.accordion-body { - padding: var(--tblr-accordion-body-padding-y) var(--tblr-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 { - --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2379a6dc'%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"); - --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2379a6dc'%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 { - --tblr-breadcrumb-padding-x: 0; - --tblr-breadcrumb-padding-y: 0; - --tblr-breadcrumb-margin-bottom: 1rem; - --tblr-breadcrumb-divider-color: var(--tblr-muted); - --tblr-breadcrumb-item-padding-x: 0.5rem; - --tblr-breadcrumb-item-active-color: inherit; - display: flex; - flex-wrap: wrap; - padding: var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x); - margin-bottom: var(--tblr-breadcrumb-margin-bottom); - font-size: var(--tblr-breadcrumb-font-size); - list-style: none; - background-color: var(--tblr-breadcrumb-bg); - border-radius: var(--tblr-breadcrumb-border-radius) -} - -.breadcrumb-item+.breadcrumb-item { - padding-left: var(--tblr-breadcrumb-item-padding-x) -} - -.breadcrumb-item+.breadcrumb-item::before { - float: left; - padding-right: var(--tblr-breadcrumb-item-padding-x); - color: var(--tblr-breadcrumb-divider-color); - content: var(--tblr-breadcrumb-divider, "/") -} - -.breadcrumb-item.active { - color: var(--tblr-breadcrumb-item-active-color) -} - -.pagination { - --tblr-pagination-padding-x: 0.25rem; - --tblr-pagination-padding-y: 0.25rem; - --tblr-pagination-font-size: 0.875rem; - --tblr-pagination-color: var(--tblr-muted); - --tblr-pagination-bg: transparent; - --tblr-pagination-border-width: 0; - --tblr-pagination-border-color: var(--tblr-border-color); - --tblr-pagination-border-radius: var(--tblr-border-radius); - --tblr-pagination-hover-color: var(--tblr-link-hover-color); - --tblr-pagination-hover-bg: var(--tblr-tertiary-bg); - --tblr-pagination-hover-border-color: var(--tblr-border-color); - --tblr-pagination-focus-color: var(--tblr-link-hover-color); - --tblr-pagination-focus-bg: var(--tblr-secondary-bg); - --tblr-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(32, 107, 196, 0.25); - --tblr-pagination-active-color: #ffffff; - --tblr-pagination-active-bg: var(--tblr-primary); - --tblr-pagination-active-border-color: var(--tblr-primary); - --tblr-pagination-disabled-color: var(--tblr-disabled-color); - --tblr-pagination-disabled-bg: transparent; - --tblr-pagination-disabled-border-color: var(--tblr-border-color); - display: flex; - padding-left: 0; - list-style: none -} - -.page-link { - position: relative; - display: block; - padding: var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x); - font-size: var(--tblr-pagination-font-size); - color: var(--tblr-pagination-color); - background-color: var(--tblr-pagination-bg); - border: var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color); - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .page-link { - transition: none - } -} - -.page-link:hover { - z-index: 2; - color: var(--tblr-pagination-hover-color); - text-decoration: none; - background-color: var(--tblr-pagination-hover-bg); - border-color: var(--tblr-pagination-hover-border-color) -} - -.page-link:focus { - z-index: 3; - color: var(--tblr-pagination-focus-color); - background-color: var(--tblr-pagination-focus-bg); - outline: 0; - box-shadow: var(--tblr-pagination-focus-box-shadow) -} - -.active>.page-link, -.page-link.active { - z-index: 3; - color: var(--tblr-pagination-active-color); - background-color: var(--tblr-pagination-active-bg); - border-color: var(--tblr-pagination-active-border-color) -} - -.disabled>.page-link, -.page-link.disabled { - color: var(--tblr-pagination-disabled-color); - pointer-events: none; - background-color: var(--tblr-pagination-disabled-bg); - border-color: var(--tblr-pagination-disabled-border-color) -} - -.page-item:not(:first-child) .page-link { - margin-left: calc(0 * -1) -} - -.page-item:first-child .page-link { - border-top-left-radius: var(--tblr-pagination-border-radius); - border-bottom-left-radius: var(--tblr-pagination-border-radius) -} - -.page-item:last-child .page-link { - border-top-right-radius: var(--tblr-pagination-border-radius); - border-bottom-right-radius: var(--tblr-pagination-border-radius) -} - -.pagination-lg { - --tblr-pagination-padding-x: 1.5rem; - --tblr-pagination-padding-y: 0.75rem; - --tblr-pagination-font-size: 1.09375rem; - --tblr-pagination-border-radius: var(--tblr-border-radius-lg) -} - -.pagination-sm { - --tblr-pagination-padding-x: 0.5rem; - --tblr-pagination-padding-y: 0.25rem; - --tblr-pagination-font-size: 0.765625rem; - --tblr-pagination-border-radius: var(--tblr-border-radius-sm) -} - -.badge { - --tblr-badge-padding-x: 0.5em; - --tblr-badge-padding-y: 0.25em; - --tblr-badge-font-size: 85.714285%; - --tblr-badge-font-weight: var(--tblr-font-weight-medium); - --tblr-badge-color: #ffffff; - --tblr-badge-border-radius: var(--tblr-border-radius); - display: inline-block; - padding: var(--tblr-badge-padding-y) var(--tblr-badge-padding-x); - font-size: var(--tblr-badge-font-size); - font-weight: var(--tblr-badge-font-weight); - line-height: 1; - color: var(--tblr-badge-color); - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: var(--tblr-badge-border-radius) -} - -.badge:empty { - display: none -} - -.btn .badge { - position: relative; - top: -1px -} - -.alert { - --tblr-alert-bg: transparent; - --tblr-alert-padding-x: 1rem; - --tblr-alert-padding-y: 1rem; - --tblr-alert-margin-bottom: 1rem; - --tblr-alert-color: inherit; - --tblr-alert-border-color: transparent; - --tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color); - --tblr-alert-border-radius: var(--tblr-border-radius); - --tblr-alert-link-color: inherit; - position: relative; - padding: var(--tblr-alert-padding-y) var(--tblr-alert-padding-x); - margin-bottom: var(--tblr-alert-margin-bottom); - color: var(--tblr-alert-color); - background-color: var(--tblr-alert-bg); - border: var(--tblr-alert-border); - border-radius: var(--tblr-alert-border-radius); -} - -.alert-heading { - color: inherit -} - -.alert-link { - font-weight: var(--tblr-font-weight-bold); - color: var(--tblr-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 { - --tblr-alert-color: var(--tblr-primary-text-emphasis); - --tblr-alert-bg: var(--tblr-primary-bg-subtle); - --tblr-alert-border-color: var(--tblr-primary-border-subtle); - --tblr-alert-link-color: var(--tblr-primary-text-emphasis) -} - -.alert-secondary { - --tblr-alert-color: var(--tblr-secondary-text-emphasis); - --tblr-alert-bg: var(--tblr-secondary-bg-subtle); - --tblr-alert-border-color: var(--tblr-secondary-border-subtle); - --tblr-alert-link-color: var(--tblr-secondary-text-emphasis) -} - -.alert-success { - --tblr-alert-color: var(--tblr-success-text-emphasis); - --tblr-alert-bg: var(--tblr-success-bg-subtle); - --tblr-alert-border-color: var(--tblr-success-border-subtle); - --tblr-alert-link-color: var(--tblr-success-text-emphasis) -} - -.alert-info { - --tblr-alert-color: var(--tblr-info-text-emphasis); - --tblr-alert-bg: var(--tblr-info-bg-subtle); - --tblr-alert-border-color: var(--tblr-info-border-subtle); - --tblr-alert-link-color: var(--tblr-info-text-emphasis) -} - -.alert-warning { - --tblr-alert-color: var(--tblr-warning-text-emphasis); - --tblr-alert-bg: var(--tblr-warning-bg-subtle); - --tblr-alert-border-color: var(--tblr-warning-border-subtle); - --tblr-alert-link-color: var(--tblr-warning-text-emphasis) -} - -.alert-danger { - --tblr-alert-color: var(--tblr-danger-text-emphasis); - --tblr-alert-bg: var(--tblr-danger-bg-subtle); - --tblr-alert-border-color: var(--tblr-danger-border-subtle); - --tblr-alert-link-color: var(--tblr-danger-text-emphasis) -} - -.alert-light { - --tblr-alert-color: var(--tblr-light-text-emphasis); - --tblr-alert-bg: var(--tblr-light-bg-subtle); - --tblr-alert-border-color: var(--tblr-light-border-subtle); - --tblr-alert-link-color: var(--tblr-light-text-emphasis) -} - -.alert-dark { - --tblr-alert-color: var(--tblr-dark-text-emphasis); - --tblr-alert-bg: var(--tblr-dark-bg-subtle); - --tblr-alert-border-color: var(--tblr-dark-border-subtle); - --tblr-alert-link-color: var(--tblr-dark-text-emphasis) -} - -.alert-muted { - --tblr-alert-color: var(--tblr-muted-text-emphasis); - --tblr-alert-bg: var(--tblr-muted-bg-subtle); - --tblr-alert-border-color: var(--tblr-muted-border-subtle); - --tblr-alert-link-color: var(--tblr-muted-text-emphasis) -} - -.alert-blue { - --tblr-alert-color: var(--tblr-blue-text-emphasis); - --tblr-alert-bg: var(--tblr-blue-bg-subtle); - --tblr-alert-border-color: var(--tblr-blue-border-subtle); - --tblr-alert-link-color: var(--tblr-blue-text-emphasis) -} - -.alert-azure { - --tblr-alert-color: var(--tblr-azure-text-emphasis); - --tblr-alert-bg: var(--tblr-azure-bg-subtle); - --tblr-alert-border-color: var(--tblr-azure-border-subtle); - --tblr-alert-link-color: var(--tblr-azure-text-emphasis) -} - -.alert-indigo { - --tblr-alert-color: var(--tblr-indigo-text-emphasis); - --tblr-alert-bg: var(--tblr-indigo-bg-subtle); - --tblr-alert-border-color: var(--tblr-indigo-border-subtle); - --tblr-alert-link-color: var(--tblr-indigo-text-emphasis) -} - -.alert-purple { - --tblr-alert-color: var(--tblr-purple-text-emphasis); - --tblr-alert-bg: var(--tblr-purple-bg-subtle); - --tblr-alert-border-color: var(--tblr-purple-border-subtle); - --tblr-alert-link-color: var(--tblr-purple-text-emphasis) -} - -.alert-pink { - --tblr-alert-color: var(--tblr-pink-text-emphasis); - --tblr-alert-bg: var(--tblr-pink-bg-subtle); - --tblr-alert-border-color: var(--tblr-pink-border-subtle); - --tblr-alert-link-color: var(--tblr-pink-text-emphasis) -} - -.alert-red { - --tblr-alert-color: var(--tblr-red-text-emphasis); - --tblr-alert-bg: var(--tblr-red-bg-subtle); - --tblr-alert-border-color: var(--tblr-red-border-subtle); - --tblr-alert-link-color: var(--tblr-red-text-emphasis) -} - -.alert-orange { - --tblr-alert-color: var(--tblr-orange-text-emphasis); - --tblr-alert-bg: var(--tblr-orange-bg-subtle); - --tblr-alert-border-color: var(--tblr-orange-border-subtle); - --tblr-alert-link-color: var(--tblr-orange-text-emphasis) -} - -.alert-yellow { - --tblr-alert-color: var(--tblr-yellow-text-emphasis); - --tblr-alert-bg: var(--tblr-yellow-bg-subtle); - --tblr-alert-border-color: var(--tblr-yellow-border-subtle); - --tblr-alert-link-color: var(--tblr-yellow-text-emphasis) -} - -.alert-lime { - --tblr-alert-color: var(--tblr-lime-text-emphasis); - --tblr-alert-bg: var(--tblr-lime-bg-subtle); - --tblr-alert-border-color: var(--tblr-lime-border-subtle); - --tblr-alert-link-color: var(--tblr-lime-text-emphasis) -} - -.alert-green { - --tblr-alert-color: var(--tblr-green-text-emphasis); - --tblr-alert-bg: var(--tblr-green-bg-subtle); - --tblr-alert-border-color: var(--tblr-green-border-subtle); - --tblr-alert-link-color: var(--tblr-green-text-emphasis) -} - -.alert-teal { - --tblr-alert-color: var(--tblr-teal-text-emphasis); - --tblr-alert-bg: var(--tblr-teal-bg-subtle); - --tblr-alert-border-color: var(--tblr-teal-border-subtle); - --tblr-alert-link-color: var(--tblr-teal-text-emphasis) -} - -.alert-cyan { - --tblr-alert-color: var(--tblr-cyan-text-emphasis); - --tblr-alert-bg: var(--tblr-cyan-bg-subtle); - --tblr-alert-border-color: var(--tblr-cyan-border-subtle); - --tblr-alert-link-color: var(--tblr-cyan-text-emphasis) -} - -.alert-facebook { - --tblr-alert-color: var(--tblr-facebook-text-emphasis); - --tblr-alert-bg: var(--tblr-facebook-bg-subtle); - --tblr-alert-border-color: var(--tblr-facebook-border-subtle); - --tblr-alert-link-color: var(--tblr-facebook-text-emphasis) -} - -.alert-twitter { - --tblr-alert-color: var(--tblr-twitter-text-emphasis); - --tblr-alert-bg: var(--tblr-twitter-bg-subtle); - --tblr-alert-border-color: var(--tblr-twitter-border-subtle); - --tblr-alert-link-color: var(--tblr-twitter-text-emphasis) -} - -.alert-linkedin { - --tblr-alert-color: var(--tblr-linkedin-text-emphasis); - --tblr-alert-bg: var(--tblr-linkedin-bg-subtle); - --tblr-alert-border-color: var(--tblr-linkedin-border-subtle); - --tblr-alert-link-color: var(--tblr-linkedin-text-emphasis) -} - -.alert-google { - --tblr-alert-color: var(--tblr-google-text-emphasis); - --tblr-alert-bg: var(--tblr-google-bg-subtle); - --tblr-alert-border-color: var(--tblr-google-border-subtle); - --tblr-alert-link-color: var(--tblr-google-text-emphasis) -} - -.alert-youtube { - --tblr-alert-color: var(--tblr-youtube-text-emphasis); - --tblr-alert-bg: var(--tblr-youtube-bg-subtle); - --tblr-alert-border-color: var(--tblr-youtube-border-subtle); - --tblr-alert-link-color: var(--tblr-youtube-text-emphasis) -} - -.alert-vimeo { - --tblr-alert-color: var(--tblr-vimeo-text-emphasis); - --tblr-alert-bg: var(--tblr-vimeo-bg-subtle); - --tblr-alert-border-color: var(--tblr-vimeo-border-subtle); - --tblr-alert-link-color: var(--tblr-vimeo-text-emphasis) -} - -.alert-dribbble { - --tblr-alert-color: var(--tblr-dribbble-text-emphasis); - --tblr-alert-bg: var(--tblr-dribbble-bg-subtle); - --tblr-alert-border-color: var(--tblr-dribbble-border-subtle); - --tblr-alert-link-color: var(--tblr-dribbble-text-emphasis) -} - -.alert-github { - --tblr-alert-color: var(--tblr-github-text-emphasis); - --tblr-alert-bg: var(--tblr-github-bg-subtle); - --tblr-alert-border-color: var(--tblr-github-border-subtle); - --tblr-alert-link-color: var(--tblr-github-text-emphasis) -} - -.alert-instagram { - --tblr-alert-color: var(--tblr-instagram-text-emphasis); - --tblr-alert-bg: var(--tblr-instagram-bg-subtle); - --tblr-alert-border-color: var(--tblr-instagram-border-subtle); - --tblr-alert-link-color: var(--tblr-instagram-text-emphasis) -} - -.alert-pinterest { - --tblr-alert-color: var(--tblr-pinterest-text-emphasis); - --tblr-alert-bg: var(--tblr-pinterest-bg-subtle); - --tblr-alert-border-color: var(--tblr-pinterest-border-subtle); - --tblr-alert-link-color: var(--tblr-pinterest-text-emphasis) -} - -.alert-vk { - --tblr-alert-color: var(--tblr-vk-text-emphasis); - --tblr-alert-bg: var(--tblr-vk-bg-subtle); - --tblr-alert-border-color: var(--tblr-vk-border-subtle); - --tblr-alert-link-color: var(--tblr-vk-text-emphasis) -} - -.alert-rss { - --tblr-alert-color: var(--tblr-rss-text-emphasis); - --tblr-alert-bg: var(--tblr-rss-bg-subtle); - --tblr-alert-border-color: var(--tblr-rss-border-subtle); - --tblr-alert-link-color: var(--tblr-rss-text-emphasis) -} - -.alert-flickr { - --tblr-alert-color: var(--tblr-flickr-text-emphasis); - --tblr-alert-bg: var(--tblr-flickr-bg-subtle); - --tblr-alert-border-color: var(--tblr-flickr-border-subtle); - --tblr-alert-link-color: var(--tblr-flickr-text-emphasis) -} - -.alert-bitbucket { - --tblr-alert-color: var(--tblr-bitbucket-text-emphasis); - --tblr-alert-bg: var(--tblr-bitbucket-bg-subtle); - --tblr-alert-border-color: var(--tblr-bitbucket-border-subtle); - --tblr-alert-link-color: var(--tblr-bitbucket-text-emphasis) -} - -.alert-tabler { - --tblr-alert-color: var(--tblr-tabler-text-emphasis); - --tblr-alert-bg: var(--tblr-tabler-bg-subtle); - --tblr-alert-border-color: var(--tblr-tabler-border-subtle); - --tblr-alert-link-color: var(--tblr-tabler-text-emphasis) -} - -@keyframes progress-bar-stripes { - 0% { - background-position-x: .5rem - } -} - -.progress, -.progress-stacked { - --tblr-progress-height: 0.5rem; - --tblr-progress-font-size: 0.65625rem; - --tblr-progress-bg: var(--tblr-border-color); - --tblr-progress-border-radius: var(--tblr-border-radius); - --tblr-progress-box-shadow: var(--tblr-box-shadow-inset); - --tblr-progress-bar-color: #ffffff; - --tblr-progress-bar-bg: var(--tblr-primary); - --tblr-progress-bar-transition: width 0.6s ease; - display: flex; - height: var(--tblr-progress-height); - overflow: hidden; - font-size: var(--tblr-progress-font-size); - background-color: var(--tblr-progress-bg); - border-radius: var(--tblr-progress-border-radius); - box-shadow: var(--tblr-progress-box-shadow) -} - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - overflow: hidden; - color: var(--tblr-progress-bar-color); - text-align: center; - white-space: nowrap; - background-color: var(--tblr-progress-bar-bg); - transition: var(--tblr-progress-bar-transition) -} - -@media (prefers-reduced-motion:reduce) { - .progress-bar { - transition: none - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-size: var(--tblr-progress-height) var(--tblr-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 { - --tblr-list-group-color: var(--tblr-body-color); - --tblr-list-group-bg: inherit; - --tblr-list-group-border-color: var(--tblr-border-color); - --tblr-list-group-border-width: var(--tblr-border-width); - --tblr-list-group-border-radius: var(--tblr-border-radius); - --tblr-list-group-item-padding-x: 1.5rem; - --tblr-list-group-item-padding-y: 1rem; - --tblr-list-group-action-color: inherit; - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: rgba(var(--tblr-muted-rgb), 0.04); - --tblr-list-group-action-active-color: var(--tblr-body-color); - --tblr-list-group-action-active-bg: var(--tblr-secondary-bg); - --tblr-list-group-disabled-color: var(--tblr-secondary-color); - --tblr-list-group-disabled-bg: inherit; - --tblr-list-group-active-color: inherit; - --tblr-list-group-active-bg: var(--tblr-active-bg); - --tblr-list-group-active-border-color: var(--tblr-border-color); - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: var(--tblr-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(--tblr-list-group-action-color); - text-align: inherit -} - -.list-group-item-action:focus, -.list-group-item-action:hover { - z-index: 1; - color: var(--tblr-list-group-action-hover-color); - text-decoration: none; - background-color: var(--tblr-list-group-action-hover-bg) -} - -.list-group-item-action:active { - color: var(--tblr-list-group-action-active-color); - background-color: var(--tblr-list-group-action-active-bg) -} - -.list-group-item { - position: relative; - display: block; - padding: var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x); - color: var(--tblr-list-group-color); - background-color: var(--tblr-list-group-bg); - border: var(--tblr-list-group-border-width) solid var(--tblr-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(--tblr-list-group-disabled-color); - pointer-events: none; - background-color: var(--tblr-list-group-disabled-bg) -} - -.list-group-item.active { - z-index: 2; - color: var(--tblr-list-group-active-color); - background-color: var(--tblr-list-group-active-bg); - border-color: var(--tblr-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(--tblr-list-group-border-width)); - border-top-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 -} - -.list-group-horizontal>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 - } - - .list-group-horizontal-sm>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 - } - - .list-group-horizontal-md>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 - } - - .list-group-horizontal-lg>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 - } - - .list-group-horizontal-xl>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width); - border-left-width: 0 - } - - .list-group-horizontal-xxl>.list-group-item+.list-group-item.active { - margin-left: calc(-1 * var(--tblr-list-group-border-width)); - border-left-width: var(--tblr-list-group-border-width) - } -} - -.list-group-flush { - border-radius: 0 -} - -.list-group-flush>.list-group-item { - border-width: 0 0 var(--tblr-list-group-border-width) -} - -.list-group-flush>.list-group-item:last-child { - border-bottom-width: 0 -} - -.list-group-item-primary { - --tblr-list-group-color: var(--tblr-primary-text-emphasis); - --tblr-list-group-bg: var(--tblr-primary-bg-subtle); - --tblr-list-group-border-color: var(--tblr-primary-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle); - --tblr-list-group-active-color: var(--tblr-primary-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-primary-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis) -} - -.list-group-item-secondary { - --tblr-list-group-color: var(--tblr-secondary-text-emphasis); - --tblr-list-group-bg: var(--tblr-secondary-bg-subtle); - --tblr-list-group-border-color: var(--tblr-secondary-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle); - --tblr-list-group-active-color: var(--tblr-secondary-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis) -} - -.list-group-item-success { - --tblr-list-group-color: var(--tblr-success-text-emphasis); - --tblr-list-group-bg: var(--tblr-success-bg-subtle); - --tblr-list-group-border-color: var(--tblr-success-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-success-border-subtle); - --tblr-list-group-active-color: var(--tblr-success-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-success-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-success-text-emphasis) -} - -.list-group-item-info { - --tblr-list-group-color: var(--tblr-info-text-emphasis); - --tblr-list-group-bg: var(--tblr-info-bg-subtle); - --tblr-list-group-border-color: var(--tblr-info-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-info-border-subtle); - --tblr-list-group-active-color: var(--tblr-info-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-info-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-info-text-emphasis) -} - -.list-group-item-warning { - --tblr-list-group-color: var(--tblr-warning-text-emphasis); - --tblr-list-group-bg: var(--tblr-warning-bg-subtle); - --tblr-list-group-border-color: var(--tblr-warning-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle); - --tblr-list-group-active-color: var(--tblr-warning-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-warning-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis) -} - -.list-group-item-danger { - --tblr-list-group-color: var(--tblr-danger-text-emphasis); - --tblr-list-group-bg: var(--tblr-danger-bg-subtle); - --tblr-list-group-border-color: var(--tblr-danger-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle); - --tblr-list-group-active-color: var(--tblr-danger-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-danger-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis) -} - -.list-group-item-light { - --tblr-list-group-color: var(--tblr-light-text-emphasis); - --tblr-list-group-bg: var(--tblr-light-bg-subtle); - --tblr-list-group-border-color: var(--tblr-light-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-light-border-subtle); - --tblr-list-group-active-color: var(--tblr-light-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-light-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-light-text-emphasis) -} - -.list-group-item-dark { - --tblr-list-group-color: var(--tblr-dark-text-emphasis); - --tblr-list-group-bg: var(--tblr-dark-bg-subtle); - --tblr-list-group-border-color: var(--tblr-dark-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle); - --tblr-list-group-active-color: var(--tblr-dark-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-dark-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis) -} - -.list-group-item-muted { - --tblr-list-group-color: var(--tblr-muted-text-emphasis); - --tblr-list-group-bg: var(--tblr-muted-bg-subtle); - --tblr-list-group-border-color: var(--tblr-muted-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle); - --tblr-list-group-active-color: var(--tblr-muted-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-muted-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis) -} - -.list-group-item-blue { - --tblr-list-group-color: var(--tblr-blue-text-emphasis); - --tblr-list-group-bg: var(--tblr-blue-bg-subtle); - --tblr-list-group-border-color: var(--tblr-blue-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle); - --tblr-list-group-active-color: var(--tblr-blue-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-blue-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis) -} - -.list-group-item-azure { - --tblr-list-group-color: var(--tblr-azure-text-emphasis); - --tblr-list-group-bg: var(--tblr-azure-bg-subtle); - --tblr-list-group-border-color: var(--tblr-azure-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle); - --tblr-list-group-active-color: var(--tblr-azure-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-azure-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis) -} - -.list-group-item-indigo { - --tblr-list-group-color: var(--tblr-indigo-text-emphasis); - --tblr-list-group-bg: var(--tblr-indigo-bg-subtle); - --tblr-list-group-border-color: var(--tblr-indigo-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle); - --tblr-list-group-active-color: var(--tblr-indigo-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis) -} - -.list-group-item-purple { - --tblr-list-group-color: var(--tblr-purple-text-emphasis); - --tblr-list-group-bg: var(--tblr-purple-bg-subtle); - --tblr-list-group-border-color: var(--tblr-purple-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle); - --tblr-list-group-active-color: var(--tblr-purple-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-purple-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis) -} - -.list-group-item-pink { - --tblr-list-group-color: var(--tblr-pink-text-emphasis); - --tblr-list-group-bg: var(--tblr-pink-bg-subtle); - --tblr-list-group-border-color: var(--tblr-pink-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle); - --tblr-list-group-active-color: var(--tblr-pink-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-pink-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis) -} - -.list-group-item-red { - --tblr-list-group-color: var(--tblr-red-text-emphasis); - --tblr-list-group-bg: var(--tblr-red-bg-subtle); - --tblr-list-group-border-color: var(--tblr-red-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-red-border-subtle); - --tblr-list-group-active-color: var(--tblr-red-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-red-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-red-text-emphasis) -} - -.list-group-item-orange { - --tblr-list-group-color: var(--tblr-orange-text-emphasis); - --tblr-list-group-bg: var(--tblr-orange-bg-subtle); - --tblr-list-group-border-color: var(--tblr-orange-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle); - --tblr-list-group-active-color: var(--tblr-orange-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-orange-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis) -} - -.list-group-item-yellow { - --tblr-list-group-color: var(--tblr-yellow-text-emphasis); - --tblr-list-group-bg: var(--tblr-yellow-bg-subtle); - --tblr-list-group-border-color: var(--tblr-yellow-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle); - --tblr-list-group-active-color: var(--tblr-yellow-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis) -} - -.list-group-item-lime { - --tblr-list-group-color: var(--tblr-lime-text-emphasis); - --tblr-list-group-bg: var(--tblr-lime-bg-subtle); - --tblr-list-group-border-color: var(--tblr-lime-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle); - --tblr-list-group-active-color: var(--tblr-lime-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-lime-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis) -} - -.list-group-item-green { - --tblr-list-group-color: var(--tblr-green-text-emphasis); - --tblr-list-group-bg: var(--tblr-green-bg-subtle); - --tblr-list-group-border-color: var(--tblr-green-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-green-border-subtle); - --tblr-list-group-active-color: var(--tblr-green-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-green-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-green-text-emphasis) -} - -.list-group-item-teal { - --tblr-list-group-color: var(--tblr-teal-text-emphasis); - --tblr-list-group-bg: var(--tblr-teal-bg-subtle); - --tblr-list-group-border-color: var(--tblr-teal-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle); - --tblr-list-group-active-color: var(--tblr-teal-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-teal-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis) -} - -.list-group-item-cyan { - --tblr-list-group-color: var(--tblr-cyan-text-emphasis); - --tblr-list-group-bg: var(--tblr-cyan-bg-subtle); - --tblr-list-group-border-color: var(--tblr-cyan-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle); - --tblr-list-group-active-color: var(--tblr-cyan-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis) -} - -.list-group-item-facebook { - --tblr-list-group-color: var(--tblr-facebook-text-emphasis); - --tblr-list-group-bg: var(--tblr-facebook-bg-subtle); - --tblr-list-group-border-color: var(--tblr-facebook-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-facebook-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-facebook-border-subtle); - --tblr-list-group-active-color: var(--tblr-facebook-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-facebook-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-facebook-text-emphasis) -} - -.list-group-item-twitter { - --tblr-list-group-color: var(--tblr-twitter-text-emphasis); - --tblr-list-group-bg: var(--tblr-twitter-bg-subtle); - --tblr-list-group-border-color: var(--tblr-twitter-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-twitter-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-twitter-border-subtle); - --tblr-list-group-active-color: var(--tblr-twitter-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-twitter-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-twitter-text-emphasis) -} - -.list-group-item-linkedin { - --tblr-list-group-color: var(--tblr-linkedin-text-emphasis); - --tblr-list-group-bg: var(--tblr-linkedin-bg-subtle); - --tblr-list-group-border-color: var(--tblr-linkedin-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-linkedin-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-linkedin-border-subtle); - --tblr-list-group-active-color: var(--tblr-linkedin-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-linkedin-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-linkedin-text-emphasis) -} - -.list-group-item-google { - --tblr-list-group-color: var(--tblr-google-text-emphasis); - --tblr-list-group-bg: var(--tblr-google-bg-subtle); - --tblr-list-group-border-color: var(--tblr-google-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-google-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-google-border-subtle); - --tblr-list-group-active-color: var(--tblr-google-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-google-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-google-text-emphasis) -} - -.list-group-item-youtube { - --tblr-list-group-color: var(--tblr-youtube-text-emphasis); - --tblr-list-group-bg: var(--tblr-youtube-bg-subtle); - --tblr-list-group-border-color: var(--tblr-youtube-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-youtube-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-youtube-border-subtle); - --tblr-list-group-active-color: var(--tblr-youtube-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-youtube-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-youtube-text-emphasis) -} - -.list-group-item-vimeo { - --tblr-list-group-color: var(--tblr-vimeo-text-emphasis); - --tblr-list-group-bg: var(--tblr-vimeo-bg-subtle); - --tblr-list-group-border-color: var(--tblr-vimeo-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-vimeo-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-vimeo-border-subtle); - --tblr-list-group-active-color: var(--tblr-vimeo-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-vimeo-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-vimeo-text-emphasis) -} - -.list-group-item-dribbble { - --tblr-list-group-color: var(--tblr-dribbble-text-emphasis); - --tblr-list-group-bg: var(--tblr-dribbble-bg-subtle); - --tblr-list-group-border-color: var(--tblr-dribbble-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-dribbble-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-dribbble-border-subtle); - --tblr-list-group-active-color: var(--tblr-dribbble-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-dribbble-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-dribbble-text-emphasis) -} - -.list-group-item-github { - --tblr-list-group-color: var(--tblr-github-text-emphasis); - --tblr-list-group-bg: var(--tblr-github-bg-subtle); - --tblr-list-group-border-color: var(--tblr-github-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-github-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-github-border-subtle); - --tblr-list-group-active-color: var(--tblr-github-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-github-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-github-text-emphasis) -} - -.list-group-item-instagram { - --tblr-list-group-color: var(--tblr-instagram-text-emphasis); - --tblr-list-group-bg: var(--tblr-instagram-bg-subtle); - --tblr-list-group-border-color: var(--tblr-instagram-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-instagram-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-instagram-border-subtle); - --tblr-list-group-active-color: var(--tblr-instagram-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-instagram-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-instagram-text-emphasis) -} - -.list-group-item-pinterest { - --tblr-list-group-color: var(--tblr-pinterest-text-emphasis); - --tblr-list-group-bg: var(--tblr-pinterest-bg-subtle); - --tblr-list-group-border-color: var(--tblr-pinterest-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-pinterest-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-pinterest-border-subtle); - --tblr-list-group-active-color: var(--tblr-pinterest-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-pinterest-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-pinterest-text-emphasis) -} - -.list-group-item-vk { - --tblr-list-group-color: var(--tblr-vk-text-emphasis); - --tblr-list-group-bg: var(--tblr-vk-bg-subtle); - --tblr-list-group-border-color: var(--tblr-vk-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-vk-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-vk-border-subtle); - --tblr-list-group-active-color: var(--tblr-vk-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-vk-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-vk-text-emphasis) -} - -.list-group-item-rss { - --tblr-list-group-color: var(--tblr-rss-text-emphasis); - --tblr-list-group-bg: var(--tblr-rss-bg-subtle); - --tblr-list-group-border-color: var(--tblr-rss-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-rss-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-rss-border-subtle); - --tblr-list-group-active-color: var(--tblr-rss-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-rss-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-rss-text-emphasis) -} - -.list-group-item-flickr { - --tblr-list-group-color: var(--tblr-flickr-text-emphasis); - --tblr-list-group-bg: var(--tblr-flickr-bg-subtle); - --tblr-list-group-border-color: var(--tblr-flickr-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-flickr-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-flickr-border-subtle); - --tblr-list-group-active-color: var(--tblr-flickr-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-flickr-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-flickr-text-emphasis) -} - -.list-group-item-bitbucket { - --tblr-list-group-color: var(--tblr-bitbucket-text-emphasis); - --tblr-list-group-bg: var(--tblr-bitbucket-bg-subtle); - --tblr-list-group-border-color: var(--tblr-bitbucket-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-bitbucket-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-bitbucket-border-subtle); - --tblr-list-group-active-color: var(--tblr-bitbucket-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-bitbucket-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-bitbucket-text-emphasis) -} - -.list-group-item-tabler { - --tblr-list-group-color: var(--tblr-tabler-text-emphasis); - --tblr-list-group-bg: var(--tblr-tabler-bg-subtle); - --tblr-list-group-border-color: var(--tblr-tabler-border-subtle); - --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); - --tblr-list-group-action-hover-bg: var(--tblr-tabler-border-subtle); - --tblr-list-group-action-active-color: var(--tblr-emphasis-color); - --tblr-list-group-action-active-bg: var(--tblr-tabler-border-subtle); - --tblr-list-group-active-color: var(--tblr-tabler-bg-subtle); - --tblr-list-group-active-bg: var(--tblr-tabler-text-emphasis); - --tblr-list-group-active-border-color: var(--tblr-tabler-text-emphasis) -} - -.btn-close { - --tblr-btn-close-color: #000000; - --tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000000'%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"); - --tblr-btn-close-opacity: 0.3; - --tblr-btn-close-hover-opacity: 0.75; - --tblr-btn-close-focus-shadow: 0 0 0 0.25rem rgba(32, 107, 196, 0.25); - --tblr-btn-close-focus-opacity: 1; - --tblr-btn-close-disabled-opacity: 0.25; - --tblr-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); - box-sizing: content-box; - width: .75rem; - height: .75rem; - padding: .25em .25em; - color: var(--tblr-btn-close-color); - background: transparent var(--tblr-btn-close-bg) center/.75rem auto no-repeat; - border: 0; - border-radius: 4px; - opacity: var(--tblr-btn-close-opacity) -} - -.btn-close:hover { - color: var(--tblr-btn-close-color); - text-decoration: none; - opacity: var(--tblr-btn-close-hover-opacity) -} - -.btn-close:focus { - outline: 0; - box-shadow: var(--tblr-btn-close-focus-shadow); - opacity: var(--tblr-btn-close-focus-opacity) -} - -.btn-close.disabled, -.btn-close:disabled { - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - opacity: var(--tblr-btn-close-disabled-opacity) -} - -.btn-close-white { - filter: var(--tblr-btn-close-white-filter) -} - -[data-bs-theme=dark] .btn-close { - filter: var(--tblr-btn-close-white-filter) -} - -.toast { - --tblr-toast-zindex: 1090; - --tblr-toast-padding-x: 0.75rem; - --tblr-toast-padding-y: 0.5rem; - --tblr-toast-spacing: calc(var(--tblr-page-padding) * 2); - --tblr-toast-max-width: 350px; - --tblr-toast-font-size: 0.875rem; - --tblr-toast-bg: rgba(var(--tblr-body-bg-rgb), 0.85); - --tblr-toast-border-width: var(--tblr-border-width); - --tblr-toast-border-color: var(--tblr-border-color); - --tblr-toast-border-radius: var(--tblr-border-radius); - --tblr-toast-box-shadow: var(--tblr-box-shadow); - --tblr-toast-header-color: var(--tblr-muted); - --tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), 0.85); - --tblr-toast-header-border-color: var(--tblr-border-color); - width: var(--tblr-toast-max-width); - max-width: 100%; - font-size: var(--tblr-toast-font-size); - color: var(--tblr-toast-color); - pointer-events: auto; - background-color: var(--tblr-toast-bg); - background-clip: padding-box; - border: var(--tblr-toast-border-width) solid var(--tblr-toast-border-color); - box-shadow: var(--tblr-toast-box-shadow); - border-radius: var(--tblr-toast-border-radius) -} - -.toast.showing { - opacity: 0 -} - -.toast:not(.show) { - display: none -} - -.toast-container { - --tblr-toast-zindex: 1090; - position: absolute; - z-index: var(--tblr-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(--tblr-toast-spacing) -} - -.toast-header { - display: flex; - align-items: center; - padding: var(--tblr-toast-padding-y) var(--tblr-toast-padding-x); - color: var(--tblr-toast-header-color); - background-color: var(--tblr-toast-header-bg); - background-clip: padding-box; - border-bottom: var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color); - border-top-left-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); - border-top-right-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)) -} - -.toast-header .btn-close { - margin-right: calc(-.5 * var(--tblr-toast-padding-x)); - margin-left: var(--tblr-toast-padding-x) -} - -.toast-body { - padding: var(--tblr-toast-padding-x); - word-wrap: break-word -} - -.modal { - --tblr-modal-zindex: 1055; - --tblr-modal-width: 930px; - --tblr-modal-padding: 1.5rem; - --tblr-modal-margin: 0.5rem; - --tblr-modal-bg: var(--tblr-bg-surface); - --tblr-modal-border-color: rgba(100, 100, 100, 0.671); - --tblr-modal-border-width: var(--tblr-border-width); - --tblr-modal-border-radius: var(--tblr-border-radius-lg); - --tblr-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px); - --tblr-modal-header-padding-x: 1.5rem; - --tblr-modal-header-padding-y: 1.5rem; - --tblr-modal-header-padding: 1.5rem; - --tblr-modal-header-border-color: var(--tblr-border-color); - --tblr-modal-header-border-width: var(--tblr-border-width); - --tblr-modal-title-line-height: 1.4285714286; - --tblr-modal-footer-gap: 0.75rem; - --tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary); - --tblr-modal-footer-border-color: var(--tblr-border-color); - --tblr-modal-footer-border-width: var(--tblr-border-width); - position: fixed; - top: 0; - left: 0; - z-index: var(--tblr-modal-zindex); - display: none; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - outline: 0 -} - -.modal-dialog { - position: relative; - width: auto; - margin: var(--tblr-modal-margin); - pointer-events: none -} - -.modal.fade .modal-dialog { - transition: transform .3s ease-out; - transform: translate(0, -1rem) -} - -@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(--tblr-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(--tblr-modal-margin) * 2) -} - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - color: var(--tblr-modal-color); - pointer-events: auto; - background-color: var(--tblr-modal-bg); - background-clip: padding-box; - border: var(--tblr-modal-border-width) solid var(--tblr-modal-border-color); - border-radius: var(--tblr-modal-border-radius); - box-shadow: var(--tblr-modal-box-shadow); - outline: 0 -} - -.modal-backdrop { - --tblr-backdrop-zindex: 1050; - --tblr-backdrop-bg: #182433; - --tblr-backdrop-opacity: 0.24; - position: fixed; - top: 0; - left: 0; - z-index: var(--tblr-backdrop-zindex); - width: 100vw; - height: 100vh; - background-color: var(--tblr-backdrop-bg) -} - -.modal-backdrop.fade { - opacity: 0 -} - -.modal-backdrop.show { - opacity: var(--tblr-backdrop-opacity) -} - -.modal-header { - display: flex; - flex-shrink: 0; - align-items: center; - justify-content: space-between; - padding: var(--tblr-modal-header-padding); - border-bottom: var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color); - border-top-left-radius: var(--tblr-modal-inner-border-radius); - border-top-right-radius: var(--tblr-modal-inner-border-radius) -} - -.modal-header .btn-close { - padding: calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5); - margin: calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x)) calc(-.5 * var(--tblr-modal-header-padding-y)) auto -} - -.modal-title { - margin-bottom: 0; - line-height: var(--tblr-modal-title-line-height) -} - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: var(--tblr-modal-padding) -} - -.modal-footer { - display: flex; - flex-shrink: 0; - flex-wrap: wrap; - align-items: center; - justify-content: flex-end; - padding: calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5); - background-color: var(--tblr-modal-footer-bg); - border-top: var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color); - border-bottom-right-radius: var(--tblr-modal-inner-border-radius); - border-bottom-left-radius: var(--tblr-modal-inner-border-radius) -} - -.modal-footer>* { - margin: calc(var(--tblr-modal-footer-gap) * .5) -} - -@media (min-width:576px) { - .modal { - --tblr-modal-margin: 1.75rem; - --tblr-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) - } - - .modal-dialog { - max-width: var(--tblr-modal-width); - margin-right: auto; - margin-left: auto - } - - .modal-sm { - --tblr-modal-width: 380px - } -} - -@media (min-width:992px) { - - .modal-lg, - .modal-xl { - --tblr-modal-width: 720px - } -} - -@media (min-width:1200px) { - .modal-xl { - --tblr-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 { - --tblr-tooltip-zindex: 1080; - --tblr-tooltip-max-width: 200px; - --tblr-tooltip-padding-x: var(--tblr-spacer-2); - --tblr-tooltip-padding-y: var(--tblr-spacer-2); - --tblr-tooltip-font-size: 0.765625rem; - --tblr-tooltip-color: var(--tblr-light); - --tblr-tooltip-bg: var(--tblr-bg-surface-dark); - --tblr-tooltip-border-radius: var(--tblr-border-radius); - --tblr-tooltip-opacity: 0.9; - --tblr-tooltip-arrow-width: 0.8rem; - --tblr-tooltip-arrow-height: 0.4rem; - z-index: var(--tblr-tooltip-zindex); - display: block; - margin: var(--tblr-tooltip-margin); - font-family: var(--tblr-font-sans-serif); - font-style: normal; - font-weight: 400; - line-height: 1.4285714286; - 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(--tblr-tooltip-font-size); - word-wrap: break-word; - opacity: 0 -} - -.tooltip.show { - opacity: var(--tblr-tooltip-opacity) -} - -.tooltip .tooltip-arrow { - display: block; - width: var(--tblr-tooltip-arrow-width); - height: var(--tblr-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(--tblr-tooltip-arrow-height)) -} - -.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before, -.bs-tooltip-top .tooltip-arrow::before { - top: -1px; - border-width: var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0; - border-top-color: var(--tblr-tooltip-bg) -} - -.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow, -.bs-tooltip-end .tooltip-arrow { - left: calc(-1 * var(--tblr-tooltip-arrow-height)); - width: var(--tblr-tooltip-arrow-height); - height: var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0; - border-right-color: var(--tblr-tooltip-bg) -} - -.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow, -.bs-tooltip-bottom .tooltip-arrow { - top: calc(-1 * var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height); - border-bottom-color: var(--tblr-tooltip-bg) -} - -.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow, -.bs-tooltip-start .tooltip-arrow { - right: calc(-1 * var(--tblr-tooltip-arrow-height)); - width: var(--tblr-tooltip-arrow-height); - height: var(--tblr-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(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height); - border-left-color: var(--tblr-tooltip-bg) -} - -.tooltip-inner { - max-width: var(--tblr-tooltip-max-width); - padding: var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x); - color: var(--tblr-tooltip-color); - text-align: center; - background-color: var(--tblr-tooltip-bg); - border-radius: var(--tblr-tooltip-border-radius) -} - -.popover { - --tblr-popover-zindex: 1070; - --tblr-popover-max-width: 276px; - --tblr-popover-font-size: 0.765625rem; - --tblr-popover-bg: var(--tblr-bg-surface); - --tblr-popover-border-width: var(--tblr-border-width); - --tblr-popover-border-color: var(--tblr-border-color); - --tblr-popover-border-radius: var(--tblr-border-radius-lg); - --tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width)); - --tblr-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - --tblr-popover-header-padding-x: 1rem; - --tblr-popover-header-padding-y: 0.5rem; - --tblr-popover-header-font-size: 0.875rem; - --tblr-popover-header-bg: transparent; - --tblr-popover-body-padding-x: 1rem; - --tblr-popover-body-padding-y: 1rem; - --tblr-popover-body-color: inherit; - --tblr-popover-arrow-width: 1rem; - --tblr-popover-arrow-height: 0.5rem; - --tblr-popover-arrow-border: var(--tblr-popover-border-color); - z-index: var(--tblr-popover-zindex); - display: block; - max-width: var(--tblr-popover-max-width); - font-family: var(--tblr-font-sans-serif); - font-style: normal; - font-weight: 400; - line-height: 1.4285714286; - 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(--tblr-popover-font-size); - word-wrap: break-word; - background-color: var(--tblr-popover-bg); - background-clip: padding-box; - border: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); - border-radius: var(--tblr-popover-border-radius); - box-shadow: var(--tblr-popover-box-shadow) -} - -.popover .popover-arrow { - display: block; - width: var(--tblr-popover-arrow-width); - height: var(--tblr-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(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0 -} - -.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before, -.bs-popover-top>.popover-arrow::before { - bottom: 0; - border-top-color: var(--tblr-popover-arrow-border) -} - -.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after, -.bs-popover-top>.popover-arrow::after { - bottom: var(--tblr-popover-border-width); - border-top-color: var(--tblr-popover-bg) -} - -.bs-popover-auto[data-popper-placement^=right]>.popover-arrow, -.bs-popover-end>.popover-arrow { - left: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); - width: var(--tblr-popover-arrow-height); - height: var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0 -} - -.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before, -.bs-popover-end>.popover-arrow::before { - left: 0; - border-right-color: var(--tblr-popover-arrow-border) -} - -.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after, -.bs-popover-end>.popover-arrow::after { - left: var(--tblr-popover-border-width); - border-right-color: var(--tblr-popover-bg) -} - -.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow, -.bs-popover-bottom>.popover-arrow { - top: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border) -} - -.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after, -.bs-popover-bottom>.popover-arrow::after { - top: var(--tblr-popover-border-width); - border-bottom-color: var(--tblr-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(--tblr-popover-arrow-width); - margin-left: calc(-.5 * var(--tblr-popover-arrow-width)); - content: ""; - border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg) -} - -.bs-popover-auto[data-popper-placement^=left]>.popover-arrow, -.bs-popover-start>.popover-arrow { - right: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); - width: var(--tblr-popover-arrow-height); - height: var(--tblr-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(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border) -} - -.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after, -.bs-popover-start>.popover-arrow::after { - right: var(--tblr-popover-border-width); - border-left-color: var(--tblr-popover-bg) -} - -.popover-header { - padding: var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x); - margin-bottom: 0; - font-size: var(--tblr-popover-header-font-size); - color: var(--tblr-popover-header-color); - background-color: var(--tblr-popover-header-bg); - border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); - border-top-left-radius: var(--tblr-popover-inner-border-radius); - border-top-right-radius: var(--tblr-popover-inner-border-radius) -} - -.popover-header:empty { - display: none -} - -.popover-body { - padding: var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x); - color: var(--tblr-popover-body-color) -} - -.carousel { - position: relative -} - -.carousel.pointer-event { - touch-action: pan-y -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden -} - -.carousel-inner::after { - display: block; - clear: both; - content: "" -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - transition: transform .6s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .carousel-item { - transition: none - } -} - -.carousel-item-next, -.carousel-item-prev, -.carousel-item.active { - display: block -} - -.active.carousel-item-end, -.carousel-item-next:not(.carousel-item-start) { - transform: translateX(100%) -} - -.active.carousel-item-start, -.carousel-item-prev:not(.carousel-item-end) { - transform: translateX(-100%) -} - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none -} - -.carousel-fade .carousel-item-next.carousel-item-start, -.carousel-fade .carousel-item-prev.carousel-item-end, -.carousel-fade .carousel-item.active { - z-index: 1; - opacity: 1 -} - -.carousel-fade .active.carousel-item-end, -.carousel-fade .active.carousel-item-start { - z-index: 0; - opacity: 0; - transition: opacity 0s .6s -} - -@media (prefers-reduced-motion:reduce) { - - .carousel-fade .active.carousel-item-end, - .carousel-fade .active.carousel-item-start { - transition: none - } -} - -.carousel-control-next, -.carousel-control-prev { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: 0 0; - border: 0; - opacity: .5; - transition: opacity .15s ease -} - -@media (prefers-reduced-motion:reduce) { - - .carousel-control-next, - .carousel-control-prev { - transition: none - } -} - -.carousel-control-next:focus, -.carousel-control-next:hover, -.carousel-control-prev:focus, -.carousel-control-prev:hover { - color: #fff; - text-decoration: none; - outline: 0; - opacity: .9 -} - -.carousel-control-prev { - left: 0 -} - -.carousel-control-next { - right: 0 -} - -.carousel-control-next-icon, -.carousel-control-prev-icon { - display: inline-block; - width: 1.5rem; - height: 1.5rem; - 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' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e") -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e") -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: flex; - justify-content: center; - padding: 0; - margin-right: 15%; - margin-bottom: 1rem; - margin-left: 15% -} - -.carousel-indicators [data-bs-target] { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - padding: 0; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border: 0; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity .6s ease -} - -@media (prefers-reduced-motion:reduce) { - .carousel-indicators [data-bs-target] { - transition: none - } -} - -.carousel-indicators .active { - opacity: 1 -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 1.25rem; - left: 15%; - padding-top: 1.25rem; - padding-bottom: 1.25rem; - color: #fff; - text-align: center -} - -.carousel-dark .carousel-control-next-icon, -.carousel-dark .carousel-control-prev-icon { - filter: invert(1) grayscale(100) -} - -.carousel-dark .carousel-indicators [data-bs-target] { - background-color: #000 -} - -.carousel-dark .carousel-caption { - color: #000 -} - -[data-bs-theme=dark] .carousel .carousel-control-next-icon, -[data-bs-theme=dark] .carousel .carousel-control-prev-icon, -[data-bs-theme=dark].carousel .carousel-control-next-icon, -[data-bs-theme=dark].carousel .carousel-control-prev-icon { - filter: invert(1) grayscale(100) -} - -[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], -[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { - background-color: #000 -} - -[data-bs-theme=dark] .carousel .carousel-caption, -[data-bs-theme=dark].carousel .carousel-caption { - color: #000 -} - -.spinner-border, -.spinner-grow { - display: inline-block; - width: var(--tblr-spinner-width); - height: var(--tblr-spinner-height); - vertical-align: var(--tblr-spinner-vertical-align); - border-radius: 50%; - animation: var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name) -} - -@keyframes spinner-border { - to { - transform: rotate(360deg) - } -} - -.spinner-border { - --tblr-spinner-width: 1.5rem; - --tblr-spinner-height: 1.5rem; - --tblr-spinner-vertical-align: -0.125em; - --tblr-spinner-border-width: 2px; - --tblr-spinner-animation-speed: 0.75s; - --tblr-spinner-animation-name: spinner-border; - border: var(--tblr-spinner-border-width) solid currentcolor; - border-right-color: transparent -} - -.spinner-border-sm { - --tblr-spinner-width: 1rem; - --tblr-spinner-height: 1rem; - --tblr-spinner-border-width: 1px -} - -@keyframes spinner-grow { - 0% { - transform: scale(0) - } - - 50% { - opacity: 1; - transform: none - } -} - -.spinner-grow { - --tblr-spinner-width: 1.5rem; - --tblr-spinner-height: 1.5rem; - --tblr-spinner-vertical-align: -0.125em; - --tblr-spinner-animation-speed: 0.75s; - --tblr-spinner-animation-name: spinner-grow; - background-color: currentcolor; - opacity: 0 -} - -.spinner-grow-sm { - --tblr-spinner-width: 1rem; - --tblr-spinner-height: 1rem -} - -@media (prefers-reduced-motion:reduce) { - - .spinner-border, - .spinner-grow { - --tblr-spinner-animation-speed: 1.5s - } -} - -.offcanvas, -.offcanvas-lg, -.offcanvas-md, -.offcanvas-sm, -.offcanvas-xl, -.offcanvas-xxl { - --tblr-offcanvas-zindex: 1045; - --tblr-offcanvas-width: 400px; - --tblr-offcanvas-height: 30vh; - --tblr-offcanvas-padding-x: 1.5rem; - --tblr-offcanvas-padding-y: 1.5rem; - --tblr-offcanvas-color: var(--tblr-body-color); - --tblr-offcanvas-bg: var(--tblr-bg-surface); - --tblr-offcanvas-border-width: var(--tblr-border-width); - --tblr-offcanvas-border-color: var(--tblr-border-color); - --tblr-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --tblr-offcanvas-transition: transform 0.3s ease-in-out; - --tblr-offcanvas-title-line-height: 1.4285714286 -} - -@media (max-width:575.98px) { - .offcanvas-sm { - position: fixed; - bottom: 0; - z-index: var(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-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(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) - } - - .offcanvas-sm.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) - } - - .offcanvas-sm.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) - } - - .offcanvas-sm.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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 { - --tblr-offcanvas-height: auto; - --tblr-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(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-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(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) - } - - .offcanvas-md.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) - } - - .offcanvas-md.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) - } - - .offcanvas-md.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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 { - --tblr-offcanvas-height: auto; - --tblr-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(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-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(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) - } - - .offcanvas-lg.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) - } - - .offcanvas-lg.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) - } - - .offcanvas-lg.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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 { - --tblr-offcanvas-height: auto; - --tblr-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(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-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(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) - } - - .offcanvas-xl.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) - } - - .offcanvas-xl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) - } - - .offcanvas-xl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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 { - --tblr-offcanvas-height: auto; - --tblr-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(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-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(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) - } - - .offcanvas-xxl.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) - } - - .offcanvas-xxl.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) - } - - .offcanvas-xxl.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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 { - --tblr-offcanvas-height: auto; - --tblr-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(--tblr-offcanvas-zindex); - display: flex; - flex-direction: column; - max-width: 100%; - color: var(--tblr-offcanvas-color); - visibility: hidden; - background-color: var(--tblr-offcanvas-bg); - background-clip: padding-box; - outline: 0; - box-shadow: var(--tblr-offcanvas-box-shadow); - transition: var(--tblr-offcanvas-transition) -} - -@media (prefers-reduced-motion:reduce) { - .offcanvas { - transition: none - } -} - -.offcanvas.offcanvas-start { - top: 0; - left: 0; - width: var(--tblr-offcanvas-width); - border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(-100%) -} - -.offcanvas.offcanvas-end { - top: 0; - right: 0; - width: var(--tblr-offcanvas-width); - border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateX(100%) -} - -.offcanvas.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); - transform: translateY(-100%) -} - -.offcanvas.offcanvas-bottom { - right: 0; - left: 0; - height: var(--tblr-offcanvas-height); - max-height: 100%; - border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-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: #182433 -} - -.offcanvas-backdrop.fade { - opacity: 0 -} - -.offcanvas-backdrop.show { - opacity: .24 -} - -.offcanvas-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x) -} - -.offcanvas-header .btn-close { - padding: calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5); - margin-top: calc(-.5 * var(--tblr-offcanvas-padding-y)); - margin-right: calc(-.5 * var(--tblr-offcanvas-padding-x)); - margin-bottom: calc(-.5 * var(--tblr-offcanvas-padding-y)) -} - -.offcanvas-title { - margin-bottom: 0; - line-height: var(--tblr-offcanvas-title-line-height) -} - -.offcanvas-body { - flex-grow: 1; - padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); - overflow-y: auto -} - -.placeholder { - display: inline-block; - min-height: 1em; - vertical-align: middle; - cursor: wait; - background-color: currentcolor; - opacity: .2 -} - -.placeholder.btn::before { - display: inline-block; - content: "" -} - -.placeholder-xs { - min-height: .6em -} - -.placeholder-sm { - min-height: .8em -} - -.placeholder-lg { - min-height: 1.2em -} - -.placeholder-glow .placeholder { - animation: placeholder-glow 2s ease-in-out infinite -} - -@keyframes placeholder-glow { - 50% { - opacity: .1 - } -} - -.placeholder-wave { - -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, .9) 75%, #000 95%); - mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, .9) 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: #fcfdfe !important; - background-color: RGBA(32, 107, 196, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-secondary { - color: #fcfdfe !important; - background-color: RGBA(102, 115, 130, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-success { - color: #fcfdfe !important; - background-color: RGBA(47, 179, 68, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-info { - color: #fcfdfe !important; - background-color: RGBA(66, 153, 225, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-warning { - color: #fcfdfe !important; - background-color: RGBA(247, 103, 7, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-danger { - color: #fcfdfe !important; - background-color: RGBA(214, 57, 57, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-light { - color: #182433 !important; - background-color: RGBA(252, 253, 254, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-dark { - color: #fcfdfe !important; - background-color: RGBA(24, 36, 51, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-muted { - color: #fcfdfe !important; - background-color: RGBA(102, 115, 130, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-blue { - color: #fcfdfe !important; - background-color: RGBA(32, 107, 196, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-azure { - color: #fcfdfe !important; - background-color: RGBA(66, 153, 225, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-indigo { - color: #fcfdfe !important; - background-color: RGBA(66, 99, 235, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-purple { - color: #fcfdfe !important; - background-color: RGBA(174, 62, 201, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-pink { - color: #fcfdfe !important; - background-color: RGBA(214, 51, 108, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-red { - color: #fcfdfe !important; - background-color: RGBA(214, 57, 57, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-orange { - color: #fcfdfe !important; - background-color: RGBA(247, 103, 7, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-yellow { - color: #fcfdfe !important; - background-color: RGBA(245, 159, 0, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-lime { - color: #fcfdfe !important; - background-color: RGBA(116, 184, 22, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-green { - color: #fcfdfe !important; - background-color: RGBA(47, 179, 68, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-teal { - color: #fcfdfe !important; - background-color: RGBA(12, 166, 120, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-cyan { - color: #fcfdfe !important; - background-color: RGBA(23, 162, 184, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-facebook { - color: #fcfdfe !important; - background-color: RGBA(24, 119, 242, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-twitter { - color: #fcfdfe !important; - background-color: RGBA(29, 161, 242, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-linkedin { - color: #fcfdfe !important; - background-color: RGBA(10, 102, 194, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-google { - color: #fcfdfe !important; - background-color: RGBA(220, 78, 65, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-youtube { - color: #fcfdfe !important; - background-color: RGBA(255, 0, 0, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-vimeo { - color: #fcfdfe !important; - background-color: RGBA(26, 183, 234, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-dribbble { - color: #fcfdfe !important; - background-color: RGBA(234, 76, 137, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-github { - color: #fcfdfe !important; - background-color: RGBA(24, 23, 23, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-instagram { - color: #fcfdfe !important; - background-color: RGBA(228, 64, 95, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-pinterest { - color: #fcfdfe !important; - background-color: RGBA(189, 8, 28, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-vk { - color: #fcfdfe !important; - background-color: RGBA(99, 131, 168, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-rss { - color: #fcfdfe !important; - background-color: RGBA(255, 165, 0, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-flickr { - color: #fcfdfe !important; - background-color: RGBA(0, 99, 220, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-bitbucket { - color: #fcfdfe !important; - background-color: RGBA(0, 82, 204, var(--tblr-bg-opacity, 1)) !important -} - -.text-bg-tabler { - color: #fcfdfe !important; - background-color: RGBA(32, 107, 196, var(--tblr-bg-opacity, 1)) !important -} - -.link-primary { - color: RGBA(var(--tblr-primary-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-primary:focus, -.link-primary:hover { - color: RGBA(26, 86, 157, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)) -} - -.link-secondary { - color: RGBA(var(--tblr-secondary-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-secondary:focus, -.link-secondary:hover { - color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) -} - -.link-success { - color: RGBA(var(--tblr-success-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-success:focus, -.link-success:hover { - color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) -} - -.link-info { - color: RGBA(var(--tblr-info-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-info:focus, -.link-info:hover { - color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) -} - -.link-warning { - color: RGBA(var(--tblr-warning-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-warning:focus, -.link-warning:hover { - color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) -} - -.link-danger { - color: RGBA(var(--tblr-danger-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-danger:focus, -.link-danger:hover { - color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) -} - -.link-light { - color: RGBA(var(--tblr-light-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-light:focus, -.link-light:hover { - color: RGBA(253, 253, 254, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) -} - -.link-dark { - color: RGBA(var(--tblr-dark-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-dark:focus, -.link-dark:hover { - color: RGBA(19, 29, 41, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) -} - -.link-muted { - color: RGBA(var(--tblr-muted-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-muted:focus, -.link-muted:hover { - color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) -} - -.link-blue { - color: RGBA(var(--tblr-blue-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-blue:focus, -.link-blue:hover { - color: RGBA(26, 86, 157, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)) -} - -.link-azure { - color: RGBA(var(--tblr-azure-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-azure:focus, -.link-azure:hover { - color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) -} - -.link-indigo { - color: RGBA(var(--tblr-indigo-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-indigo:focus, -.link-indigo:hover { - color: RGBA(53, 79, 188, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) -} - -.link-purple { - color: RGBA(var(--tblr-purple-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-purple:focus, -.link-purple:hover { - color: RGBA(139, 50, 161, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) -} - -.link-pink { - color: RGBA(var(--tblr-pink-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-pink:focus, -.link-pink:hover { - color: RGBA(171, 41, 86, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) -} - -.link-red { - color: RGBA(var(--tblr-red-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-red:focus, -.link-red:hover { - color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) -} - -.link-orange { - color: RGBA(var(--tblr-orange-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-orange:focus, -.link-orange:hover { - color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) -} - -.link-yellow { - color: RGBA(var(--tblr-yellow-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-yellow:focus, -.link-yellow:hover { - color: RGBA(196, 127, 0, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) -} - -.link-lime { - color: RGBA(var(--tblr-lime-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-lime:focus, -.link-lime:hover { - color: RGBA(93, 147, 18, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) -} - -.link-green { - color: RGBA(var(--tblr-green-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-green:focus, -.link-green:hover { - color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) -} - -.link-teal { - color: RGBA(var(--tblr-teal-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-teal:focus, -.link-teal:hover { - color: RGBA(10, 133, 96, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) -} - -.link-cyan { - color: RGBA(var(--tblr-cyan-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-cyan:focus, -.link-cyan:hover { - color: RGBA(18, 130, 147, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) -} - -.link-facebook { - color: RGBA(var(--tblr-facebook-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-facebook:focus, -.link-facebook:hover { - color: RGBA(19, 95, 194, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) -} - -.link-twitter { - color: RGBA(var(--tblr-twitter-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-twitter:focus, -.link-twitter:hover { - color: RGBA(23, 129, 194, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) -} - -.link-linkedin { - color: RGBA(var(--tblr-linkedin-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-linkedin:focus, -.link-linkedin:hover { - color: RGBA(8, 82, 155, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) -} - -.link-google { - color: RGBA(var(--tblr-google-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-google:focus, -.link-google:hover { - color: RGBA(176, 62, 52, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) -} - -.link-youtube { - color: RGBA(var(--tblr-youtube-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-youtube:focus, -.link-youtube:hover { - color: RGBA(204, 0, 0, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) -} - -.link-vimeo { - color: RGBA(var(--tblr-vimeo-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-vimeo:focus, -.link-vimeo:hover { - color: RGBA(21, 146, 187, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) -} - -.link-dribbble { - color: RGBA(var(--tblr-dribbble-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-dribbble:focus, -.link-dribbble:hover { - color: RGBA(187, 61, 110, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) -} - -.link-github { - color: RGBA(var(--tblr-github-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-github:focus, -.link-github:hover { - color: RGBA(19, 18, 18, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) -} - -.link-instagram { - color: RGBA(var(--tblr-instagram-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-instagram:focus, -.link-instagram:hover { - color: RGBA(182, 51, 76, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) -} - -.link-pinterest { - color: RGBA(var(--tblr-pinterest-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-pinterest:focus, -.link-pinterest:hover { - color: RGBA(151, 6, 22, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) -} - -.link-vk { - color: RGBA(var(--tblr-vk-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-vk:focus, -.link-vk:hover { - color: RGBA(79, 105, 134, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) -} - -.link-rss { - color: RGBA(var(--tblr-rss-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-rss:focus, -.link-rss:hover { - color: RGBA(204, 132, 0, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) -} - -.link-flickr { - color: RGBA(var(--tblr-flickr-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-flickr:focus, -.link-flickr:hover { - color: RGBA(0, 79, 176, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) -} - -.link-bitbucket { - color: RGBA(var(--tblr-bitbucket-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-bitbucket:focus, -.link-bitbucket:hover { - color: RGBA(0, 66, 163, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) -} - -.link-tabler { - color: RGBA(var(--tblr-tabler-rgb, var(--tblr-link-opacity, 1))); - -webkit-text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-tabler:focus, -.link-tabler:hover { - color: RGBA(26, 86, 157, var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(26, 86, 157, var(--tblr-link-underline-opacity, 1)) -} - -.link-body-emphasis { - color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 1)); - -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)); - text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) -} - -.link-body-emphasis:focus, -.link-body-emphasis:hover { - color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, .75)); - -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, .75)); - text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, .75)) -} - -.focus-ring:focus { - outline: 0; - box-shadow: var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color) -} - -.icon-link { - display: inline-flex; - gap: .375rem; - align-items: center; - -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, .5)); - text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, .5)); - text-underline-offset: .25em; - -webkit-backface-visibility: hidden; - backface-visibility: hidden -} - -.icon-link>.bi { - flex-shrink: 0; - width: 1em; - height: 1em; - fill: currentcolor; - transition: .2s ease-in-out transform -} - -@media (prefers-reduced-motion:reduce) { - .icon-link>.bi { - transition: none - } -} - -.icon-link-hover:focus-visible>.bi, -.icon-link-hover:hover>.bi { - transform: var(--tblr-icon-link-transform, translate3d(.25em, 0, 0)) -} - -.ratio { - position: relative; - width: 100% -} - -.ratio::before { - display: block; - padding-top: var(--tblr-aspect-ratio); - content: "" -} - -.ratio>* { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100% -} - -.ratio-1x1 { - --tblr-aspect-ratio: 100% -} - -.ratio-2x1 { - --tblr-aspect-ratio: 50% -} - -.ratio-1x2 { - --tblr-aspect-ratio: 200% -} - -.ratio-3x1 { - --tblr-aspect-ratio: 33.3333333333% -} - -.ratio-1x3 { - --tblr-aspect-ratio: 300% -} - -.ratio-4x3 { - --tblr-aspect-ratio: 75% -} - -.ratio-3x4 { - --tblr-aspect-ratio: 133.3333333333% -} - -.ratio-16x9 { - --tblr-aspect-ratio: 56.25% -} - -.ratio-9x16 { - --tblr-aspect-ratio: 177.7777777778% -} - -.ratio-21x9 { - --tblr-aspect-ratio: 42.8571428571% -} - -.ratio-9x21 { - --tblr-aspect-ratio: 233.3333333333% -} - -.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: 1px; - min-height: 1em; - background-color: currentcolor; - opacity: .16 -} - -.align-baseline { - vertical-align: baseline !important -} - -.align-top { - vertical-align: top !important -} - -.align-middle { - vertical-align: middle !important -} - -.align-bottom { - vertical-align: bottom !important -} - -.align-text-bottom { - vertical-align: text-bottom !important -} - -.align-text-top { - vertical-align: text-top !important -} - -.float-start { - float: left !important -} - -.float-end { - float: right !important -} - -.float-none { - float: none !important -} - -.object-fit-contain { - -o-object-fit: contain !important; - object-fit: contain !important -} - -.object-fit-cover { - -o-object-fit: cover !important; - object-fit: cover !important -} - -.object-fit-fill { - -o-object-fit: fill !important; - object-fit: fill !important -} - -.object-fit-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important -} - -.object-fit-none { - -o-object-fit: none !important; - object-fit: none !important -} - -.opacity-0 { - opacity: 0 !important -} - -.opacity-25 { - opacity: .25 !important -} - -.opacity-50 { - opacity: .5 !important -} - -.opacity-75 { - opacity: .75 !important -} - -.opacity-100 { - opacity: 1 !important -} - -.overflow-auto { - overflow: auto !important -} - -.overflow-hidden { - overflow: hidden !important -} - -.overflow-visible { - overflow: visible !important -} - -.overflow-scroll { - overflow: scroll !important -} - -.overflow-x-auto { - overflow-x: auto !important -} - -.overflow-x-hidden { - overflow-x: hidden !important -} - -.overflow-x-visible { - overflow-x: visible !important -} - -.overflow-x-scroll { - overflow-x: scroll !important -} - -.overflow-y-auto { - overflow-y: auto !important -} - -.overflow-y-hidden { - overflow-y: hidden !important -} - -.overflow-y-visible { - overflow-y: visible !important -} - -.overflow-y-scroll { - overflow-y: scroll !important -} - -.d-inline { - display: inline !important -} - -.d-inline-block { - display: inline-block !important -} - -.d-block { - display: block !important -} - -.d-grid { - display: grid !important -} - -.d-inline-grid { - display: inline-grid !important -} - -.d-table { - display: table !important -} - -.d-table-row { - display: table-row !important -} - -.d-table-cell { - display: table-cell !important -} - -.d-flex { - display: flex !important -} - -.d-inline-flex { - display: inline-flex !important -} - -.d-none { - display: none !important -} - -.shadow { - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important -} - -.shadow-sm { - box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important -} - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important -} - -.shadow-none { - box-shadow: none !important -} - -.focus-ring-primary { - --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-secondary { - --tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-success { - --tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-info { - --tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-warning { - --tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-danger { - --tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-light { - --tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-dark { - --tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-muted { - --tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-blue { - --tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-azure { - --tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-indigo { - --tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-purple { - --tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-pink { - --tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-red { - --tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-orange { - --tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-yellow { - --tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-lime { - --tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-green { - --tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-teal { - --tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-cyan { - --tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-facebook { - --tblr-focus-ring-color: rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-twitter { - --tblr-focus-ring-color: rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-linkedin { - --tblr-focus-ring-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-google { - --tblr-focus-ring-color: rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-youtube { - --tblr-focus-ring-color: rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-vimeo { - --tblr-focus-ring-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-dribbble { - --tblr-focus-ring-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-github { - --tblr-focus-ring-color: rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-instagram { - --tblr-focus-ring-color: rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-pinterest { - --tblr-focus-ring-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-vk { - --tblr-focus-ring-color: rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-rss { - --tblr-focus-ring-color: rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-flickr { - --tblr-focus-ring-color: rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-bitbucket { - --tblr-focus-ring-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity)) -} - -.focus-ring-tabler { - --tblr-focus-ring-color: rgba(var(--tblr-tabler-rgb), var(--tblr-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(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-wide { - border: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-0 { - border: 0 !important -} - -.border-top { - border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-top-wide { - border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-top-0 { - border-top: 0 !important -} - -.border-end { - border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-end-wide { - border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-end-0 { - border-right: 0 !important -} - -.border-bottom { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-bottom-wide { - border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-bottom-0 { - border-bottom: 0 !important -} - -.border-start { - border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-start-wide { - border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-start-0 { - border-left: 0 !important -} - -.border-primary { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-primary-rgb), var(--tblr-border-opacity)) !important -} - -.border-secondary { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-secondary-rgb), var(--tblr-border-opacity)) !important -} - -.border-success { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-success-rgb), var(--tblr-border-opacity)) !important -} - -.border-info { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-info-rgb), var(--tblr-border-opacity)) !important -} - -.border-warning { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-warning-rgb), var(--tblr-border-opacity)) !important -} - -.border-danger { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-danger-rgb), var(--tblr-border-opacity)) !important -} - -.border-light { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-light-rgb), var(--tblr-border-opacity)) !important -} - -.border-dark { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-dark-rgb), var(--tblr-border-opacity)) !important -} - -.border-muted { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-muted-rgb), var(--tblr-border-opacity)) !important -} - -.border-blue { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-blue-rgb), var(--tblr-border-opacity)) !important -} - -.border-azure { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-azure-rgb), var(--tblr-border-opacity)) !important -} - -.border-indigo { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-indigo-rgb), var(--tblr-border-opacity)) !important -} - -.border-purple { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-purple-rgb), var(--tblr-border-opacity)) !important -} - -.border-pink { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-pink-rgb), var(--tblr-border-opacity)) !important -} - -.border-red { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-red-rgb), var(--tblr-border-opacity)) !important -} - -.border-orange { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-orange-rgb), var(--tblr-border-opacity)) !important -} - -.border-yellow { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-yellow-rgb), var(--tblr-border-opacity)) !important -} - -.border-lime { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-lime-rgb), var(--tblr-border-opacity)) !important -} - -.border-green { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-green-rgb), var(--tblr-border-opacity)) !important -} - -.border-teal { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-teal-rgb), var(--tblr-border-opacity)) !important -} - -.border-cyan { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-cyan-rgb), var(--tblr-border-opacity)) !important -} - -.border-facebook { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-facebook-rgb), var(--tblr-border-opacity)) !important -} - -.border-twitter { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-twitter-rgb), var(--tblr-border-opacity)) !important -} - -.border-linkedin { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-border-opacity)) !important -} - -.border-google { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-google-rgb), var(--tblr-border-opacity)) !important -} - -.border-youtube { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-youtube-rgb), var(--tblr-border-opacity)) !important -} - -.border-vimeo { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-border-opacity)) !important -} - -.border-dribbble { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-border-opacity)) !important -} - -.border-github { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-github-rgb), var(--tblr-border-opacity)) !important -} - -.border-instagram { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-instagram-rgb), var(--tblr-border-opacity)) !important -} - -.border-pinterest { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-border-opacity)) !important -} - -.border-vk { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-vk-rgb), var(--tblr-border-opacity)) !important -} - -.border-rss { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-rss-rgb), var(--tblr-border-opacity)) !important -} - -.border-flickr { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-flickr-rgb), var(--tblr-border-opacity)) !important -} - -.border-bitbucket { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-border-opacity)) !important -} - -.border-tabler { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-tabler-rgb), var(--tblr-border-opacity)) !important -} - -.border-black { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-black-rgb), var(--tblr-border-opacity)) !important -} - -.border-white { - --tblr-border-opacity: 1; - border-color: rgba(var(--tblr-white-rgb), var(--tblr-border-opacity)) !important -} - -.border-primary-subtle { - border-color: var(--tblr-primary-border-subtle) !important -} - -.border-secondary-subtle { - border-color: var(--tblr-secondary-border-subtle) !important -} - -.border-success-subtle { - border-color: var(--tblr-success-border-subtle) !important -} - -.border-info-subtle { - border-color: var(--tblr-info-border-subtle) !important -} - -.border-warning-subtle { - border-color: var(--tblr-warning-border-subtle) !important -} - -.border-danger-subtle { - border-color: var(--tblr-danger-border-subtle) !important -} - -.border-light-subtle { - border-color: var(--tblr-light-border-subtle) !important -} - -.border-dark-subtle { - border-color: var(--tblr-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 { - --tblr-border-opacity: 0.1 -} - -.border-opacity-25 { - --tblr-border-opacity: 0.25 -} - -.border-opacity-50 { - --tblr-border-opacity: 0.5 -} - -.border-opacity-75 { - --tblr-border-opacity: 0.75 -} - -.border-opacity-100 { - --tblr-border-opacity: 1 -} - -.w-0 { - width: 0 !important -} - -.w-1 { - width: .25rem !important -} - -.w-2 { - width: .5rem !important -} - -.w-3 { - width: 1rem !important -} - -.w-4 { - width: 1.5rem !important -} - -.w-5 { - width: 2rem !important -} - -.w-6 { - width: 3rem !important -} - -.w-7 { - width: 5rem !important -} - -.w-8 { - width: 8rem !important -} - -.w-25 { - width: 25% !important -} - -.w-33 { - width: 33.33333% !important -} - -.w-50 { - width: 50% !important -} - -.w-66 { - width: 66.66666% !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-0 { - height: 0 !important -} - -.h-1 { - height: .25rem !important -} - -.h-2 { - height: .5rem !important -} - -.h-3 { - height: 1rem !important -} - -.h-4 { - height: 1.5rem !important -} - -.h-5 { - height: 2rem !important -} - -.h-6 { - height: 3rem !important -} - -.h-7 { - height: 5rem !important -} - -.h-8 { - height: 8rem !important -} - -.h-25 { - height: 25% !important -} - -.h-33 { - height: 33.33333% !important -} - -.h-50 { - height: 50% !important -} - -.h-66 { - height: 66.66666% !important -} - -.h-75 { - height: 75% !important -} - -.h-100 { - height: 100% !important -} - -.h-auto { - height: auto !important -} - -.mh-100 { - max-height: 100% !important -} - -.vh-100 { - height: 100vh !important -} - -.min-vh-100 { - min-height: 100vh !important -} - -.flex-fill { - flex: 1 1 auto !important -} - -.flex-row { - flex-direction: row !important -} - -.flex-column { - flex-direction: column !important -} - -.flex-row-reverse { - flex-direction: row-reverse !important -} - -.flex-column-reverse { - flex-direction: column-reverse !important -} - -.flex-grow-0 { - flex-grow: 0 !important -} - -.flex-grow-1 { - flex-grow: 1 !important -} - -.flex-shrink-0 { - flex-shrink: 0 !important -} - -.flex-shrink-1 { - flex-shrink: 1 !important -} - -.flex-wrap { - flex-wrap: wrap !important -} - -.flex-nowrap { - flex-wrap: nowrap !important -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important -} - -.justify-content-start { - justify-content: flex-start !important -} - -.justify-content-end { - justify-content: flex-end !important -} - -.justify-content-center { - justify-content: center !important -} - -.justify-content-between { - justify-content: space-between !important -} - -.justify-content-around { - justify-content: space-around !important -} - -.justify-content-evenly { - justify-content: space-evenly !important -} - -.align-items-start { - align-items: flex-start !important -} - -.align-items-end { - align-items: flex-end !important -} - -.align-items-center { - align-items: center !important -} - -.align-items-baseline { - align-items: baseline !important -} - -.align-items-stretch { - align-items: stretch !important -} - -.align-content-start { - align-content: flex-start !important -} - -.align-content-end { - align-content: flex-end !important -} - -.align-content-center { - align-content: center !important -} - -.align-content-between { - align-content: space-between !important -} - -.align-content-around { - align-content: space-around !important -} - -.align-content-stretch { - align-content: stretch !important -} - -.align-self-auto { - align-self: auto !important -} - -.align-self-start { - align-self: flex-start !important -} - -.align-self-end { - align-self: flex-end !important -} - -.align-self-center { - align-self: center !important -} - -.align-self-baseline { - align-self: baseline !important -} - -.align-self-stretch { - align-self: stretch !important -} - -.order-first { - order: -1 !important -} - -.order-0 { - order: 0 !important -} - -.order-1 { - order: 1 !important -} - -.order-2 { - order: 2 !important -} - -.order-3 { - order: 3 !important -} - -.order-4 { - order: 4 !important -} - -.order-5 { - order: 5 !important -} - -.order-last { - order: 6 !important -} - -.m-0 { - margin: 0 !important -} - -.m-1 { - margin: .25rem !important -} - -.m-2 { - margin: .5rem !important -} - -.m-3 { - margin: 1rem !important -} - -.m-4 { - margin: 1.5rem !important -} - -.m-5 { - margin: 2rem !important -} - -.m-6 { - margin: 3rem !important -} - -.m-7 { - margin: 5rem !important -} - -.m-8 { - margin: 8rem !important -} - -.m-auto { - margin: auto !important -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important -} - -.mx-1 { - margin-right: .25rem !important; - margin-left: .25rem !important -} - -.mx-2 { - margin-right: .5rem !important; - margin-left: .5rem !important -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important -} - -.mx-5 { - margin-right: 2rem !important; - margin-left: 2rem !important -} - -.mx-6 { - margin-right: 3rem !important; - margin-left: 3rem !important -} - -.mx-7 { - margin-right: 5rem !important; - margin-left: 5rem !important -} - -.mx-8 { - margin-right: 8rem !important; - margin-left: 8rem !important -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important -} - -.my-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important -} - -.my-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important -} - -.my-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important -} - -.my-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important -} - -.my-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important -} - -.my-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important -} - -.mt-0 { - margin-top: 0 !important -} - -.mt-1 { - margin-top: .25rem !important -} - -.mt-2 { - margin-top: .5rem !important -} - -.mt-3 { - margin-top: 1rem !important -} - -.mt-4 { - margin-top: 1.5rem !important -} - -.mt-5 { - margin-top: 2rem !important -} - -.mt-6 { - margin-top: 3rem !important -} - -.mt-7 { - margin-top: 5rem !important -} - -.mt-8 { - margin-top: 8rem !important -} - -.mt-auto { - margin-top: auto !important -} - -.me-0 { - margin-right: 0 !important -} - -.me-1 { - margin-right: .25rem !important -} - -.me-2 { - margin-right: .5rem !important -} - -.me-3 { - margin-right: 1rem !important -} - -.me-4 { - margin-right: 1.5rem !important -} - -.me-5 { - margin-right: 2rem !important -} - -.me-6 { - margin-right: 3rem !important -} - -.me-7 { - margin-right: 5rem !important -} - -.me-8 { - margin-right: 8rem !important -} - -.me-auto { - margin-right: auto !important -} - -.mb-0 { - margin-bottom: 0 !important -} - -.mb-1 { - margin-bottom: .25rem !important -} - -.mb-2 { - margin-bottom: .5rem !important -} - -.mb-3 { - margin-bottom: 1rem !important -} - -.mb-4 { - margin-bottom: 1.5rem !important -} - -.mb-5 { - margin-bottom: 2rem !important -} - -.mb-6 { - margin-bottom: 3rem !important -} - -.mb-7 { - margin-bottom: 5rem !important -} - -.mb-8 { - margin-bottom: 8rem !important -} - -.mb-auto { - margin-bottom: auto !important -} - -.ms-0 { - margin-left: 0 !important -} - -.ms-1 { - margin-left: .25rem !important -} - -.ms-2 { - margin-left: .5rem !important -} - -.ms-3 { - margin-left: 1rem !important -} - -.ms-4 { - margin-left: 1.5rem !important -} - -.ms-5 { - margin-left: 2rem !important -} - -.ms-6 { - margin-left: 3rem !important -} - -.ms-7 { - margin-left: 5rem !important -} - -.ms-8 { - margin-left: 8rem !important -} - -.ms-auto { - margin-left: auto !important -} - -.p-0 { - padding: 0 !important -} - -.p-1 { - padding: .25rem !important -} - -.p-2 { - padding: .5rem !important -} - -.p-3 { - padding: 1rem !important -} - -.p-4 { - padding: 1.5rem !important -} - -.p-5 { - padding: 2rem !important -} - -.p-6 { - padding: 3rem !important -} - -.p-7 { - padding: 5rem !important -} - -.p-8 { - padding: 8rem !important -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important -} - -.px-1 { - padding-right: .25rem !important; - padding-left: .25rem !important -} - -.px-2 { - padding-right: .5rem !important; - padding-left: .5rem !important -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important -} - -.px-5 { - padding-right: 2rem !important; - padding-left: 2rem !important -} - -.px-6 { - padding-right: 3rem !important; - padding-left: 3rem !important -} - -.px-7 { - padding-right: 5rem !important; - padding-left: 5rem !important -} - -.px-8 { - padding-right: 8rem !important; - padding-left: 8rem !important -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important -} - -.py-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important -} - -.py-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important -} - -.py-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important -} - -.py-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important -} - -.py-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important -} - -.py-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important -} - -.pt-0 { - padding-top: 0 !important -} - -.pt-1 { - padding-top: .25rem !important -} - -.pt-2 { - padding-top: .5rem !important -} - -.pt-3 { - padding-top: 1rem !important -} - -.pt-4 { - padding-top: 1.5rem !important -} - -.pt-5 { - padding-top: 2rem !important -} - -.pt-6 { - padding-top: 3rem !important -} - -.pt-7 { - padding-top: 5rem !important -} - -.pt-8 { - padding-top: 8rem !important -} - -.pe-0 { - padding-right: 0 !important -} - -.pe-1 { - padding-right: .25rem !important -} - -.pe-2 { - padding-right: .5rem !important -} - -.pe-3 { - padding-right: 1rem !important -} - -.pe-4 { - padding-right: 1.5rem !important -} - -.pe-5 { - padding-right: 2rem !important -} - -.pe-6 { - padding-right: 3rem !important -} - -.pe-7 { - padding-right: 5rem !important -} - -.pe-8 { - padding-right: 8rem !important -} - -.pb-0 { - padding-bottom: 0 !important -} - -.pb-1 { - padding-bottom: .25rem !important -} - -.pb-2 { - padding-bottom: .5rem !important -} - -.pb-3 { - padding-bottom: 1rem !important -} - -.pb-4 { - padding-bottom: 1.5rem !important -} - -.pb-5 { - padding-bottom: 2rem !important -} - -.pb-6 { - padding-bottom: 3rem !important -} - -.pb-7 { - padding-bottom: 5rem !important -} - -.pb-8 { - padding-bottom: 8rem !important -} - -.ps-0 { - padding-left: 0 !important -} - -.ps-1 { - padding-left: .25rem !important -} - -.ps-2 { - padding-left: .5rem !important -} - -.ps-3 { - padding-left: 1rem !important -} - -.ps-4 { - padding-left: 1.5rem !important -} - -.ps-5 { - padding-left: 2rem !important -} - -.ps-6 { - padding-left: 3rem !important -} - -.ps-7 { - padding-left: 5rem !important -} - -.ps-8 { - padding-left: 8rem !important -} - -.gap-0 { - gap: 0 !important -} - -.gap-1 { - gap: .25rem !important -} - -.gap-2 { - gap: .5rem !important -} - -.gap-3 { - gap: 1rem !important -} - -.gap-4 { - gap: 1.5rem !important -} - -.gap-5 { - gap: 2rem !important -} - -.gap-6 { - gap: 3rem !important -} - -.gap-7 { - gap: 5rem !important -} - -.gap-8 { - gap: 8rem !important -} - -.row-gap-0 { - row-gap: 0 !important -} - -.row-gap-1 { - row-gap: .25rem !important -} - -.row-gap-2 { - row-gap: .5rem !important -} - -.row-gap-3 { - row-gap: 1rem !important -} - -.row-gap-4 { - row-gap: 1.5rem !important -} - -.row-gap-5 { - row-gap: 2rem !important -} - -.row-gap-6 { - row-gap: 3rem !important -} - -.row-gap-7 { - row-gap: 5rem !important -} - -.row-gap-8 { - row-gap: 8rem !important -} - -.column-gap-0 { - column-gap: 0 !important -} - -.column-gap-1 { - column-gap: .25rem !important -} - -.column-gap-2 { - column-gap: .5rem !important -} - -.column-gap-3 { - column-gap: 1rem !important -} - -.column-gap-4 { - column-gap: 1.5rem !important -} - -.column-gap-5 { - column-gap: 2rem !important -} - -.column-gap-6 { - column-gap: 3rem !important -} - -.column-gap-7 { - column-gap: 5rem !important -} - -.column-gap-8 { - column-gap: 8rem !important -} - -.font-monospace { - font-family: var(--tblr-font-monospace) !important -} - -.fs-1 { - font-size: 1.5rem !important -} - -.fs-2 { - font-size: 1.25rem !important -} - -.fs-3 { - font-size: 1rem !important -} - -.fs-4 { - font-size: .875rem !important -} - -.fs-5 { - font-size: .75rem !important -} - -.fs-6 { - font-size: .625rem !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: 600 !important -} - -.fw-bolder { - font-weight: bolder !important -} - -.lh-1 { - line-height: 1 !important -} - -.lh-sm { - line-height: 1.1428571429 !important -} - -.lh-base { - line-height: 1.4285714286 !important -} - -.lh-lg { - line-height: 1.7142857143 !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 { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important -} - -.text-secondary { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important -} - -.text-success { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important -} - -.text-info { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important -} - -.text-warning { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important -} - -.text-danger { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important -} - -.text-light { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important -} - -.text-dark { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important -} - -.text-muted { - --tblr-text-opacity: 1; - color: var(--tblr-secondary-color) !important -} - -.text-blue { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important -} - -.text-azure { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important -} - -.text-indigo { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important -} - -.text-purple { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important -} - -.text-pink { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important -} - -.text-red { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important -} - -.text-orange { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important -} - -.text-yellow { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important -} - -.text-lime { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important -} - -.text-green { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important -} - -.text-teal { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important -} - -.text-cyan { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important -} - -.text-facebook { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important -} - -.text-twitter { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important -} - -.text-linkedin { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important -} - -.text-google { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important -} - -.text-youtube { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important -} - -.text-vimeo { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important -} - -.text-dribbble { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important -} - -.text-github { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important -} - -.text-instagram { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important -} - -.text-pinterest { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important -} - -.text-vk { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important -} - -.text-rss { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important -} - -.text-flickr { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important -} - -.text-bitbucket { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important -} - -.text-tabler { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important -} - -.text-black { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-black-rgb), var(--tblr-text-opacity)) !important -} - -.text-white { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important -} - -.text-body { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-body-color-rgb), var(--tblr-text-opacity)) !important -} - -.text-black-50 { - --tblr-text-opacity: 1; - color: rgba(0, 0, 0, .5) !important -} - -.text-white-50 { - --tblr-text-opacity: 1; - color: rgba(255, 255, 255, .5) !important -} - -.text-body-secondary { - --tblr-text-opacity: 1; - color: var(--tblr-secondary-color) !important -} - -.text-body-tertiary { - --tblr-text-opacity: 1; - color: var(--tblr-tertiary-color) !important -} - -.text-body-emphasis { - --tblr-text-opacity: 1; - color: var(--tblr-emphasis-color) !important -} - -.text-reset { - --tblr-text-opacity: 1; - color: inherit !important -} - -.text-opacity-25 { - --tblr-text-opacity: 0.25 -} - -.text-opacity-50 { - --tblr-text-opacity: 0.5 -} - -.text-opacity-75 { - --tblr-text-opacity: 0.75 -} - -.text-opacity-100 { - --tblr-text-opacity: 1 -} - -.text-primary-emphasis { - color: var(--tblr-primary-text-emphasis) !important -} - -.text-secondary-emphasis { - color: var(--tblr-secondary-text-emphasis) !important -} - -.text-success-emphasis { - color: var(--tblr-success-text-emphasis) !important -} - -.text-info-emphasis { - color: var(--tblr-info-text-emphasis) !important -} - -.text-warning-emphasis { - color: var(--tblr-warning-text-emphasis) !important -} - -.text-danger-emphasis { - color: var(--tblr-danger-text-emphasis) !important -} - -.text-light-emphasis { - color: var(--tblr-light-text-emphasis) !important -} - -.text-dark-emphasis { - color: var(--tblr-dark-text-emphasis) !important -} - -.link-opacity-10 { - --tblr-link-opacity: 0.1 -} - -.link-opacity-10-hover:hover { - --tblr-link-opacity: 0.1 -} - -.link-opacity-25 { - --tblr-link-opacity: 0.25 -} - -.link-opacity-25-hover:hover { - --tblr-link-opacity: 0.25 -} - -.link-opacity-50 { - --tblr-link-opacity: 0.5 -} - -.link-opacity-50-hover:hover { - --tblr-link-opacity: 0.5 -} - -.link-opacity-75 { - --tblr-link-opacity: 0.75 -} - -.link-opacity-75-hover:hover { - --tblr-link-opacity: 0.75 -} - -.link-opacity-100 { - --tblr-link-opacity: 1 -} - -.link-opacity-100-hover:hover { - --tblr-link-opacity: 1 -} - -.link-offset-1 { - text-underline-offset: .125em !important -} - -.link-offset-1-hover:hover { - text-underline-offset: .125em !important -} - -.link-offset-2 { - text-underline-offset: .25em !important -} - -.link-offset-2-hover:hover { - text-underline-offset: .25em !important -} - -.link-offset-3 { - text-underline-offset: .375em !important -} - -.link-offset-3-hover:hover { - text-underline-offset: .375em !important -} - -.link-underline-primary { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-secondary { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-success { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-info { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-warning { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-danger { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-light { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-dark { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-muted { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-blue { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-azure { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-indigo { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-purple { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-pink { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-red { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-orange { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-yellow { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-lime { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-green { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-teal { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-cyan { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-facebook { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-twitter { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-linkedin { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-google { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-youtube { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-vimeo { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-dribbble { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-github { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-instagram { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-pinterest { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-vk { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-rss { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-flickr { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-bitbucket { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline-tabler { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; - text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important -} - -.link-underline { - --tblr-link-underline-opacity: 1; - -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; - text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important -} - -.link-underline-opacity-0 { - --tblr-link-underline-opacity: 0 -} - -.link-underline-opacity-0-hover:hover { - --tblr-link-underline-opacity: 0 -} - -.link-underline-opacity-10 { - --tblr-link-underline-opacity: 0.1 -} - -.link-underline-opacity-10-hover:hover { - --tblr-link-underline-opacity: 0.1 -} - -.link-underline-opacity-25 { - --tblr-link-underline-opacity: 0.25 -} - -.link-underline-opacity-25-hover:hover { - --tblr-link-underline-opacity: 0.25 -} - -.link-underline-opacity-50 { - --tblr-link-underline-opacity: 0.5 -} - -.link-underline-opacity-50-hover:hover { - --tblr-link-underline-opacity: 0.5 -} - -.link-underline-opacity-75 { - --tblr-link-underline-opacity: 0.75 -} - -.link-underline-opacity-75-hover:hover { - --tblr-link-underline-opacity: 0.75 -} - -.link-underline-opacity-100 { - --tblr-link-underline-opacity: 1 -} - -.link-underline-opacity-100-hover:hover { - --tblr-link-underline-opacity: 1 -} - -.bg-primary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-secondary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-success { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-info { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-warning { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-danger { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-light { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-dark { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-muted { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-blue { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-azure { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-indigo { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-purple { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-pink { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-red { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-orange { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-yellow { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-lime { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-green { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-teal { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-cyan { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-facebook { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-twitter { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-linkedin { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-google { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-youtube { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-vimeo { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-dribbble { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-github { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-instagram { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-pinterest { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-vk { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-rss { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-flickr { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-bitbucket { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-tabler { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-black { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-black-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-white { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-body { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-body-bg-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-transparent { - --tblr-bg-opacity: 1; - background-color: transparent !important -} - -.bg-body-secondary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-secondary-bg-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-body-tertiary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-tertiary-bg-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-opacity-10 { - --tblr-bg-opacity: 0.1 -} - -.bg-opacity-25 { - --tblr-bg-opacity: 0.25 -} - -.bg-opacity-50 { - --tblr-bg-opacity: 0.5 -} - -.bg-opacity-75 { - --tblr-bg-opacity: 0.75 -} - -.bg-opacity-100 { - --tblr-bg-opacity: 1 -} - -.bg-primary-subtle { - background-color: var(--tblr-primary-bg-subtle) !important -} - -.bg-secondary-subtle { - background-color: var(--tblr-secondary-bg-subtle) !important -} - -.bg-success-subtle { - background-color: var(--tblr-success-bg-subtle) !important -} - -.bg-info-subtle { - background-color: var(--tblr-info-bg-subtle) !important -} - -.bg-warning-subtle { - background-color: var(--tblr-warning-bg-subtle) !important -} - -.bg-danger-subtle { - background-color: var(--tblr-danger-bg-subtle) !important -} - -.bg-light-subtle { - background-color: var(--tblr-light-bg-subtle) !important -} - -.bg-dark-subtle { - background-color: var(--tblr-dark-bg-subtle) !important -} - -.bg-gradient { - background-image: var(--tblr-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; - -ms-user-select: auto !important; - user-select: auto !important -} - -.user-select-none { - -webkit-user-select: none !important; - -moz-user-select: none !important; - -ms-user-select: none !important; - user-select: none !important -} - -.pe-none { - pointer-events: none !important -} - -.pe-auto { - pointer-events: auto !important -} - -.rounded { - border-radius: var(--tblr-border-radius) !important -} - -.rounded-0 { - border-radius: 0 !important -} - -.rounded-1 { - border-radius: var(--tblr-border-radius-sm) !important -} - -.rounded-2 { - border-radius: var(--tblr-border-radius) !important -} - -.rounded-3 { - border-radius: var(--tblr-border-radius-lg) !important -} - -.rounded-4 { - border-radius: var(--tblr-border-radius-xl) !important -} - -.rounded-5 { - border-radius: var(--tblr-border-radius-xxl) !important -} - -.rounded-circle { - border-radius: 50% !important -} - -.rounded-pill { - border-radius: var(--tblr-border-radius-pill) !important -} - -.rounded-top { - border-top-left-radius: var(--tblr-border-radius) !important; - border-top-right-radius: var(--tblr-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(--tblr-border-radius-sm) !important; - border-top-right-radius: var(--tblr-border-radius-sm) !important -} - -.rounded-top-2 { - border-top-left-radius: var(--tblr-border-radius) !important; - border-top-right-radius: var(--tblr-border-radius) !important -} - -.rounded-top-3 { - border-top-left-radius: var(--tblr-border-radius-lg) !important; - border-top-right-radius: var(--tblr-border-radius-lg) !important -} - -.rounded-top-4 { - border-top-left-radius: var(--tblr-border-radius-xl) !important; - border-top-right-radius: var(--tblr-border-radius-xl) !important -} - -.rounded-top-5 { - border-top-left-radius: var(--tblr-border-radius-xxl) !important; - border-top-right-radius: var(--tblr-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(--tblr-border-radius-pill) !important; - border-top-right-radius: var(--tblr-border-radius-pill) !important -} - -.rounded-end { - border-top-right-radius: var(--tblr-border-radius) !important; - border-bottom-right-radius: var(--tblr-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(--tblr-border-radius-sm) !important; - border-bottom-right-radius: var(--tblr-border-radius-sm) !important -} - -.rounded-end-2 { - border-top-right-radius: var(--tblr-border-radius) !important; - border-bottom-right-radius: var(--tblr-border-radius) !important -} - -.rounded-end-3 { - border-top-right-radius: var(--tblr-border-radius-lg) !important; - border-bottom-right-radius: var(--tblr-border-radius-lg) !important -} - -.rounded-end-4 { - border-top-right-radius: var(--tblr-border-radius-xl) !important; - border-bottom-right-radius: var(--tblr-border-radius-xl) !important -} - -.rounded-end-5 { - border-top-right-radius: var(--tblr-border-radius-xxl) !important; - border-bottom-right-radius: var(--tblr-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(--tblr-border-radius-pill) !important; - border-bottom-right-radius: var(--tblr-border-radius-pill) !important -} - -.rounded-bottom { - border-bottom-right-radius: var(--tblr-border-radius) !important; - border-bottom-left-radius: var(--tblr-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(--tblr-border-radius-sm) !important; - border-bottom-left-radius: var(--tblr-border-radius-sm) !important -} - -.rounded-bottom-2 { - border-bottom-right-radius: var(--tblr-border-radius) !important; - border-bottom-left-radius: var(--tblr-border-radius) !important -} - -.rounded-bottom-3 { - border-bottom-right-radius: var(--tblr-border-radius-lg) !important; - border-bottom-left-radius: var(--tblr-border-radius-lg) !important -} - -.rounded-bottom-4 { - border-bottom-right-radius: var(--tblr-border-radius-xl) !important; - border-bottom-left-radius: var(--tblr-border-radius-xl) !important -} - -.rounded-bottom-5 { - border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; - border-bottom-left-radius: var(--tblr-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(--tblr-border-radius-pill) !important; - border-bottom-left-radius: var(--tblr-border-radius-pill) !important -} - -.rounded-start { - border-bottom-left-radius: var(--tblr-border-radius) !important; - border-top-left-radius: var(--tblr-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(--tblr-border-radius-sm) !important; - border-top-left-radius: var(--tblr-border-radius-sm) !important -} - -.rounded-start-2 { - border-bottom-left-radius: var(--tblr-border-radius) !important; - border-top-left-radius: var(--tblr-border-radius) !important -} - -.rounded-start-3 { - border-bottom-left-radius: var(--tblr-border-radius-lg) !important; - border-top-left-radius: var(--tblr-border-radius-lg) !important -} - -.rounded-start-4 { - border-bottom-left-radius: var(--tblr-border-radius-xl) !important; - border-top-left-radius: var(--tblr-border-radius-xl) !important -} - -.rounded-start-5 { - border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; - border-top-left-radius: var(--tblr-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(--tblr-border-radius-pill) !important; - border-top-left-radius: var(--tblr-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 -} - -.object-contain { - -o-object-fit: contain !important; - object-fit: contain !important -} - -.object-cover { - -o-object-fit: cover !important; - object-fit: cover !important -} - -.object-fill { - -o-object-fit: fill !important; - object-fit: fill !important -} - -.object-scale-down { - -o-object-fit: scale-down !important; - object-fit: scale-down !important -} - -.object-none { - -o-object-fit: none !important; - object-fit: none !important -} - -.tracking-tight { - letter-spacing: -.05em !important -} - -.tracking-normal { - letter-spacing: 0 !important -} - -.tracking-wide { - letter-spacing: .05em !important -} - -.cursor-auto { - cursor: auto !important -} - -.cursor-pointer { - cursor: pointer !important -} - -.cursor-move { - cursor: move !important -} - -.cursor-not-allowed { - cursor: not-allowed !important -} - -.cursor-zoom-in { - cursor: zoom-in !important -} - -.cursor-zoom-out { - cursor: zoom-out !important -} - -.cursor-default { - cursor: default !important -} - -.cursor-none { - cursor: none !important -} - -.cursor-help { - cursor: help !important -} - -.cursor-progress { - cursor: progress !important -} - -.cursor-wait { - cursor: wait !important -} - -.cursor-text { - cursor: text !important -} - -.cursor-v-text { - cursor: vertical-text !important -} - -.cursor-grab { - cursor: -webkit-grab !important; - cursor: grab !important -} - -.cursor-grabbing { - cursor: -webkit-grabbing !important; - cursor: grabbing !important -} - -.border-x { - border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important; - border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-x-wide { - border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important; - border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-x-0 { - border-left: 0 !important; - border-right: 0 !important -} - -.border-y { - border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important; - border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-y-wide { - border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important; - border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, .14) !important -} - -.border-y-0 { - border-top: 0 !important; - border-bottom: 0 !important -} - -.columns-2 { - columns: 2 !important -} - -.columns-3 { - columns: 3 !important -} - -.columns-4 { - columns: 4 !important -} - -@media (min-width:576px) { - .float-sm-start { - float: left !important - } - - .float-sm-end { - float: right !important - } - - .float-sm-none { - float: none !important - } - - .object-fit-sm-contain { - -o-object-fit: contain !important; - object-fit: contain !important - } - - .object-fit-sm-cover { - -o-object-fit: cover !important; - object-fit: cover !important - } - - .object-fit-sm-fill { - -o-object-fit: fill !important; - object-fit: fill !important - } - - .object-fit-sm-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important - } - - .object-fit-sm-none { - -o-object-fit: none !important; - object-fit: none !important - } - - .d-sm-inline { - display: inline !important - } - - .d-sm-inline-block { - display: inline-block !important - } - - .d-sm-block { - display: block !important - } - - .d-sm-grid { - display: grid !important - } - - .d-sm-inline-grid { - display: inline-grid !important - } - - .d-sm-table { - display: table !important - } - - .d-sm-table-row { - display: table-row !important - } - - .d-sm-table-cell { - display: table-cell !important - } - - .d-sm-flex { - display: flex !important - } - - .d-sm-inline-flex { - display: inline-flex !important - } - - .d-sm-none { - display: none !important - } - - .flex-sm-fill { - flex: 1 1 auto !important - } - - .flex-sm-row { - flex-direction: row !important - } - - .flex-sm-column { - flex-direction: column !important - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important - } - - .flex-sm-grow-0 { - flex-grow: 0 !important - } - - .flex-sm-grow-1 { - flex-grow: 1 !important - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important - } - - .flex-sm-wrap { - flex-wrap: wrap !important - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important - } - - .justify-content-sm-start { - justify-content: flex-start !important - } - - .justify-content-sm-end { - justify-content: flex-end !important - } - - .justify-content-sm-center { - justify-content: center !important - } - - .justify-content-sm-between { - justify-content: space-between !important - } - - .justify-content-sm-around { - justify-content: space-around !important - } - - .justify-content-sm-evenly { - justify-content: space-evenly !important - } - - .align-items-sm-start { - align-items: flex-start !important - } - - .align-items-sm-end { - align-items: flex-end !important - } - - .align-items-sm-center { - align-items: center !important - } - - .align-items-sm-baseline { - align-items: baseline !important - } - - .align-items-sm-stretch { - align-items: stretch !important - } - - .align-content-sm-start { - align-content: flex-start !important - } - - .align-content-sm-end { - align-content: flex-end !important - } - - .align-content-sm-center { - align-content: center !important - } - - .align-content-sm-between { - align-content: space-between !important - } - - .align-content-sm-around { - align-content: space-around !important - } - - .align-content-sm-stretch { - align-content: stretch !important - } - - .align-self-sm-auto { - align-self: auto !important - } - - .align-self-sm-start { - align-self: flex-start !important - } - - .align-self-sm-end { - align-self: flex-end !important - } - - .align-self-sm-center { - align-self: center !important - } - - .align-self-sm-baseline { - align-self: baseline !important - } - - .align-self-sm-stretch { - align-self: stretch !important - } - - .order-sm-first { - order: -1 !important - } - - .order-sm-0 { - order: 0 !important - } - - .order-sm-1 { - order: 1 !important - } - - .order-sm-2 { - order: 2 !important - } - - .order-sm-3 { - order: 3 !important - } - - .order-sm-4 { - order: 4 !important - } - - .order-sm-5 { - order: 5 !important - } - - .order-sm-last { - order: 6 !important - } - - .m-sm-0 { - margin: 0 !important - } - - .m-sm-1 { - margin: .25rem !important - } - - .m-sm-2 { - margin: .5rem !important - } - - .m-sm-3 { - margin: 1rem !important - } - - .m-sm-4 { - margin: 1.5rem !important - } - - .m-sm-5 { - margin: 2rem !important - } - - .m-sm-6 { - margin: 3rem !important - } - - .m-sm-7 { - margin: 5rem !important - } - - .m-sm-8 { - margin: 8rem !important - } - - .m-sm-auto { - margin: auto !important - } - - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-sm-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-sm-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-sm-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-sm-6 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-sm-7 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-sm-8 { - margin-right: 8rem !important; - margin-left: 8rem !important - } - - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-sm-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-sm-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-sm-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-sm-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-sm-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-sm-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important - } - - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-sm-0 { - margin-top: 0 !important - } - - .mt-sm-1 { - margin-top: .25rem !important - } - - .mt-sm-2 { - margin-top: .5rem !important - } - - .mt-sm-3 { - margin-top: 1rem !important - } - - .mt-sm-4 { - margin-top: 1.5rem !important - } - - .mt-sm-5 { - margin-top: 2rem !important - } - - .mt-sm-6 { - margin-top: 3rem !important - } - - .mt-sm-7 { - margin-top: 5rem !important - } - - .mt-sm-8 { - margin-top: 8rem !important - } - - .mt-sm-auto { - margin-top: auto !important - } - - .me-sm-0 { - margin-right: 0 !important - } - - .me-sm-1 { - margin-right: .25rem !important - } - - .me-sm-2 { - margin-right: .5rem !important - } - - .me-sm-3 { - margin-right: 1rem !important - } - - .me-sm-4 { - margin-right: 1.5rem !important - } - - .me-sm-5 { - margin-right: 2rem !important - } - - .me-sm-6 { - margin-right: 3rem !important - } - - .me-sm-7 { - margin-right: 5rem !important - } - - .me-sm-8 { - margin-right: 8rem !important - } - - .me-sm-auto { - margin-right: auto !important - } - - .mb-sm-0 { - margin-bottom: 0 !important - } - - .mb-sm-1 { - margin-bottom: .25rem !important - } - - .mb-sm-2 { - margin-bottom: .5rem !important - } - - .mb-sm-3 { - margin-bottom: 1rem !important - } - - .mb-sm-4 { - margin-bottom: 1.5rem !important - } - - .mb-sm-5 { - margin-bottom: 2rem !important - } - - .mb-sm-6 { - margin-bottom: 3rem !important - } - - .mb-sm-7 { - margin-bottom: 5rem !important - } - - .mb-sm-8 { - margin-bottom: 8rem !important - } - - .mb-sm-auto { - margin-bottom: auto !important - } - - .ms-sm-0 { - margin-left: 0 !important - } - - .ms-sm-1 { - margin-left: .25rem !important - } - - .ms-sm-2 { - margin-left: .5rem !important - } - - .ms-sm-3 { - margin-left: 1rem !important - } - - .ms-sm-4 { - margin-left: 1.5rem !important - } - - .ms-sm-5 { - margin-left: 2rem !important - } - - .ms-sm-6 { - margin-left: 3rem !important - } - - .ms-sm-7 { - margin-left: 5rem !important - } - - .ms-sm-8 { - margin-left: 8rem !important - } - - .ms-sm-auto { - margin-left: auto !important - } - - .p-sm-0 { - padding: 0 !important - } - - .p-sm-1 { - padding: .25rem !important - } - - .p-sm-2 { - padding: .5rem !important - } - - .p-sm-3 { - padding: 1rem !important - } - - .p-sm-4 { - padding: 1.5rem !important - } - - .p-sm-5 { - padding: 2rem !important - } - - .p-sm-6 { - padding: 3rem !important - } - - .p-sm-7 { - padding: 5rem !important - } - - .p-sm-8 { - padding: 8rem !important - } - - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-sm-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-sm-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-sm-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-sm-6 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-sm-7 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-sm-8 { - padding-right: 8rem !important; - padding-left: 8rem !important - } - - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-sm-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-sm-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-sm-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-sm-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-sm-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-sm-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important - } - - .pt-sm-0 { - padding-top: 0 !important - } - - .pt-sm-1 { - padding-top: .25rem !important - } - - .pt-sm-2 { - padding-top: .5rem !important - } - - .pt-sm-3 { - padding-top: 1rem !important - } - - .pt-sm-4 { - padding-top: 1.5rem !important - } - - .pt-sm-5 { - padding-top: 2rem !important - } - - .pt-sm-6 { - padding-top: 3rem !important - } - - .pt-sm-7 { - padding-top: 5rem !important - } - - .pt-sm-8 { - padding-top: 8rem !important - } - - .pe-sm-0 { - padding-right: 0 !important - } - - .pe-sm-1 { - padding-right: .25rem !important - } - - .pe-sm-2 { - padding-right: .5rem !important - } - - .pe-sm-3 { - padding-right: 1rem !important - } - - .pe-sm-4 { - padding-right: 1.5rem !important - } - - .pe-sm-5 { - padding-right: 2rem !important - } - - .pe-sm-6 { - padding-right: 3rem !important - } - - .pe-sm-7 { - padding-right: 5rem !important - } - - .pe-sm-8 { - padding-right: 8rem !important - } - - .pb-sm-0 { - padding-bottom: 0 !important - } - - .pb-sm-1 { - padding-bottom: .25rem !important - } - - .pb-sm-2 { - padding-bottom: .5rem !important - } - - .pb-sm-3 { - padding-bottom: 1rem !important - } - - .pb-sm-4 { - padding-bottom: 1.5rem !important - } - - .pb-sm-5 { - padding-bottom: 2rem !important - } - - .pb-sm-6 { - padding-bottom: 3rem !important - } - - .pb-sm-7 { - padding-bottom: 5rem !important - } - - .pb-sm-8 { - padding-bottom: 8rem !important - } - - .ps-sm-0 { - padding-left: 0 !important - } - - .ps-sm-1 { - padding-left: .25rem !important - } - - .ps-sm-2 { - padding-left: .5rem !important - } - - .ps-sm-3 { - padding-left: 1rem !important - } - - .ps-sm-4 { - padding-left: 1.5rem !important - } - - .ps-sm-5 { - padding-left: 2rem !important - } - - .ps-sm-6 { - padding-left: 3rem !important - } - - .ps-sm-7 { - padding-left: 5rem !important - } - - .ps-sm-8 { - padding-left: 8rem !important - } - - .gap-sm-0 { - gap: 0 !important - } - - .gap-sm-1 { - gap: .25rem !important - } - - .gap-sm-2 { - gap: .5rem !important - } - - .gap-sm-3 { - gap: 1rem !important - } - - .gap-sm-4 { - gap: 1.5rem !important - } - - .gap-sm-5 { - gap: 2rem !important - } - - .gap-sm-6 { - gap: 3rem !important - } - - .gap-sm-7 { - gap: 5rem !important - } - - .gap-sm-8 { - gap: 8rem !important - } - - .row-gap-sm-0 { - row-gap: 0 !important - } - - .row-gap-sm-1 { - row-gap: .25rem !important - } - - .row-gap-sm-2 { - row-gap: .5rem !important - } - - .row-gap-sm-3 { - row-gap: 1rem !important - } - - .row-gap-sm-4 { - row-gap: 1.5rem !important - } - - .row-gap-sm-5 { - row-gap: 2rem !important - } - - .row-gap-sm-6 { - row-gap: 3rem !important - } - - .row-gap-sm-7 { - row-gap: 5rem !important - } - - .row-gap-sm-8 { - row-gap: 8rem !important - } - - .column-gap-sm-0 { - column-gap: 0 !important - } - - .column-gap-sm-1 { - column-gap: .25rem !important - } - - .column-gap-sm-2 { - column-gap: .5rem !important - } - - .column-gap-sm-3 { - column-gap: 1rem !important - } - - .column-gap-sm-4 { - column-gap: 1.5rem !important - } - - .column-gap-sm-5 { - column-gap: 2rem !important - } - - .column-gap-sm-6 { - column-gap: 3rem !important - } - - .column-gap-sm-7 { - column-gap: 5rem !important - } - - .column-gap-sm-8 { - column-gap: 8rem !important - } - - .text-sm-start { - text-align: left !important - } - - .text-sm-end { - text-align: right !important - } - - .text-sm-center { - text-align: center !important - } - - .columns-sm-2 { - columns: 2 !important - } - - .columns-sm-3 { - columns: 3 !important - } - - .columns-sm-4 { - columns: 4 !important - } -} - -@media (min-width:768px) { - .float-md-start { - float: left !important - } - - .float-md-end { - float: right !important - } - - .float-md-none { - float: none !important - } - - .object-fit-md-contain { - -o-object-fit: contain !important; - object-fit: contain !important - } - - .object-fit-md-cover { - -o-object-fit: cover !important; - object-fit: cover !important - } - - .object-fit-md-fill { - -o-object-fit: fill !important; - object-fit: fill !important - } - - .object-fit-md-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important - } - - .object-fit-md-none { - -o-object-fit: none !important; - object-fit: none !important - } - - .d-md-inline { - display: inline !important - } - - .d-md-inline-block { - display: inline-block !important - } - - .d-md-block { - display: block !important - } - - .d-md-grid { - display: grid !important - } - - .d-md-inline-grid { - display: inline-grid !important - } - - .d-md-table { - display: table !important - } - - .d-md-table-row { - display: table-row !important - } - - .d-md-table-cell { - display: table-cell !important - } - - .d-md-flex { - display: flex !important - } - - .d-md-inline-flex { - display: inline-flex !important - } - - .d-md-none { - display: none !important - } - - .flex-md-fill { - flex: 1 1 auto !important - } - - .flex-md-row { - flex-direction: row !important - } - - .flex-md-column { - flex-direction: column !important - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important - } - - .flex-md-grow-0 { - flex-grow: 0 !important - } - - .flex-md-grow-1 { - flex-grow: 1 !important - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important - } - - .flex-md-wrap { - flex-wrap: wrap !important - } - - .flex-md-nowrap { - flex-wrap: nowrap !important - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important - } - - .justify-content-md-start { - justify-content: flex-start !important - } - - .justify-content-md-end { - justify-content: flex-end !important - } - - .justify-content-md-center { - justify-content: center !important - } - - .justify-content-md-between { - justify-content: space-between !important - } - - .justify-content-md-around { - justify-content: space-around !important - } - - .justify-content-md-evenly { - justify-content: space-evenly !important - } - - .align-items-md-start { - align-items: flex-start !important - } - - .align-items-md-end { - align-items: flex-end !important - } - - .align-items-md-center { - align-items: center !important - } - - .align-items-md-baseline { - align-items: baseline !important - } - - .align-items-md-stretch { - align-items: stretch !important - } - - .align-content-md-start { - align-content: flex-start !important - } - - .align-content-md-end { - align-content: flex-end !important - } - - .align-content-md-center { - align-content: center !important - } - - .align-content-md-between { - align-content: space-between !important - } - - .align-content-md-around { - align-content: space-around !important - } - - .align-content-md-stretch { - align-content: stretch !important - } - - .align-self-md-auto { - align-self: auto !important - } - - .align-self-md-start { - align-self: flex-start !important - } - - .align-self-md-end { - align-self: flex-end !important - } - - .align-self-md-center { - align-self: center !important - } - - .align-self-md-baseline { - align-self: baseline !important - } - - .align-self-md-stretch { - align-self: stretch !important - } - - .order-md-first { - order: -1 !important - } - - .order-md-0 { - order: 0 !important - } - - .order-md-1 { - order: 1 !important - } - - .order-md-2 { - order: 2 !important - } - - .order-md-3 { - order: 3 !important - } - - .order-md-4 { - order: 4 !important - } - - .order-md-5 { - order: 5 !important - } - - .order-md-last { - order: 6 !important - } - - .m-md-0 { - margin: 0 !important - } - - .m-md-1 { - margin: .25rem !important - } - - .m-md-2 { - margin: .5rem !important - } - - .m-md-3 { - margin: 1rem !important - } - - .m-md-4 { - margin: 1.5rem !important - } - - .m-md-5 { - margin: 2rem !important - } - - .m-md-6 { - margin: 3rem !important - } - - .m-md-7 { - margin: 5rem !important - } - - .m-md-8 { - margin: 8rem !important - } - - .m-md-auto { - margin: auto !important - } - - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-md-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-md-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-md-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-md-6 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-md-7 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-md-8 { - margin-right: 8rem !important; - margin-left: 8rem !important - } - - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-md-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-md-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-md-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-md-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-md-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-md-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important - } - - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-md-0 { - margin-top: 0 !important - } - - .mt-md-1 { - margin-top: .25rem !important - } - - .mt-md-2 { - margin-top: .5rem !important - } - - .mt-md-3 { - margin-top: 1rem !important - } - - .mt-md-4 { - margin-top: 1.5rem !important - } - - .mt-md-5 { - margin-top: 2rem !important - } - - .mt-md-6 { - margin-top: 3rem !important - } - - .mt-md-7 { - margin-top: 5rem !important - } - - .mt-md-8 { - margin-top: 8rem !important - } - - .mt-md-auto { - margin-top: auto !important - } - - .me-md-0 { - margin-right: 0 !important - } - - .me-md-1 { - margin-right: .25rem !important - } - - .me-md-2 { - margin-right: .5rem !important - } - - .me-md-3 { - margin-right: 1rem !important - } - - .me-md-4 { - margin-right: 1.5rem !important - } - - .me-md-5 { - margin-right: 2rem !important - } - - .me-md-6 { - margin-right: 3rem !important - } - - .me-md-7 { - margin-right: 5rem !important - } - - .me-md-8 { - margin-right: 8rem !important - } - - .me-md-auto { - margin-right: auto !important - } - - .mb-md-0 { - margin-bottom: 0 !important - } - - .mb-md-1 { - margin-bottom: .25rem !important - } - - .mb-md-2 { - margin-bottom: .5rem !important - } - - .mb-md-3 { - margin-bottom: 1rem !important - } - - .mb-md-4 { - margin-bottom: 1.5rem !important - } - - .mb-md-5 { - margin-bottom: 2rem !important - } - - .mb-md-6 { - margin-bottom: 3rem !important - } - - .mb-md-7 { - margin-bottom: 5rem !important - } - - .mb-md-8 { - margin-bottom: 8rem !important - } - - .mb-md-auto { - margin-bottom: auto !important - } - - .ms-md-0 { - margin-left: 0 !important - } - - .ms-md-1 { - margin-left: .25rem !important - } - - .ms-md-2 { - margin-left: .5rem !important - } - - .ms-md-3 { - margin-left: 1rem !important - } - - .ms-md-4 { - margin-left: 1.5rem !important - } - - .ms-md-5 { - margin-left: 2rem !important - } - - .ms-md-6 { - margin-left: 3rem !important - } - - .ms-md-7 { - margin-left: 5rem !important - } - - .ms-md-8 { - margin-left: 8rem !important - } - - .ms-md-auto { - margin-left: auto !important - } - - .p-md-0 { - padding: 0 !important - } - - .p-md-1 { - padding: .25rem !important - } - - .p-md-2 { - padding: .5rem !important - } - - .p-md-3 { - padding: 1rem !important - } - - .p-md-4 { - padding: 1.5rem !important - } - - .p-md-5 { - padding: 2rem !important - } - - .p-md-6 { - padding: 3rem !important - } - - .p-md-7 { - padding: 5rem !important - } - - .p-md-8 { - padding: 8rem !important - } - - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-md-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-md-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-md-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-md-6 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-md-7 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-md-8 { - padding-right: 8rem !important; - padding-left: 8rem !important - } - - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-md-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-md-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-md-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-md-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-md-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-md-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important - } - - .pt-md-0 { - padding-top: 0 !important - } - - .pt-md-1 { - padding-top: .25rem !important - } - - .pt-md-2 { - padding-top: .5rem !important - } - - .pt-md-3 { - padding-top: 1rem !important - } - - .pt-md-4 { - padding-top: 1.5rem !important - } - - .pt-md-5 { - padding-top: 2rem !important - } - - .pt-md-6 { - padding-top: 3rem !important - } - - .pt-md-7 { - padding-top: 5rem !important - } - - .pt-md-8 { - padding-top: 8rem !important - } - - .pe-md-0 { - padding-right: 0 !important - } - - .pe-md-1 { - padding-right: .25rem !important - } - - .pe-md-2 { - padding-right: .5rem !important - } - - .pe-md-3 { - padding-right: 1rem !important - } - - .pe-md-4 { - padding-right: 1.5rem !important - } - - .pe-md-5 { - padding-right: 2rem !important - } - - .pe-md-6 { - padding-right: 3rem !important - } - - .pe-md-7 { - padding-right: 5rem !important - } - - .pe-md-8 { - padding-right: 8rem !important - } - - .pb-md-0 { - padding-bottom: 0 !important - } - - .pb-md-1 { - padding-bottom: .25rem !important - } - - .pb-md-2 { - padding-bottom: .5rem !important - } - - .pb-md-3 { - padding-bottom: 1rem !important - } - - .pb-md-4 { - padding-bottom: 1.5rem !important - } - - .pb-md-5 { - padding-bottom: 2rem !important - } - - .pb-md-6 { - padding-bottom: 3rem !important - } - - .pb-md-7 { - padding-bottom: 5rem !important - } - - .pb-md-8 { - padding-bottom: 8rem !important - } - - .ps-md-0 { - padding-left: 0 !important - } - - .ps-md-1 { - padding-left: .25rem !important - } - - .ps-md-2 { - padding-left: .5rem !important - } - - .ps-md-3 { - padding-left: 1rem !important - } - - .ps-md-4 { - padding-left: 1.5rem !important - } - - .ps-md-5 { - padding-left: 2rem !important - } - - .ps-md-6 { - padding-left: 3rem !important - } - - .ps-md-7 { - padding-left: 5rem !important - } - - .ps-md-8 { - padding-left: 8rem !important - } - - .gap-md-0 { - gap: 0 !important - } - - .gap-md-1 { - gap: .25rem !important - } - - .gap-md-2 { - gap: .5rem !important - } - - .gap-md-3 { - gap: 1rem !important - } - - .gap-md-4 { - gap: 1.5rem !important - } - - .gap-md-5 { - gap: 2rem !important - } - - .gap-md-6 { - gap: 3rem !important - } - - .gap-md-7 { - gap: 5rem !important - } - - .gap-md-8 { - gap: 8rem !important - } - - .row-gap-md-0 { - row-gap: 0 !important - } - - .row-gap-md-1 { - row-gap: .25rem !important - } - - .row-gap-md-2 { - row-gap: .5rem !important - } - - .row-gap-md-3 { - row-gap: 1rem !important - } - - .row-gap-md-4 { - row-gap: 1.5rem !important - } - - .row-gap-md-5 { - row-gap: 2rem !important - } - - .row-gap-md-6 { - row-gap: 3rem !important - } - - .row-gap-md-7 { - row-gap: 5rem !important - } - - .row-gap-md-8 { - row-gap: 8rem !important - } - - .column-gap-md-0 { - column-gap: 0 !important - } - - .column-gap-md-1 { - column-gap: .25rem !important - } - - .column-gap-md-2 { - column-gap: .5rem !important - } - - .column-gap-md-3 { - column-gap: 1rem !important - } - - .column-gap-md-4 { - column-gap: 1.5rem !important - } - - .column-gap-md-5 { - column-gap: 2rem !important - } - - .column-gap-md-6 { - column-gap: 3rem !important - } - - .column-gap-md-7 { - column-gap: 5rem !important - } - - .column-gap-md-8 { - column-gap: 8rem !important - } - - .text-md-start { - text-align: left !important - } - - .text-md-end { - text-align: right !important - } - - .text-md-center { - text-align: center !important - } - - .columns-md-2 { - columns: 2 !important - } - - .columns-md-3 { - columns: 3 !important - } - - .columns-md-4 { - columns: 4 !important - } -} - -@media (min-width:992px) { - .float-lg-start { - float: left !important - } - - .float-lg-end { - float: right !important - } - - .float-lg-none { - float: none !important - } - - .object-fit-lg-contain { - -o-object-fit: contain !important; - object-fit: contain !important - } - - .object-fit-lg-cover { - -o-object-fit: cover !important; - object-fit: cover !important - } - - .object-fit-lg-fill { - -o-object-fit: fill !important; - object-fit: fill !important - } - - .object-fit-lg-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important - } - - .object-fit-lg-none { - -o-object-fit: none !important; - object-fit: none !important - } - - .d-lg-inline { - display: inline !important - } - - .d-lg-inline-block { - display: inline-block !important - } - - .d-lg-block { - display: block !important - } - - .d-lg-grid { - display: grid !important - } - - .d-lg-inline-grid { - display: inline-grid !important - } - - .d-lg-table { - display: table !important - } - - .d-lg-table-row { - display: table-row !important - } - - .d-lg-table-cell { - display: table-cell !important - } - - .d-lg-flex { - display: flex !important - } - - .d-lg-inline-flex { - display: inline-flex !important - } - - .d-lg-none { - display: none !important - } - - .flex-lg-fill { - flex: 1 1 auto !important - } - - .flex-lg-row { - flex-direction: row !important - } - - .flex-lg-column { - flex-direction: column !important - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important - } - - .flex-lg-grow-0 { - flex-grow: 0 !important - } - - .flex-lg-grow-1 { - flex-grow: 1 !important - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important - } - - .flex-lg-wrap { - flex-wrap: wrap !important - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important - } - - .justify-content-lg-start { - justify-content: flex-start !important - } - - .justify-content-lg-end { - justify-content: flex-end !important - } - - .justify-content-lg-center { - justify-content: center !important - } - - .justify-content-lg-between { - justify-content: space-between !important - } - - .justify-content-lg-around { - justify-content: space-around !important - } - - .justify-content-lg-evenly { - justify-content: space-evenly !important - } - - .align-items-lg-start { - align-items: flex-start !important - } - - .align-items-lg-end { - align-items: flex-end !important - } - - .align-items-lg-center { - align-items: center !important - } - - .align-items-lg-baseline { - align-items: baseline !important - } - - .align-items-lg-stretch { - align-items: stretch !important - } - - .align-content-lg-start { - align-content: flex-start !important - } - - .align-content-lg-end { - align-content: flex-end !important - } - - .align-content-lg-center { - align-content: center !important - } - - .align-content-lg-between { - align-content: space-between !important - } - - .align-content-lg-around { - align-content: space-around !important - } - - .align-content-lg-stretch { - align-content: stretch !important - } - - .align-self-lg-auto { - align-self: auto !important - } - - .align-self-lg-start { - align-self: flex-start !important - } - - .align-self-lg-end { - align-self: flex-end !important - } - - .align-self-lg-center { - align-self: center !important - } - - .align-self-lg-baseline { - align-self: baseline !important - } - - .align-self-lg-stretch { - align-self: stretch !important - } - - .order-lg-first { - order: -1 !important - } - - .order-lg-0 { - order: 0 !important - } - - .order-lg-1 { - order: 1 !important - } - - .order-lg-2 { - order: 2 !important - } - - .order-lg-3 { - order: 3 !important - } - - .order-lg-4 { - order: 4 !important - } - - .order-lg-5 { - order: 5 !important - } - - .order-lg-last { - order: 6 !important - } - - .m-lg-0 { - margin: 0 !important - } - - .m-lg-1 { - margin: .25rem !important - } - - .m-lg-2 { - margin: .5rem !important - } - - .m-lg-3 { - margin: 1rem !important - } - - .m-lg-4 { - margin: 1.5rem !important - } - - .m-lg-5 { - margin: 2rem !important - } - - .m-lg-6 { - margin: 3rem !important - } - - .m-lg-7 { - margin: 5rem !important - } - - .m-lg-8 { - margin: 8rem !important - } - - .m-lg-auto { - margin: auto !important - } - - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-lg-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-lg-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-lg-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-lg-6 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-lg-7 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-lg-8 { - margin-right: 8rem !important; - margin-left: 8rem !important - } - - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-lg-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-lg-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-lg-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-lg-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-lg-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-lg-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important - } - - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-lg-0 { - margin-top: 0 !important - } - - .mt-lg-1 { - margin-top: .25rem !important - } - - .mt-lg-2 { - margin-top: .5rem !important - } - - .mt-lg-3 { - margin-top: 1rem !important - } - - .mt-lg-4 { - margin-top: 1.5rem !important - } - - .mt-lg-5 { - margin-top: 2rem !important - } - - .mt-lg-6 { - margin-top: 3rem !important - } - - .mt-lg-7 { - margin-top: 5rem !important - } - - .mt-lg-8 { - margin-top: 8rem !important - } - - .mt-lg-auto { - margin-top: auto !important - } - - .me-lg-0 { - margin-right: 0 !important - } - - .me-lg-1 { - margin-right: .25rem !important - } - - .me-lg-2 { - margin-right: .5rem !important - } - - .me-lg-3 { - margin-right: 1rem !important - } - - .me-lg-4 { - margin-right: 1.5rem !important - } - - .me-lg-5 { - margin-right: 2rem !important - } - - .me-lg-6 { - margin-right: 3rem !important - } - - .me-lg-7 { - margin-right: 5rem !important - } - - .me-lg-8 { - margin-right: 8rem !important - } - - .me-lg-auto { - margin-right: auto !important - } - - .mb-lg-0 { - margin-bottom: 0 !important - } - - .mb-lg-1 { - margin-bottom: .25rem !important - } - - .mb-lg-2 { - margin-bottom: .5rem !important - } - - .mb-lg-3 { - margin-bottom: 1rem !important - } - - .mb-lg-4 { - margin-bottom: 1.5rem !important - } - - .mb-lg-5 { - margin-bottom: 2rem !important - } - - .mb-lg-6 { - margin-bottom: 3rem !important - } - - .mb-lg-7 { - margin-bottom: 5rem !important - } - - .mb-lg-8 { - margin-bottom: 8rem !important - } - - .mb-lg-auto { - margin-bottom: auto !important - } - - .ms-lg-0 { - margin-left: 0 !important - } - - .ms-lg-1 { - margin-left: .25rem !important - } - - .ms-lg-2 { - margin-left: .5rem !important - } - - .ms-lg-3 { - margin-left: 1rem !important - } - - .ms-lg-4 { - margin-left: 1.5rem !important - } - - .ms-lg-5 { - margin-left: 2rem !important - } - - .ms-lg-6 { - margin-left: 3rem !important - } - - .ms-lg-7 { - margin-left: 5rem !important - } - - .ms-lg-8 { - margin-left: 8rem !important - } - - .ms-lg-auto { - margin-left: auto !important - } - - .p-lg-0 { - padding: 0 !important - } - - .p-lg-1 { - padding: .25rem !important - } - - .p-lg-2 { - padding: .5rem !important - } - - .p-lg-3 { - padding: 1rem !important - } - - .p-lg-4 { - padding: 1.5rem !important - } - - .p-lg-5 { - padding: 2rem !important - } - - .p-lg-6 { - padding: 3rem !important - } - - .p-lg-7 { - padding: 5rem !important - } - - .p-lg-8 { - padding: 8rem !important - } - - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-lg-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-lg-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-lg-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-lg-6 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-lg-7 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-lg-8 { - padding-right: 8rem !important; - padding-left: 8rem !important - } - - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-lg-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-lg-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-lg-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-lg-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-lg-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-lg-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important - } - - .pt-lg-0 { - padding-top: 0 !important - } - - .pt-lg-1 { - padding-top: .25rem !important - } - - .pt-lg-2 { - padding-top: .5rem !important - } - - .pt-lg-3 { - padding-top: 1rem !important - } - - .pt-lg-4 { - padding-top: 1.5rem !important - } - - .pt-lg-5 { - padding-top: 2rem !important - } - - .pt-lg-6 { - padding-top: 3rem !important - } - - .pt-lg-7 { - padding-top: 5rem !important - } - - .pt-lg-8 { - padding-top: 8rem !important - } - - .pe-lg-0 { - padding-right: 0 !important - } - - .pe-lg-1 { - padding-right: .25rem !important - } - - .pe-lg-2 { - padding-right: .5rem !important - } - - .pe-lg-3 { - padding-right: 1rem !important - } - - .pe-lg-4 { - padding-right: 1.5rem !important - } - - .pe-lg-5 { - padding-right: 2rem !important - } - - .pe-lg-6 { - padding-right: 3rem !important - } - - .pe-lg-7 { - padding-right: 5rem !important - } - - .pe-lg-8 { - padding-right: 8rem !important - } - - .pb-lg-0 { - padding-bottom: 0 !important - } - - .pb-lg-1 { - padding-bottom: .25rem !important - } - - .pb-lg-2 { - padding-bottom: .5rem !important - } - - .pb-lg-3 { - padding-bottom: 1rem !important - } - - .pb-lg-4 { - padding-bottom: 1.5rem !important - } - - .pb-lg-5 { - padding-bottom: 2rem !important - } - - .pb-lg-6 { - padding-bottom: 3rem !important - } - - .pb-lg-7 { - padding-bottom: 5rem !important - } - - .pb-lg-8 { - padding-bottom: 8rem !important - } - - .ps-lg-0 { - padding-left: 0 !important - } - - .ps-lg-1 { - padding-left: .25rem !important - } - - .ps-lg-2 { - padding-left: .5rem !important - } - - .ps-lg-3 { - padding-left: 1rem !important - } - - .ps-lg-4 { - padding-left: 1.5rem !important - } - - .ps-lg-5 { - padding-left: 2rem !important - } - - .ps-lg-6 { - padding-left: 3rem !important - } - - .ps-lg-7 { - padding-left: 5rem !important - } - - .ps-lg-8 { - padding-left: 8rem !important - } - - .gap-lg-0 { - gap: 0 !important - } - - .gap-lg-1 { - gap: .25rem !important - } - - .gap-lg-2 { - gap: .5rem !important - } - - .gap-lg-3 { - gap: 1rem !important - } - - .gap-lg-4 { - gap: 1.5rem !important - } - - .gap-lg-5 { - gap: 2rem !important - } - - .gap-lg-6 { - gap: 3rem !important - } - - .gap-lg-7 { - gap: 5rem !important - } - - .gap-lg-8 { - gap: 8rem !important - } - - .row-gap-lg-0 { - row-gap: 0 !important - } - - .row-gap-lg-1 { - row-gap: .25rem !important - } - - .row-gap-lg-2 { - row-gap: .5rem !important - } - - .row-gap-lg-3 { - row-gap: 1rem !important - } - - .row-gap-lg-4 { - row-gap: 1.5rem !important - } - - .row-gap-lg-5 { - row-gap: 2rem !important - } - - .row-gap-lg-6 { - row-gap: 3rem !important - } - - .row-gap-lg-7 { - row-gap: 5rem !important - } - - .row-gap-lg-8 { - row-gap: 8rem !important - } - - .column-gap-lg-0 { - column-gap: 0 !important - } - - .column-gap-lg-1 { - column-gap: .25rem !important - } - - .column-gap-lg-2 { - column-gap: .5rem !important - } - - .column-gap-lg-3 { - column-gap: 1rem !important - } - - .column-gap-lg-4 { - column-gap: 1.5rem !important - } - - .column-gap-lg-5 { - column-gap: 2rem !important - } - - .column-gap-lg-6 { - column-gap: 3rem !important - } - - .column-gap-lg-7 { - column-gap: 5rem !important - } - - .column-gap-lg-8 { - column-gap: 8rem !important - } - - .text-lg-start { - text-align: left !important - } - - .text-lg-end { - text-align: right !important - } - - .text-lg-center { - text-align: center !important - } - - .columns-lg-2 { - columns: 2 !important - } - - .columns-lg-3 { - columns: 3 !important - } - - .columns-lg-4 { - columns: 4 !important - } -} - -@media (min-width:1200px) { - .float-xl-start { - float: left !important - } - - .float-xl-end { - float: right !important - } - - .float-xl-none { - float: none !important - } - - .object-fit-xl-contain { - -o-object-fit: contain !important; - object-fit: contain !important - } - - .object-fit-xl-cover { - -o-object-fit: cover !important; - object-fit: cover !important - } - - .object-fit-xl-fill { - -o-object-fit: fill !important; - object-fit: fill !important - } - - .object-fit-xl-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important - } - - .object-fit-xl-none { - -o-object-fit: none !important; - object-fit: none !important - } - - .d-xl-inline { - display: inline !important - } - - .d-xl-inline-block { - display: inline-block !important - } - - .d-xl-block { - display: block !important - } - - .d-xl-grid { - display: grid !important - } - - .d-xl-inline-grid { - display: inline-grid !important - } - - .d-xl-table { - display: table !important - } - - .d-xl-table-row { - display: table-row !important - } - - .d-xl-table-cell { - display: table-cell !important - } - - .d-xl-flex { - display: flex !important - } - - .d-xl-inline-flex { - display: inline-flex !important - } - - .d-xl-none { - display: none !important - } - - .flex-xl-fill { - flex: 1 1 auto !important - } - - .flex-xl-row { - flex-direction: row !important - } - - .flex-xl-column { - flex-direction: column !important - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important - } - - .flex-xl-grow-0 { - flex-grow: 0 !important - } - - .flex-xl-grow-1 { - flex-grow: 1 !important - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important - } - - .flex-xl-wrap { - flex-wrap: wrap !important - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important - } - - .justify-content-xl-start { - justify-content: flex-start !important - } - - .justify-content-xl-end { - justify-content: flex-end !important - } - - .justify-content-xl-center { - justify-content: center !important - } - - .justify-content-xl-between { - justify-content: space-between !important - } - - .justify-content-xl-around { - justify-content: space-around !important - } - - .justify-content-xl-evenly { - justify-content: space-evenly !important - } - - .align-items-xl-start { - align-items: flex-start !important - } - - .align-items-xl-end { - align-items: flex-end !important - } - - .align-items-xl-center { - align-items: center !important - } - - .align-items-xl-baseline { - align-items: baseline !important - } - - .align-items-xl-stretch { - align-items: stretch !important - } - - .align-content-xl-start { - align-content: flex-start !important - } - - .align-content-xl-end { - align-content: flex-end !important - } - - .align-content-xl-center { - align-content: center !important - } - - .align-content-xl-between { - align-content: space-between !important - } - - .align-content-xl-around { - align-content: space-around !important - } - - .align-content-xl-stretch { - align-content: stretch !important - } - - .align-self-xl-auto { - align-self: auto !important - } - - .align-self-xl-start { - align-self: flex-start !important - } - - .align-self-xl-end { - align-self: flex-end !important - } - - .align-self-xl-center { - align-self: center !important - } - - .align-self-xl-baseline { - align-self: baseline !important - } - - .align-self-xl-stretch { - align-self: stretch !important - } - - .order-xl-first { - order: -1 !important - } - - .order-xl-0 { - order: 0 !important - } - - .order-xl-1 { - order: 1 !important - } - - .order-xl-2 { - order: 2 !important - } - - .order-xl-3 { - order: 3 !important - } - - .order-xl-4 { - order: 4 !important - } - - .order-xl-5 { - order: 5 !important - } - - .order-xl-last { - order: 6 !important - } - - .m-xl-0 { - margin: 0 !important - } - - .m-xl-1 { - margin: .25rem !important - } - - .m-xl-2 { - margin: .5rem !important - } - - .m-xl-3 { - margin: 1rem !important - } - - .m-xl-4 { - margin: 1.5rem !important - } - - .m-xl-5 { - margin: 2rem !important - } - - .m-xl-6 { - margin: 3rem !important - } - - .m-xl-7 { - margin: 5rem !important - } - - .m-xl-8 { - margin: 8rem !important - } - - .m-xl-auto { - margin: auto !important - } - - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-xl-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-xl-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-xl-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-xl-6 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-xl-7 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-xl-8 { - margin-right: 8rem !important; - margin-left: 8rem !important - } - - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-xl-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-xl-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-xl-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-xl-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-xl-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-xl-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important - } - - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-xl-0 { - margin-top: 0 !important - } - - .mt-xl-1 { - margin-top: .25rem !important - } - - .mt-xl-2 { - margin-top: .5rem !important - } - - .mt-xl-3 { - margin-top: 1rem !important - } - - .mt-xl-4 { - margin-top: 1.5rem !important - } - - .mt-xl-5 { - margin-top: 2rem !important - } - - .mt-xl-6 { - margin-top: 3rem !important - } - - .mt-xl-7 { - margin-top: 5rem !important - } - - .mt-xl-8 { - margin-top: 8rem !important - } - - .mt-xl-auto { - margin-top: auto !important - } - - .me-xl-0 { - margin-right: 0 !important - } - - .me-xl-1 { - margin-right: .25rem !important - } - - .me-xl-2 { - margin-right: .5rem !important - } - - .me-xl-3 { - margin-right: 1rem !important - } - - .me-xl-4 { - margin-right: 1.5rem !important - } - - .me-xl-5 { - margin-right: 2rem !important - } - - .me-xl-6 { - margin-right: 3rem !important - } - - .me-xl-7 { - margin-right: 5rem !important - } - - .me-xl-8 { - margin-right: 8rem !important - } - - .me-xl-auto { - margin-right: auto !important - } - - .mb-xl-0 { - margin-bottom: 0 !important - } - - .mb-xl-1 { - margin-bottom: .25rem !important - } - - .mb-xl-2 { - margin-bottom: .5rem !important - } - - .mb-xl-3 { - margin-bottom: 1rem !important - } - - .mb-xl-4 { - margin-bottom: 1.5rem !important - } - - .mb-xl-5 { - margin-bottom: 2rem !important - } - - .mb-xl-6 { - margin-bottom: 3rem !important - } - - .mb-xl-7 { - margin-bottom: 5rem !important - } - - .mb-xl-8 { - margin-bottom: 8rem !important - } - - .mb-xl-auto { - margin-bottom: auto !important - } - - .ms-xl-0 { - margin-left: 0 !important - } - - .ms-xl-1 { - margin-left: .25rem !important - } - - .ms-xl-2 { - margin-left: .5rem !important - } - - .ms-xl-3 { - margin-left: 1rem !important - } - - .ms-xl-4 { - margin-left: 1.5rem !important - } - - .ms-xl-5 { - margin-left: 2rem !important - } - - .ms-xl-6 { - margin-left: 3rem !important - } - - .ms-xl-7 { - margin-left: 5rem !important - } - - .ms-xl-8 { - margin-left: 8rem !important - } - - .ms-xl-auto { - margin-left: auto !important - } - - .p-xl-0 { - padding: 0 !important - } - - .p-xl-1 { - padding: .25rem !important - } - - .p-xl-2 { - padding: .5rem !important - } - - .p-xl-3 { - padding: 1rem !important - } - - .p-xl-4 { - padding: 1.5rem !important - } - - .p-xl-5 { - padding: 2rem !important - } - - .p-xl-6 { - padding: 3rem !important - } - - .p-xl-7 { - padding: 5rem !important - } - - .p-xl-8 { - padding: 8rem !important - } - - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-xl-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-xl-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-xl-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-xl-6 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-xl-7 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-xl-8 { - padding-right: 8rem !important; - padding-left: 8rem !important - } - - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-xl-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-xl-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-xl-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-xl-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-xl-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-xl-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important - } - - .pt-xl-0 { - padding-top: 0 !important - } - - .pt-xl-1 { - padding-top: .25rem !important - } - - .pt-xl-2 { - padding-top: .5rem !important - } - - .pt-xl-3 { - padding-top: 1rem !important - } - - .pt-xl-4 { - padding-top: 1.5rem !important - } - - .pt-xl-5 { - padding-top: 2rem !important - } - - .pt-xl-6 { - padding-top: 3rem !important - } - - .pt-xl-7 { - padding-top: 5rem !important - } - - .pt-xl-8 { - padding-top: 8rem !important - } - - .pe-xl-0 { - padding-right: 0 !important - } - - .pe-xl-1 { - padding-right: .25rem !important - } - - .pe-xl-2 { - padding-right: .5rem !important - } - - .pe-xl-3 { - padding-right: 1rem !important - } - - .pe-xl-4 { - padding-right: 1.5rem !important - } - - .pe-xl-5 { - padding-right: 2rem !important - } - - .pe-xl-6 { - padding-right: 3rem !important - } - - .pe-xl-7 { - padding-right: 5rem !important - } - - .pe-xl-8 { - padding-right: 8rem !important - } - - .pb-xl-0 { - padding-bottom: 0 !important - } - - .pb-xl-1 { - padding-bottom: .25rem !important - } - - .pb-xl-2 { - padding-bottom: .5rem !important - } - - .pb-xl-3 { - padding-bottom: 1rem !important - } - - .pb-xl-4 { - padding-bottom: 1.5rem !important - } - - .pb-xl-5 { - padding-bottom: 2rem !important - } - - .pb-xl-6 { - padding-bottom: 3rem !important - } - - .pb-xl-7 { - padding-bottom: 5rem !important - } - - .pb-xl-8 { - padding-bottom: 8rem !important - } - - .ps-xl-0 { - padding-left: 0 !important - } - - .ps-xl-1 { - padding-left: .25rem !important - } - - .ps-xl-2 { - padding-left: .5rem !important - } - - .ps-xl-3 { - padding-left: 1rem !important - } - - .ps-xl-4 { - padding-left: 1.5rem !important - } - - .ps-xl-5 { - padding-left: 2rem !important - } - - .ps-xl-6 { - padding-left: 3rem !important - } - - .ps-xl-7 { - padding-left: 5rem !important - } - - .ps-xl-8 { - padding-left: 8rem !important - } - - .gap-xl-0 { - gap: 0 !important - } - - .gap-xl-1 { - gap: .25rem !important - } - - .gap-xl-2 { - gap: .5rem !important - } - - .gap-xl-3 { - gap: 1rem !important - } - - .gap-xl-4 { - gap: 1.5rem !important - } - - .gap-xl-5 { - gap: 2rem !important - } - - .gap-xl-6 { - gap: 3rem !important - } - - .gap-xl-7 { - gap: 5rem !important - } - - .gap-xl-8 { - gap: 8rem !important - } - - .row-gap-xl-0 { - row-gap: 0 !important - } - - .row-gap-xl-1 { - row-gap: .25rem !important - } - - .row-gap-xl-2 { - row-gap: .5rem !important - } - - .row-gap-xl-3 { - row-gap: 1rem !important - } - - .row-gap-xl-4 { - row-gap: 1.5rem !important - } - - .row-gap-xl-5 { - row-gap: 2rem !important - } - - .row-gap-xl-6 { - row-gap: 3rem !important - } - - .row-gap-xl-7 { - row-gap: 5rem !important - } - - .row-gap-xl-8 { - row-gap: 8rem !important - } - - .column-gap-xl-0 { - column-gap: 0 !important - } - - .column-gap-xl-1 { - column-gap: .25rem !important - } - - .column-gap-xl-2 { - column-gap: .5rem !important - } - - .column-gap-xl-3 { - column-gap: 1rem !important - } - - .column-gap-xl-4 { - column-gap: 1.5rem !important - } - - .column-gap-xl-5 { - column-gap: 2rem !important - } - - .column-gap-xl-6 { - column-gap: 3rem !important - } - - .column-gap-xl-7 { - column-gap: 5rem !important - } - - .column-gap-xl-8 { - column-gap: 8rem !important - } - - .text-xl-start { - text-align: left !important - } - - .text-xl-end { - text-align: right !important - } - - .text-xl-center { - text-align: center !important - } - - .columns-xl-2 { - columns: 2 !important - } - - .columns-xl-3 { - columns: 3 !important - } - - .columns-xl-4 { - columns: 4 !important - } -} - -@media (min-width:1400px) { - .float-xxl-start { - float: left !important - } - - .float-xxl-end { - float: right !important - } - - .float-xxl-none { - float: none !important - } - - .object-fit-xxl-contain { - -o-object-fit: contain !important; - object-fit: contain !important - } - - .object-fit-xxl-cover { - -o-object-fit: cover !important; - object-fit: cover !important - } - - .object-fit-xxl-fill { - -o-object-fit: fill !important; - object-fit: fill !important - } - - .object-fit-xxl-scale { - -o-object-fit: scale-down !important; - object-fit: scale-down !important - } - - .object-fit-xxl-none { - -o-object-fit: none !important; - object-fit: none !important - } - - .d-xxl-inline { - display: inline !important - } - - .d-xxl-inline-block { - display: inline-block !important - } - - .d-xxl-block { - display: block !important - } - - .d-xxl-grid { - display: grid !important - } - - .d-xxl-inline-grid { - display: inline-grid !important - } - - .d-xxl-table { - display: table !important - } - - .d-xxl-table-row { - display: table-row !important - } - - .d-xxl-table-cell { - display: table-cell !important - } - - .d-xxl-flex { - display: flex !important - } - - .d-xxl-inline-flex { - display: inline-flex !important - } - - .d-xxl-none { - display: none !important - } - - .flex-xxl-fill { - flex: 1 1 auto !important - } - - .flex-xxl-row { - flex-direction: row !important - } - - .flex-xxl-column { - flex-direction: column !important - } - - .flex-xxl-row-reverse { - flex-direction: row-reverse !important - } - - .flex-xxl-column-reverse { - flex-direction: column-reverse !important - } - - .flex-xxl-grow-0 { - flex-grow: 0 !important - } - - .flex-xxl-grow-1 { - flex-grow: 1 !important - } - - .flex-xxl-shrink-0 { - flex-shrink: 0 !important - } - - .flex-xxl-shrink-1 { - flex-shrink: 1 !important - } - - .flex-xxl-wrap { - flex-wrap: wrap !important - } - - .flex-xxl-nowrap { - flex-wrap: nowrap !important - } - - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important - } - - .justify-content-xxl-start { - justify-content: flex-start !important - } - - .justify-content-xxl-end { - justify-content: flex-end !important - } - - .justify-content-xxl-center { - justify-content: center !important - } - - .justify-content-xxl-between { - justify-content: space-between !important - } - - .justify-content-xxl-around { - justify-content: space-around !important - } - - .justify-content-xxl-evenly { - justify-content: space-evenly !important - } - - .align-items-xxl-start { - align-items: flex-start !important - } - - .align-items-xxl-end { - align-items: flex-end !important - } - - .align-items-xxl-center { - align-items: center !important - } - - .align-items-xxl-baseline { - align-items: baseline !important - } - - .align-items-xxl-stretch { - align-items: stretch !important - } - - .align-content-xxl-start { - align-content: flex-start !important - } - - .align-content-xxl-end { - align-content: flex-end !important - } - - .align-content-xxl-center { - align-content: center !important - } - - .align-content-xxl-between { - align-content: space-between !important - } - - .align-content-xxl-around { - align-content: space-around !important - } - - .align-content-xxl-stretch { - align-content: stretch !important - } - - .align-self-xxl-auto { - align-self: auto !important - } - - .align-self-xxl-start { - align-self: flex-start !important - } - - .align-self-xxl-end { - align-self: flex-end !important - } - - .align-self-xxl-center { - align-self: center !important - } - - .align-self-xxl-baseline { - align-self: baseline !important - } - - .align-self-xxl-stretch { - align-self: stretch !important - } - - .order-xxl-first { - order: -1 !important - } - - .order-xxl-0 { - order: 0 !important - } - - .order-xxl-1 { - order: 1 !important - } - - .order-xxl-2 { - order: 2 !important - } - - .order-xxl-3 { - order: 3 !important - } - - .order-xxl-4 { - order: 4 !important - } - - .order-xxl-5 { - order: 5 !important - } - - .order-xxl-last { - order: 6 !important - } - - .m-xxl-0 { - margin: 0 !important - } - - .m-xxl-1 { - margin: .25rem !important - } - - .m-xxl-2 { - margin: .5rem !important - } - - .m-xxl-3 { - margin: 1rem !important - } - - .m-xxl-4 { - margin: 1.5rem !important - } - - .m-xxl-5 { - margin: 2rem !important - } - - .m-xxl-6 { - margin: 3rem !important - } - - .m-xxl-7 { - margin: 5rem !important - } - - .m-xxl-8 { - margin: 8rem !important - } - - .m-xxl-auto { - margin: auto !important - } - - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-xxl-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-xxl-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-xxl-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-xxl-6 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-xxl-7 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-xxl-8 { - margin-right: 8rem !important; - margin-left: 8rem !important - } - - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-xxl-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-xxl-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-xxl-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-xxl-6 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-xxl-7 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-xxl-8 { - margin-top: 8rem !important; - margin-bottom: 8rem !important - } - - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-xxl-0 { - margin-top: 0 !important - } - - .mt-xxl-1 { - margin-top: .25rem !important - } - - .mt-xxl-2 { - margin-top: .5rem !important - } - - .mt-xxl-3 { - margin-top: 1rem !important - } - - .mt-xxl-4 { - margin-top: 1.5rem !important - } - - .mt-xxl-5 { - margin-top: 2rem !important - } - - .mt-xxl-6 { - margin-top: 3rem !important - } - - .mt-xxl-7 { - margin-top: 5rem !important - } - - .mt-xxl-8 { - margin-top: 8rem !important - } - - .mt-xxl-auto { - margin-top: auto !important - } - - .me-xxl-0 { - margin-right: 0 !important - } - - .me-xxl-1 { - margin-right: .25rem !important - } - - .me-xxl-2 { - margin-right: .5rem !important - } - - .me-xxl-3 { - margin-right: 1rem !important - } - - .me-xxl-4 { - margin-right: 1.5rem !important - } - - .me-xxl-5 { - margin-right: 2rem !important - } - - .me-xxl-6 { - margin-right: 3rem !important - } - - .me-xxl-7 { - margin-right: 5rem !important - } - - .me-xxl-8 { - margin-right: 8rem !important - } - - .me-xxl-auto { - margin-right: auto !important - } - - .mb-xxl-0 { - margin-bottom: 0 !important - } - - .mb-xxl-1 { - margin-bottom: .25rem !important - } - - .mb-xxl-2 { - margin-bottom: .5rem !important - } - - .mb-xxl-3 { - margin-bottom: 1rem !important - } - - .mb-xxl-4 { - margin-bottom: 1.5rem !important - } - - .mb-xxl-5 { - margin-bottom: 2rem !important - } - - .mb-xxl-6 { - margin-bottom: 3rem !important - } - - .mb-xxl-7 { - margin-bottom: 5rem !important - } - - .mb-xxl-8 { - margin-bottom: 8rem !important - } - - .mb-xxl-auto { - margin-bottom: auto !important - } - - .ms-xxl-0 { - margin-left: 0 !important - } - - .ms-xxl-1 { - margin-left: .25rem !important - } - - .ms-xxl-2 { - margin-left: .5rem !important - } - - .ms-xxl-3 { - margin-left: 1rem !important - } - - .ms-xxl-4 { - margin-left: 1.5rem !important - } - - .ms-xxl-5 { - margin-left: 2rem !important - } - - .ms-xxl-6 { - margin-left: 3rem !important - } - - .ms-xxl-7 { - margin-left: 5rem !important - } - - .ms-xxl-8 { - margin-left: 8rem !important - } - - .ms-xxl-auto { - margin-left: auto !important - } - - .p-xxl-0 { - padding: 0 !important - } - - .p-xxl-1 { - padding: .25rem !important - } - - .p-xxl-2 { - padding: .5rem !important - } - - .p-xxl-3 { - padding: 1rem !important - } - - .p-xxl-4 { - padding: 1.5rem !important - } - - .p-xxl-5 { - padding: 2rem !important - } - - .p-xxl-6 { - padding: 3rem !important - } - - .p-xxl-7 { - padding: 5rem !important - } - - .p-xxl-8 { - padding: 8rem !important - } - - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-xxl-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-xxl-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-xxl-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-xxl-6 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-xxl-7 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-xxl-8 { - padding-right: 8rem !important; - padding-left: 8rem !important - } - - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-xxl-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-xxl-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-xxl-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-xxl-6 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-xxl-7 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-xxl-8 { - padding-top: 8rem !important; - padding-bottom: 8rem !important - } - - .pt-xxl-0 { - padding-top: 0 !important - } - - .pt-xxl-1 { - padding-top: .25rem !important - } - - .pt-xxl-2 { - padding-top: .5rem !important - } - - .pt-xxl-3 { - padding-top: 1rem !important - } - - .pt-xxl-4 { - padding-top: 1.5rem !important - } - - .pt-xxl-5 { - padding-top: 2rem !important - } - - .pt-xxl-6 { - padding-top: 3rem !important - } - - .pt-xxl-7 { - padding-top: 5rem !important - } - - .pt-xxl-8 { - padding-top: 8rem !important - } - - .pe-xxl-0 { - padding-right: 0 !important - } - - .pe-xxl-1 { - padding-right: .25rem !important - } - - .pe-xxl-2 { - padding-right: .5rem !important - } - - .pe-xxl-3 { - padding-right: 1rem !important - } - - .pe-xxl-4 { - padding-right: 1.5rem !important - } - - .pe-xxl-5 { - padding-right: 2rem !important - } - - .pe-xxl-6 { - padding-right: 3rem !important - } - - .pe-xxl-7 { - padding-right: 5rem !important - } - - .pe-xxl-8 { - padding-right: 8rem !important - } - - .pb-xxl-0 { - padding-bottom: 0 !important - } - - .pb-xxl-1 { - padding-bottom: .25rem !important - } - - .pb-xxl-2 { - padding-bottom: .5rem !important - } - - .pb-xxl-3 { - padding-bottom: 1rem !important - } - - .pb-xxl-4 { - padding-bottom: 1.5rem !important - } - - .pb-xxl-5 { - padding-bottom: 2rem !important - } - - .pb-xxl-6 { - padding-bottom: 3rem !important - } - - .pb-xxl-7 { - padding-bottom: 5rem !important - } - - .pb-xxl-8 { - padding-bottom: 8rem !important - } - - .ps-xxl-0 { - padding-left: 0 !important - } - - .ps-xxl-1 { - padding-left: .25rem !important - } - - .ps-xxl-2 { - padding-left: .5rem !important - } - - .ps-xxl-3 { - padding-left: 1rem !important - } - - .ps-xxl-4 { - padding-left: 1.5rem !important - } - - .ps-xxl-5 { - padding-left: 2rem !important - } - - .ps-xxl-6 { - padding-left: 3rem !important - } - - .ps-xxl-7 { - padding-left: 5rem !important - } - - .ps-xxl-8 { - padding-left: 8rem !important - } - - .gap-xxl-0 { - gap: 0 !important - } - - .gap-xxl-1 { - gap: .25rem !important - } - - .gap-xxl-2 { - gap: .5rem !important - } - - .gap-xxl-3 { - gap: 1rem !important - } - - .gap-xxl-4 { - gap: 1.5rem !important - } - - .gap-xxl-5 { - gap: 2rem !important - } - - .gap-xxl-6 { - gap: 3rem !important - } - - .gap-xxl-7 { - gap: 5rem !important - } - - .gap-xxl-8 { - gap: 8rem !important - } - - .row-gap-xxl-0 { - row-gap: 0 !important - } - - .row-gap-xxl-1 { - row-gap: .25rem !important - } - - .row-gap-xxl-2 { - row-gap: .5rem !important - } - - .row-gap-xxl-3 { - row-gap: 1rem !important - } - - .row-gap-xxl-4 { - row-gap: 1.5rem !important - } - - .row-gap-xxl-5 { - row-gap: 2rem !important - } - - .row-gap-xxl-6 { - row-gap: 3rem !important - } - - .row-gap-xxl-7 { - row-gap: 5rem !important - } - - .row-gap-xxl-8 { - row-gap: 8rem !important - } - - .column-gap-xxl-0 { - column-gap: 0 !important - } - - .column-gap-xxl-1 { - column-gap: .25rem !important - } - - .column-gap-xxl-2 { - column-gap: .5rem !important - } - - .column-gap-xxl-3 { - column-gap: 1rem !important - } - - .column-gap-xxl-4 { - column-gap: 1.5rem !important - } - - .column-gap-xxl-5 { - column-gap: 2rem !important - } - - .column-gap-xxl-6 { - column-gap: 3rem !important - } - - .column-gap-xxl-7 { - column-gap: 5rem !important - } - - .column-gap-xxl-8 { - column-gap: 8rem !important - } - - .text-xxl-start { - text-align: left !important - } - - .text-xxl-end { - text-align: right !important - } - - .text-xxl-center { - text-align: center !important - } - - .columns-xxl-2 { - columns: 2 !important - } - - .columns-xxl-3 { - columns: 3 !important - } - - .columns-xxl-4 { - columns: 4 !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 - } -} - -:host, -:root { - font-size: 16px; - height: 100%; - --tblr-primary: #206bc4; - --tblr-primary-rgb: 32, 107, 196; - --tblr-primary-fg: var(--tblr-light); - --tblr-primary-darken: #1d60b0; - --tblr-primary-lt: #e9f0f9; - --tblr-primary-lt-rgb: 233, 240, 249; - --tblr-secondary: #667382; - --tblr-secondary-rgb: 102, 115, 130; - --tblr-secondary-fg: var(--tblr-light); - --tblr-secondary-darken: #5c6875; - --tblr-secondary-lt: #f0f1f3; - --tblr-secondary-lt-rgb: 240, 241, 243; - --tblr-success: #2fb344; - --tblr-success-rgb: 47, 179, 68; - --tblr-success-fg: var(--tblr-light); - --tblr-success-darken: #2aa13d; - --tblr-success-lt: #eaf7ec; - --tblr-success-lt-rgb: 234, 247, 236; - --tblr-info: #4299e1; - --tblr-info-rgb: 66, 153, 225; - --tblr-info-fg: var(--tblr-light); - --tblr-info-darken: #3b8acb; - --tblr-info-lt: #ecf5fc; - --tblr-info-lt-rgb: 236, 245, 252; - --tblr-warning: #f76707; - --tblr-warning-rgb: 247, 103, 7; - --tblr-warning-fg: var(--tblr-light); - --tblr-warning-darken: #de5d06; - --tblr-warning-lt: #fef0e6; - --tblr-warning-lt-rgb: 254, 240, 230; - --tblr-danger: #d63939; - --tblr-danger-rgb: 214, 57, 57; - --tblr-danger-fg: var(--tblr-light); - --tblr-danger-darken: #c13333; - --tblr-danger-lt: #fbebeb; - --tblr-danger-lt-rgb: 251, 235, 235; - --tblr-light: #fcfdfe; - --tblr-light-rgb: 252, 253, 254; - --tblr-light-fg: var(--tblr-dark); - --tblr-light-darken: #e3e4e5; - --tblr-light-lt: white; - --tblr-light-lt-rgb: 255, 255, 255; - --tblr-dark: #182433; - --tblr-dark-rgb: 24, 36, 51; - --tblr-dark-fg: var(--tblr-light); - --tblr-dark-darken: #16202e; - --tblr-dark-lt: #e8e9eb; - --tblr-dark-lt-rgb: 232, 233, 235; - --tblr-muted: #667382; - --tblr-muted-rgb: 102, 115, 130; - --tblr-muted-fg: var(--tblr-light); - --tblr-muted-darken: #5c6875; - --tblr-muted-lt: #f0f1f3; - --tblr-muted-lt-rgb: 240, 241, 243; - --tblr-blue: #206bc4; - --tblr-blue-rgb: 32, 107, 196; - --tblr-blue-fg: var(--tblr-light); - --tblr-blue-darken: #1d60b0; - --tblr-blue-lt: #e9f0f9; - --tblr-blue-lt-rgb: 233, 240, 249; - --tblr-azure: #4299e1; - --tblr-azure-rgb: 66, 153, 225; - --tblr-azure-fg: var(--tblr-light); - --tblr-azure-darken: #3b8acb; - --tblr-azure-lt: #ecf5fc; - --tblr-azure-lt-rgb: 236, 245, 252; - --tblr-indigo: #4263eb; - --tblr-indigo-rgb: 66, 99, 235; - --tblr-indigo-fg: var(--tblr-light); - --tblr-indigo-darken: #3b59d4; - --tblr-indigo-lt: #eceffd; - --tblr-indigo-lt-rgb: 236, 239, 253; - --tblr-purple: #ae3ec9; - --tblr-purple-rgb: 174, 62, 201; - --tblr-purple-fg: var(--tblr-light); - --tblr-purple-darken: #9d38b5; - --tblr-purple-lt: #f7ecfa; - --tblr-purple-lt-rgb: 247, 236, 250; - --tblr-pink: #d6336c; - --tblr-pink-rgb: 214, 51, 108; - --tblr-pink-fg: var(--tblr-light); - --tblr-pink-darken: #c12e61; - --tblr-pink-lt: #fbebf0; - --tblr-pink-lt-rgb: 251, 235, 240; - --tblr-red: #d63939; - --tblr-red-rgb: 214, 57, 57; - --tblr-red-fg: var(--tblr-light); - --tblr-red-darken: #c13333; - --tblr-red-lt: #fbebeb; - --tblr-red-lt-rgb: 251, 235, 235; - --tblr-orange: #f76707; - --tblr-orange-rgb: 247, 103, 7; - --tblr-orange-fg: var(--tblr-light); - --tblr-orange-darken: #de5d06; - --tblr-orange-lt: #fef0e6; - --tblr-orange-lt-rgb: 254, 240, 230; - --tblr-yellow: #f59f00; - --tblr-yellow-rgb: 245, 159, 0; - --tblr-yellow-fg: var(--tblr-light); - --tblr-yellow-darken: #dd8f00; - --tblr-yellow-lt: #fef5e6; - --tblr-yellow-lt-rgb: 254, 245, 230; - --tblr-lime: #74b816; - --tblr-lime-rgb: 116, 184, 22; - --tblr-lime-fg: var(--tblr-light); - --tblr-lime-darken: #68a614; - --tblr-lime-lt: #f1f8e8; - --tblr-lime-lt-rgb: 241, 248, 232; - --tblr-green: #2fb344; - --tblr-green-rgb: 47, 179, 68; - --tblr-green-fg: var(--tblr-light); - --tblr-green-darken: #2aa13d; - --tblr-green-lt: #eaf7ec; - --tblr-green-lt-rgb: 234, 247, 236; - --tblr-teal: #0ca678; - --tblr-teal-rgb: 12, 166, 120; - --tblr-teal-fg: var(--tblr-light); - --tblr-teal-darken: #0b956c; - --tblr-teal-lt: #e7f6f2; - --tblr-teal-lt-rgb: 231, 246, 242; - --tblr-cyan: #17a2b8; - --tblr-cyan-rgb: 23, 162, 184; - --tblr-cyan-fg: var(--tblr-light); - --tblr-cyan-darken: #1592a6; - --tblr-cyan-lt: #e8f6f8; - --tblr-cyan-lt-rgb: 232, 246, 248; - --tblr-facebook: #1877f2; - --tblr-facebook-rgb: 24, 119, 242; - --tblr-facebook-fg: var(--tblr-light); - --tblr-facebook-darken: #166bda; - --tblr-facebook-lt: #e8f1fe; - --tblr-facebook-lt-rgb: 232, 241, 254; - --tblr-twitter: #1da1f2; - --tblr-twitter-rgb: 29, 161, 242; - --tblr-twitter-fg: var(--tblr-light); - --tblr-twitter-darken: #1a91da; - --tblr-twitter-lt: #e8f6fe; - --tblr-twitter-lt-rgb: 232, 246, 254; - --tblr-linkedin: #0a66c2; - --tblr-linkedin-rgb: 10, 102, 194; - --tblr-linkedin-fg: var(--tblr-light); - --tblr-linkedin-darken: #095caf; - --tblr-linkedin-lt: #e7f0f9; - --tblr-linkedin-lt-rgb: 231, 240, 249; - --tblr-google: #dc4e41; - --tblr-google-rgb: 220, 78, 65; - --tblr-google-fg: var(--tblr-light); - --tblr-google-darken: #c6463b; - --tblr-google-lt: #fcedec; - --tblr-google-lt-rgb: 252, 237, 236; - --tblr-youtube: #ff0000; - --tblr-youtube-rgb: 255, 0, 0; - --tblr-youtube-fg: var(--tblr-light); - --tblr-youtube-darken: #e60000; - --tblr-youtube-lt: #ffe6e6; - --tblr-youtube-lt-rgb: 255, 230, 230; - --tblr-vimeo: #1ab7ea; - --tblr-vimeo-rgb: 26, 183, 234; - --tblr-vimeo-fg: var(--tblr-light); - --tblr-vimeo-darken: #17a5d3; - --tblr-vimeo-lt: #e8f8fd; - --tblr-vimeo-lt-rgb: 232, 248, 253; - --tblr-dribbble: #ea4c89; - --tblr-dribbble-rgb: 234, 76, 137; - --tblr-dribbble-fg: var(--tblr-light); - --tblr-dribbble-darken: #d3447b; - --tblr-dribbble-lt: #fdedf3; - --tblr-dribbble-lt-rgb: 253, 237, 243; - --tblr-github: #181717; - --tblr-github-rgb: 24, 23, 23; - --tblr-github-fg: var(--tblr-light); - --tblr-github-darken: #161515; - --tblr-github-lt: #e8e8e8; - --tblr-github-lt-rgb: 232, 232, 232; - --tblr-instagram: #e4405f; - --tblr-instagram-rgb: 228, 64, 95; - --tblr-instagram-fg: var(--tblr-light); - --tblr-instagram-darken: #cd3a56; - --tblr-instagram-lt: #fcecef; - --tblr-instagram-lt-rgb: 252, 236, 239; - --tblr-pinterest: #bd081c; - --tblr-pinterest-rgb: 189, 8, 28; - --tblr-pinterest-fg: var(--tblr-light); - --tblr-pinterest-darken: #aa0719; - --tblr-pinterest-lt: #f8e6e8; - --tblr-pinterest-lt-rgb: 248, 230, 232; - --tblr-vk: #6383a8; - --tblr-vk-rgb: 99, 131, 168; - --tblr-vk-fg: var(--tblr-light); - --tblr-vk-darken: #597697; - --tblr-vk-lt: #eff3f6; - --tblr-vk-lt-rgb: 239, 243, 246; - --tblr-rss: #ffa500; - --tblr-rss-rgb: 255, 165, 0; - --tblr-rss-fg: var(--tblr-light); - --tblr-rss-darken: #e69500; - --tblr-rss-lt: #fff6e6; - --tblr-rss-lt-rgb: 255, 246, 230; - --tblr-flickr: #0063dc; - --tblr-flickr-rgb: 0, 99, 220; - --tblr-flickr-fg: var(--tblr-light); - --tblr-flickr-darken: #0059c6; - --tblr-flickr-lt: #e6effc; - --tblr-flickr-lt-rgb: 230, 239, 252; - --tblr-bitbucket: #0052cc; - --tblr-bitbucket-rgb: 0, 82, 204; - --tblr-bitbucket-fg: var(--tblr-light); - --tblr-bitbucket-darken: #004ab8; - --tblr-bitbucket-lt: #e6eefa; - --tblr-bitbucket-lt-rgb: 230, 238, 250; - --tblr-tabler: #206bc4; - --tblr-tabler-rgb: 32, 107, 196; - --tblr-tabler-fg: var(--tblr-light); - --tblr-tabler-darken: #1d60b0; - --tblr-tabler-lt: #e9f0f9; - --tblr-tabler-lt-rgb: 233, 240, 249; - --tblr-gray-50: #fcfdfe; - --tblr-gray-50-rgb: 252, 253, 254; - --tblr-gray-50-fg: var(--tblr-dark); - --tblr-gray-50-darken: #e3e4e5; - --tblr-gray-50-lt: white; - --tblr-gray-50-lt-rgb: 255, 255, 255; - --tblr-gray-100: #f6f8fb; - --tblr-gray-100-rgb: 246, 248, 251; - --tblr-gray-100-fg: var(--tblr-dark); - --tblr-gray-100-darken: #dddfe2; - --tblr-gray-100-lt: #fefeff; - --tblr-gray-100-lt-rgb: 254, 254, 255; - --tblr-gray-200: #eef1f4; - --tblr-gray-200-rgb: 238, 241, 244; - --tblr-gray-200-fg: var(--tblr-dark); - --tblr-gray-200-darken: #d6d9dc; - --tblr-gray-200-lt: #fdfefe; - --tblr-gray-200-lt-rgb: 253, 254, 254; - --tblr-gray-300: #dadfe5; - --tblr-gray-300-rgb: 218, 223, 229; - --tblr-gray-300-fg: var(--tblr-dark); - --tblr-gray-300-darken: #c4c9ce; - --tblr-gray-300-lt: #fbfcfc; - --tblr-gray-300-lt-rgb: 251, 252, 252; - --tblr-gray-400: #bbc3cd; - --tblr-gray-400-rgb: 187, 195, 205; - --tblr-gray-400-fg: var(--tblr-light); - --tblr-gray-400-darken: #a8b0b9; - --tblr-gray-400-lt: #f8f9fa; - --tblr-gray-400-lt-rgb: 248, 249, 250; - --tblr-gray-500: #929dab; - --tblr-gray-500-rgb: 146, 157, 171; - --tblr-gray-500-fg: var(--tblr-light); - --tblr-gray-500-darken: #838d9a; - --tblr-gray-500-lt: #f4f5f7; - --tblr-gray-500-lt-rgb: 244, 245, 247; - --tblr-gray-600: #667382; - --tblr-gray-600-rgb: 102, 115, 130; - --tblr-gray-600-fg: var(--tblr-light); - --tblr-gray-600-darken: #5c6875; - --tblr-gray-600-lt: #f0f1f3; - --tblr-gray-600-lt-rgb: 240, 241, 243; - --tblr-gray-700: #3a4859; - --tblr-gray-700-rgb: 58, 72, 89; - --tblr-gray-700-fg: var(--tblr-light); - --tblr-gray-700-darken: #344150; - --tblr-gray-700-lt: #ebedee; - --tblr-gray-700-lt-rgb: 235, 237, 238; - --tblr-gray-800: #182433; - --tblr-gray-800-rgb: 24, 36, 51; - --tblr-gray-800-fg: var(--tblr-light); - --tblr-gray-800-darken: #16202e; - --tblr-gray-800-lt: #e8e9eb; - --tblr-gray-800-lt-rgb: 232, 233, 235; - --tblr-gray-900: #040a11; - --tblr-gray-900-rgb: 4, 10, 17; - --tblr-gray-900-fg: var(--tblr-light); - --tblr-gray-900-darken: #04090f; - --tblr-gray-900-lt: #e6e7e7; - --tblr-gray-900-lt-rgb: 230, 231, 231; - --tblr-spacer-0: 0; - --tblr-spacer-1: 0.25rem; - --tblr-spacer-2: 0.5rem; - --tblr-spacer-3: 1rem; - --tblr-spacer-4: 1.5rem; - --tblr-spacer-5: 2rem; - --tblr-spacer-6: 3rem; - --tblr-spacer-7: 5rem; - --tblr-spacer-8: 8rem; - --tblr-spacer: 1rem; - --tblr-bg-surface: var(--tblr-white); - --tblr-bg-surface-secondary: var(--tblr-gray-100); - --tblr-bg-surface-tertiary: var(--tblr-gray-50); - --tblr-bg-surface-dark: var(--tblr-dark); - --tblr-bg-forms: var(--tblr-bg-surface); - --tblr-border-color: #dadfe5; - --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); - --tblr-border-dark-color: #bbc3cd; - --tblr-border-dark-color-translucent: rgba(4, 32, 69, 0.27); - --tblr-border-active-color: #b6bcc3; - --tblr-icon-color: var(--tblr-gray-500); - --tblr-active-bg: rgba(var(--tblr-primary-rgb), 0.04); - --tblr-disabled-bg: var(--tblr-bg-surface-secondary); - --tblr-disabled-color: var(--tblr-gray-300); - --tblr-code-color: var(--tblr-gray-600); - --tblr-code-bg: var(--tblr-bg-surface-secondary); - --tblr-dark-mode-border-color: #1f2e41; - --tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, 0.14); - --tblr-dark-mode-border-color-active: #2c415d; - --tblr-dark-mode-border-dark-color: #1f2e41; - --tblr-page-padding: var(--tblr-spacer-3); - --tblr-page-padding-y: var(--tblr-spacer-4); - --tblr-font-weight-light: 300; - --tblr-font-weight-normal: 400; - --tblr-font-weight-medium: 500; - --tblr-font-weight-bold: 600; - --tblr-font-weight-headings: var(--tblr-font-weight-bold); - --tblr-font-size-h1: 1.5rem; - --tblr-font-size-h2: 1.25rem; - --tblr-font-size-h3: 1rem; - --tblr-font-size-h4: 0.875rem; - --tblr-font-size-h5: 0.75rem; - --tblr-font-size-h6: 0.625rem; - --tblr-line-height-h1: 2rem; - --tblr-line-height-h2: 1.75rem; - --tblr-line-height-h3: 1.5rem; - --tblr-line-height-h4: 1.25rem; - --tblr-line-height-h5: 1rem; - --tblr-line-height-h6: 1rem; - --tblr-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; - --tblr-shadow-transparent: 0 0 0 0 transparent; - --tblr-shadow-button: 0 1px 0 rgba(var(--tblr-body-color-rgb), 0.04); - --tblr-shadow-button-inset: inset 0 -1px 0 rgba(var(--tblr-body-color-rgb), 0.2); - --tblr-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), 0.04); - --tblr-shadow-card-hover: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; - --tblr-shadow-dropdown: 0px 16px 24px 2px rgba(0, 0, 0, 0.07), 0px 6px 30px 5px rgba(0, 0, 0, 0.06), 0px 8px 10px -5px rgba(0, 0, 0, 0.1) -} - -@media (max-width:991.98px) { - - :host, - :root { - --tblr-page-padding: var(--tblr-spacer-2) - } -} - -@keyframes pulse { - from { - opacity: 1; - transform: scale3d(.8, .8, .8) - } - - 50% { - transform: scale3d(1, 1, 1); - opacity: 1 - } - - to { - opacity: 1; - transform: scale3d(.8, .8, .8) - } -} - -@keyframes tada { - 0% { - transform: scale3d(1, 1, 1) - } - - 10%, - 5% { - transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -5deg) - } - - 15%, - 25%, - 35%, - 45% { - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg) - } - - 20%, - 30%, - 40% { - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg) - } - - 50% { - transform: scale3d(1, 1, 1) - } -} - -@keyframes rotate-360 { - from { - transform: rotate(0) - } - - to { - transform: rotate(360deg) - } -} - -@keyframes blink { - from { - opacity: 0 - } - - 50% { - opacity: 1 - } - - to { - opacity: 0 - } -} - -body { - letter-spacing: 0; - touch-action: manipulation; - text-rendering: optimizeLegibility; - font-feature-settings: "liga" 0; - position: relative; - min-height: 100%; - height: 100%; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - body { - background: 0 0 - } -} - -* { - scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .16) transparent -} - -::-webkit-scrollbar { - width: 1rem; - height: 1rem; - -webkit-transition: background .3s; - transition: background .3s -} - -@media (prefers-reduced-motion:reduce) { - ::-webkit-scrollbar { - -webkit-transition: none; - transition: none - } -} - -::-webkit-scrollbar-thumb { - border-radius: 1rem; - border: 5px solid transparent; - box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .16) -} - -::-webkit-scrollbar-track { - background: 0 0 -} - -:hover::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .32) -} - -::-webkit-scrollbar-corner { - background: 0 0 -} - -.layout-fluid .container, -.layout-fluid [class*=" container-"], -.layout-fluid [class^=container-] { - max-width: 100% -} - -.layout-boxed { - --tblr-theme-boxed-border-radius: 0; - --tblr-theme-boxed-width: 1320px -} - -@media (min-width:768px) { - .layout-boxed { - background: #182433 linear-gradient(to right, rgba(255, 255, 255, .1), transparent) fixed; - padding: 1rem; - --tblr-theme-boxed-border-radius: 4px - } -} - -.layout-boxed .page { - margin: 0 auto; - max-width: var(--tblr-theme-boxed-width); - border-radius: var(--tblr-theme-boxed-border-radius); - color: var(--tblr-body-color) -} - -@media (min-width:768px) { - .layout-boxed .page { - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - background: var(--tblr-body-bg) - } -} - -.layout-boxed .page>.navbar:first-child { - border-top-left-radius: var(--tblr-theme-boxed-border-radius); - border-top-right-radius: var(--tblr-theme-boxed-border-radius) -} - -.navbar { - --tblr-navbar-bg: var(--tblr-bg-surface); - --tblr-navbar-border-width: var(--tblr-border-width); - --tblr-navbar-active-border-color: var(--tblr-primary); - --tblr-navbar-active-bg: rgba(0, 0, 0, 0.06); - --tblr-navbar-color: var(--tblr-body-color); - --tblr-navbar-border-color: var(--tblr-border-color); - align-items: stretch; - min-height: 3.5rem; - box-shadow: inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color); - background: var(--tblr-navbar-bg); - color: var(--tblr-navbar-color) -} - -.navbar-collapse .navbar { - flex-grow: 1 -} - -.navbar.collapsing { - min-height: 0 -} - -.navbar .dropdown-menu { - position: absolute; - z-index: 1030 -} - -.navbar .navbar-nav { - min-height: 3rem -} - -.navbar .navbar-nav .nav-link { - position: relative; - min-width: 2rem; - min-height: 2rem; - justify-content: center; - border-radius: var(--tblr-border-radius) -} - -.navbar .navbar-nav .nav-link .badge { - position: absolute; - top: .375rem; - right: .375rem; - transform: translate(50%, -50%) -} - -.navbar-nav { - margin: 0; - padding: 0 -} - -@media (max-width:575.98px) { - .navbar-expand-sm .navbar-collapse { - flex-direction: column - } - - .navbar-expand-sm .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-expand-sm .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-expand-sm .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-expand-sm .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:576px) { - .navbar-expand-sm .navbar-collapse { - width: auto; - flex: 1 1 auto - } - - .navbar-expand-sm .nav-item.active { - position: relative - } - - .navbar-expand-sm .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px - } - - .navbar-expand-sm.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-sm.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-sm.navbar-vertical~.navbar, - .navbar-expand-sm.navbar-vertical~.page-wrapper { - margin-left: 15rem - } - - .navbar-expand-sm.navbar-vertical.navbar-right~.navbar, - .navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem - } -} - -@media (max-width:767.98px) { - .navbar-expand-md .navbar-collapse { - flex-direction: column - } - - .navbar-expand-md .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-expand-md .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-expand-md .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-expand-md .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-expand-md .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-expand-md .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-expand-md .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:768px) { - .navbar-expand-md .navbar-collapse { - width: auto; - flex: 1 1 auto - } - - .navbar-expand-md .nav-item.active { - position: relative - } - - .navbar-expand-md .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px - } - - .navbar-expand-md.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-md.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-md.navbar-vertical~.navbar, - .navbar-expand-md.navbar-vertical~.page-wrapper { - margin-left: 15rem - } - - .navbar-expand-md.navbar-vertical.navbar-right~.navbar, - .navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem - } -} - -@media (max-width:991.98px) { - .navbar-expand-lg .navbar-collapse { - flex-direction: column - } - - .navbar-expand-lg .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-expand-lg .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-expand-lg .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-expand-lg .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:992px) { - .navbar-expand-lg .navbar-collapse { - width: auto; - flex: 1 1 auto - } - - .navbar-expand-lg .nav-item.active { - position: relative - } - - .navbar-expand-lg .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px - } - - .navbar-expand-lg.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-lg.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-lg.navbar-vertical~.navbar, - .navbar-expand-lg.navbar-vertical~.page-wrapper { - margin-left: 15rem - } - - .navbar-expand-lg.navbar-vertical.navbar-right~.navbar, - .navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem - } -} - -@media (max-width:1199.98px) { - .navbar-expand-xl .navbar-collapse { - flex-direction: column - } - - .navbar-expand-xl .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-expand-xl .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-expand-xl .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-expand-xl .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:1200px) { - .navbar-expand-xl .navbar-collapse { - width: auto; - flex: 1 1 auto - } - - .navbar-expand-xl .nav-item.active { - position: relative - } - - .navbar-expand-xl .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px - } - - .navbar-expand-xl.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-xl.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-xl.navbar-vertical~.navbar, - .navbar-expand-xl.navbar-vertical~.page-wrapper { - margin-left: 15rem - } - - .navbar-expand-xl.navbar-vertical.navbar-right~.navbar, - .navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem - } -} - -@media (max-width:1399.98px) { - .navbar-expand-xxl .navbar-collapse { - flex-direction: column - } - - .navbar-expand-xxl .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-expand-xxl .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-expand-xxl .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:1400px) { - .navbar-expand-xxl .navbar-collapse { - width: auto; - flex: 1 1 auto - } - - .navbar-expand-xxl .nav-item.active { - position: relative - } - - .navbar-expand-xxl .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px - } - - .navbar-expand-xxl.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-xxl.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) - } - - .navbar-expand-xxl.navbar-vertical~.navbar, - .navbar-expand-xxl.navbar-vertical~.page-wrapper { - margin-left: 15rem - } - - .navbar-expand-xxl.navbar-vertical.navbar-right~.navbar, - .navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem - } -} - -.navbar-expand .navbar-collapse { - flex-direction: column -} - -.navbar-expand .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 -} - -.navbar-expand .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 -} - -.navbar-expand .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start -} - -.navbar-expand .navbar-collapse .dropdown-menu-columns { - flex-direction: column -} - -.navbar-expand .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 -} - -.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit -} - -.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, -.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) -} - -.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) -} - -.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) -} - -.navbar-expand .navbar-collapse .dropdown-toggle:after { - margin-left: auto -} - -.navbar-expand .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 -} - -.navbar-expand .navbar-collapse { - width: auto; - flex: 1 1 auto -} - -.navbar-expand .nav-item.active { - position: relative -} - -.navbar-expand .nav-item.active:after { - content: ""; - position: absolute; - left: 0; - right: 0; - bottom: -.25rem; - border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); - border-bottom-width: 2px -} - -.navbar-expand.navbar-vertical { - box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) -} - -.navbar-expand.navbar-vertical.navbar-right { - box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color) -} - -.navbar-expand.navbar-vertical~.navbar, -.navbar-expand.navbar-vertical~.page-wrapper { - margin-left: 15rem -} - -.navbar-expand.navbar-vertical.navbar-right~.navbar, -.navbar-expand.navbar-vertical.navbar-right~.page-wrapper { - margin-left: 0; - margin-right: 15rem -} - -.navbar-brand { - display: inline-flex; - align-items: center; - font-weight: var(--tblr-font-weight-bold); - margin: 0; - line-height: 1; - gap: .5rem -} - -.navbar-brand-image { - height: 2rem; - width: auto -} - -.navbar-toggler { - border: 0; - width: 2rem; - height: 2rem; - position: relative; - display: flex; - align-items: center; - justify-content: center -} - -.navbar-toggler-icon { - height: 2px; - width: 1.25em; - background: currentColor; - border-radius: 10px; - transition: top .2s .2s, bottom .2s .2s, transform .2s, opacity 0s .2s; - position: relative -} - -@media (prefers-reduced-motion:reduce) { - .navbar-toggler-icon { - transition: none - } -} - -.navbar-toggler-icon:after, -.navbar-toggler-icon:before { - content: ""; - display: block; - height: inherit; - width: inherit; - border-radius: inherit; - background: inherit; - position: absolute; - left: 0; - transition: inherit -} - -@media (prefers-reduced-motion:reduce) { - - .navbar-toggler-icon:after, - .navbar-toggler-icon:before { - transition: none - } -} - -.navbar-toggler-icon:before { - top: -.45em -} - -.navbar-toggler-icon:after { - bottom: -.45em -} - -.navbar-toggler[aria-expanded=true] .navbar-toggler-icon { - transform: rotate(45deg); - transition: top .3s, bottom .3s, transform .3s .3s, opacity 0s .3s -} - -@media (prefers-reduced-motion:reduce) { - .navbar-toggler[aria-expanded=true] .navbar-toggler-icon { - transition: none - } -} - -.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before { - top: 0; - transform: rotate(-90deg) -} - -.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after { - bottom: 0; - opacity: 0 -} - -.navbar-transparent { - --tblr-navbar-border-color: transparent !important; - background: 0 0 !important -} - -.navbar-nav { - align-items: stretch -} - -.navbar-nav .nav-item { - display: flex; - flex-direction: column; - justify-content: center -} - -.navbar-side { - margin: 0; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-around -} - -@media (min-width:576px) { - .navbar-vertical.navbar-expand-sm { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 - } -} - -@media (min-width:576px) and (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand-sm { - transition: none - } -} - -@media (min-width:576px) { - .navbar-vertical.navbar-expand-sm.navbar-right { - left: auto; - right: 0 - } - - .navbar-vertical.navbar-expand-sm .navbar-brand { - padding: .75rem 0; - justify-content: center - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse { - align-items: stretch - } - - .navbar-vertical.navbar-expand-sm .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto - } - - .navbar-vertical.navbar-expand-sm .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem - } - - .navbar-vertical.navbar-expand-sm>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 - } - - .navbar-vertical.navbar-expand-sm~.page { - padding-left: 15rem - } - - .navbar-vertical.navbar-expand-sm~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem - } - - .navbar-vertical.navbar-expand-sm.navbar-right~.page { - padding-left: 0; - padding-right: 15rem - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse { - flex-direction: column - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:768px) { - .navbar-vertical.navbar-expand-md { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 - } -} - -@media (min-width:768px) and (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand-md { - transition: none - } -} - -@media (min-width:768px) { - .navbar-vertical.navbar-expand-md.navbar-right { - left: auto; - right: 0 - } - - .navbar-vertical.navbar-expand-md .navbar-brand { - padding: .75rem 0; - justify-content: center - } - - .navbar-vertical.navbar-expand-md .navbar-collapse { - align-items: stretch - } - - .navbar-vertical.navbar-expand-md .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto - } - - .navbar-vertical.navbar-expand-md .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem - } - - .navbar-vertical.navbar-expand-md>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 - } - - .navbar-vertical.navbar-expand-md~.page { - padding-left: 15rem - } - - .navbar-vertical.navbar-expand-md~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem - } - - .navbar-vertical.navbar-expand-md.navbar-right~.page { - padding-left: 0; - padding-right: 15rem - } - - .navbar-vertical.navbar-expand-md .navbar-collapse { - flex-direction: column - } - - .navbar-vertical.navbar-expand-md .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:992px) { - .navbar-vertical.navbar-expand-lg { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 - } -} - -@media (min-width:992px) and (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand-lg { - transition: none - } -} - -@media (min-width:992px) { - .navbar-vertical.navbar-expand-lg.navbar-right { - left: auto; - right: 0 - } - - .navbar-vertical.navbar-expand-lg .navbar-brand { - padding: .75rem 0; - justify-content: center - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse { - align-items: stretch - } - - .navbar-vertical.navbar-expand-lg .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto - } - - .navbar-vertical.navbar-expand-lg .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem - } - - .navbar-vertical.navbar-expand-lg>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 - } - - .navbar-vertical.navbar-expand-lg~.page { - padding-left: 15rem - } - - .navbar-vertical.navbar-expand-lg~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem - } - - .navbar-vertical.navbar-expand-lg.navbar-right~.page { - padding-left: 0; - padding-right: 15rem - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse { - flex-direction: column - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:1200px) { - .navbar-vertical.navbar-expand-xl { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 - } -} - -@media (min-width:1200px) and (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand-xl { - transition: none - } -} - -@media (min-width:1200px) { - .navbar-vertical.navbar-expand-xl.navbar-right { - left: auto; - right: 0 - } - - .navbar-vertical.navbar-expand-xl .navbar-brand { - padding: .75rem 0; - justify-content: center - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse { - align-items: stretch - } - - .navbar-vertical.navbar-expand-xl .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto - } - - .navbar-vertical.navbar-expand-xl .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem - } - - .navbar-vertical.navbar-expand-xl>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 - } - - .navbar-vertical.navbar-expand-xl~.page { - padding-left: 15rem - } - - .navbar-vertical.navbar-expand-xl~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem - } - - .navbar-vertical.navbar-expand-xl.navbar-right~.page { - padding-left: 0; - padding-right: 15rem - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse { - flex-direction: column - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -@media (min-width:1400px) { - .navbar-vertical.navbar-expand-xxl { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 - } -} - -@media (min-width:1400px) and (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand-xxl { - transition: none - } -} - -@media (min-width:1400px) { - .navbar-vertical.navbar-expand-xxl.navbar-right { - left: auto; - right: 0 - } - - .navbar-vertical.navbar-expand-xxl .navbar-brand { - padding: .75rem 0; - justify-content: center - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse { - align-items: stretch - } - - .navbar-vertical.navbar-expand-xxl .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto - } - - .navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem - } - - .navbar-vertical.navbar-expand-xxl>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 - } - - .navbar-vertical.navbar-expand-xxl~.page { - padding-left: 15rem - } - - .navbar-vertical.navbar-expand-xxl~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem - } - - .navbar-vertical.navbar-expand-xxl.navbar-right~.page { - padding-left: 0; - padding-right: 15rem - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse { - flex-direction: column - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { - flex-direction: column - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { - margin-left: auto - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 - } -} - -.navbar-vertical.navbar-expand { - width: 15rem; - position: fixed; - top: 0; - left: 0; - bottom: 0; - z-index: 1030; - align-items: flex-start; - transition: transform .3s; - overflow-y: scroll; - padding: 0 -} - -@media (prefers-reduced-motion:reduce) { - .navbar-vertical.navbar-expand { - transition: none - } -} - -.navbar-vertical.navbar-expand.navbar-right { - left: auto; - right: 0 -} - -.navbar-vertical.navbar-expand .navbar-brand { - padding: .75rem 0; - justify-content: center -} - -.navbar-vertical.navbar-expand .navbar-collapse { - align-items: stretch -} - -.navbar-vertical.navbar-expand .navbar-nav { - flex-direction: column; - flex-grow: 1; - min-height: auto -} - -.navbar-vertical.navbar-expand .navbar-nav .nav-link { - padding-top: .5rem; - padding-bottom: .5rem -} - -.navbar-vertical.navbar-expand>[class^=container] { - flex-direction: column; - align-items: stretch; - min-height: 100%; - justify-content: flex-start; - padding: 0 -} - -.navbar-vertical.navbar-expand~.page { - padding-left: 15rem -} - -.navbar-vertical.navbar-expand~.page [class^=container] { - padding-left: 1.5rem; - padding-right: 1.5rem -} - -.navbar-vertical.navbar-expand.navbar-right~.page { - padding-left: 0; - padding-right: 15rem -} - -.navbar-vertical.navbar-expand .navbar-collapse { - flex-direction: column -} - -.navbar-vertical.navbar-expand .navbar-collapse [class^=container] { - flex-direction: column; - align-items: stretch; - padding: 0 -} - -.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav { - margin-left: 0; - margin-right: 0 -} - -.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link { - padding: .5rem calc(calc(var(--tblr-page-padding) * 2)/ 2); - justify-content: flex-start -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns { - flex-direction: column -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu { - padding: 0; - background: 0 0; - position: static; - color: inherit; - box-shadow: none; - border: none; - min-width: 0; - margin: 0 -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { - min-width: 0; - display: flex; - width: auto; - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem); - color: inherit -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { - background: var(--tblr-navbar-active-bg) -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem) -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { - padding-left: calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem) -} - -.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after { - margin-left: auto -} - -.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after { - border-bottom-width: 0; - border-left-width: 3px; - right: auto; - top: 0; - bottom: 0 -} - -.navbar-overlap:after { - content: ""; - height: 9rem; - position: absolute; - top: 100%; - left: 0; - right: 0; - background: inherit; - z-index: -1; - box-shadow: inherit -} - -.page { - display: flex; - flex-direction: column; - position: relative; - min-height: 100% -} - -.page-center .container { - margin-top: auto; - margin-bottom: auto -} - -.page-wrapper { - flex: 1; - display: flex; - flex-direction: column -} - -@media print { - .page-wrapper { - margin: 0 !important - } -} - -.page-wrapper-full .page-body:first-child { - margin: 0; - border-top: 0 -} - -.page-body { - margin-top: var(--tblr-page-padding-y); - margin-bottom: var(--tblr-page-padding-y) -} - -.page-body-card { - background: var(--tblr-bg-surface); - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - padding: var(--tblr-page-padding) 0; - margin-bottom: 0; - flex: 1 -} - -.page-body~.page-body-card { - margin-top: 0 -} - -.page-cover { - background: no-repeat center/cover; - min-height: 9rem -} - -@media (min-width:768px) { - .page-cover { - min-height: 12rem - } -} - -@media (min-width:992px) { - .page-cover { - min-height: 15rem - } -} - -.page-cover-overlay { - position: relative -} - -.page-cover-overlay:after { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, .6) 100%) -} - -.page-header { - display: flex; - flex-wrap: wrap; - min-height: 2.25rem; - flex-direction: column; - justify-content: center -} - -.page-wrapper .page-header { - margin: var(--tblr-page-padding-y) 0 0 -} - -.page-header-border { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - padding: var(--tblr-page-padding-y) 0; - margin: 0 !important; - background-color: var(--tblr-bg-surface) -} - -.page-pretitle { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted) -} - -.page-title { - margin: 0; - font-size: 1.25rem; - line-height: 1.75rem; - font-weight: var(--tblr-font-weight-bold); - color: inherit; - display: flex; - align-items: center -} - -.page-title svg { - width: 1.5rem; - height: 1.5rem; - margin-right: .25rem -} - -.page-title-lg { - font-size: 1.5rem; - line-height: 2rem -} - -.page-subtitle { - margin-top: .25rem; - color: var(--tblr-muted) -} - -.page-cover { - --tblr-page-cover-blur: 20px; - --tblr-page-cover-padding: 1rem; - min-height: 6rem; - padding: var(--tblr-page-cover-padding) 0; - position: relative; - overflow: hidden -} - -.page-cover-img { - position: absolute; - top: calc(-2 * var(--tblr-page-cover-blur, 0)); - left: calc(-2 * var(--tblr-page-cover-blur, 0)); - right: calc(-2 * var(--tblr-page-cover-blur, 0)); - bottom: calc(-2 * var(--tblr-page-cover-blur, 0)); - pointer-events: none; - filter: blur(var(--tblr-page-cover-blur)); - -o-object-fit: cover; - object-fit: cover; - background-size: cover; - background-position: center; - z-index: -1 -} - -.page-tabs { - margin-top: .5rem; - position: relative -} - -.page-header-tabs .nav-bordered { - border: 0 -} - -.page-header-tabs+.page-body-card { - margin-top: 0 -} - -.footer { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - background-color: #fff; - padding: 2rem 0; - color: var(--tblr-muted); - margin-top: auto -} - -.footer-transparent { - background-color: transparent; - border-top: 0 -} - -body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light { - display: none !important -} - -body.theme-dark .hide-theme-dark, -body[data-bs-theme=dark] .hide-theme-dark { - display: none !important -} - -[data-bs-theme=dark] { - --tblr-body-color: #fcfdfe; - --tblr-body-color-rgb: 252, 253, 254; - --tblr-muted: #3a4859; - --tblr-body-bg: #151f2c; - --tblr-body-bg-rgb: 21, 31, 44; - --tblr-emphasis-color: #ffffff; - --tblr-emphasis-color-rgb: 255, 255, 255; - --tblr-bg-forms: #151f2c; - --tblr-bg-surface: #182433; - --tblr-bg-surface-dark: #151f2c; - --tblr-bg-surface-secondary: #1b293a; - --tblr-bg-surface-tertiary: #151f2c; - --tblr-link-color: #307fdd; - --tblr-link-hover-color: #206bc4; - --tblr-active-bg: #1b293a; - --tblr-disabled-color: var(--tblr-gray-700); - --tblr-border-color: var(--tblr-dark-mode-border-color); - --tblr-border-color-translucent: var(--tblr-dark-mode-border-color-translucent); - --tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color); - --tblr-border-color-active: var(--tblr-dark-mode-border-color-active); - --tblr-btn-color: #151f2c; - --tblr-code-color: var(--tblr-body-color); - --tblr-code-bg: #1f2e41; - --tblr-primary-lt: #192b42; - --tblr-primary-lt-rgb: 25, 43, 66; - --tblr-secondary-lt: #202c3b; - --tblr-secondary-lt-rgb: 32, 44, 59; - --tblr-success-lt: #1a3235; - --tblr-success-lt-rgb: 26, 50, 53; - --tblr-info-lt: #1c3044; - --tblr-info-lt-rgb: 28, 48, 68; - --tblr-warning-lt: #2e2b2f; - --tblr-warning-lt-rgb: 46, 43, 47; - --tblr-danger-lt: #2b2634; - --tblr-danger-lt-rgb: 43, 38, 52; - --tblr-light-lt: #2f3a47; - --tblr-light-lt-rgb: 47, 58, 71; - --tblr-dark-lt: #182433; - --tblr-dark-lt-rgb: 24, 36, 51; - --tblr-muted-lt: #202c3b; - --tblr-muted-lt-rgb: 32, 44, 59; - --tblr-blue-lt: #192b42; - --tblr-blue-lt-rgb: 25, 43, 66; - --tblr-azure-lt: #1c3044; - --tblr-azure-lt-rgb: 28, 48, 68; - --tblr-indigo-lt: #1c2a45; - --tblr-indigo-lt-rgb: 28, 42, 69; - --tblr-purple-lt: #272742; - --tblr-purple-lt-rgb: 39, 39, 66; - --tblr-pink-lt: #2b2639; - --tblr-pink-lt-rgb: 43, 38, 57; - --tblr-red-lt: #2b2634; - --tblr-red-lt-rgb: 43, 38, 52; - --tblr-orange-lt: #2e2b2f; - --tblr-orange-lt-rgb: 46, 43, 47; - --tblr-yellow-lt: #2e302e; - --tblr-yellow-lt-rgb: 46, 48, 46; - --tblr-lime-lt: #213330; - --tblr-lime-lt-rgb: 33, 51, 48; - --tblr-green-lt: #1a3235; - --tblr-green-lt-rgb: 26, 50, 53; - --tblr-teal-lt: #17313a; - --tblr-teal-lt-rgb: 23, 49, 58; - --tblr-cyan-lt: #183140; - --tblr-cyan-lt-rgb: 24, 49, 64; - --tblr-facebook-lt: #182c46; - --tblr-facebook-lt-rgb: 24, 44, 70; - --tblr-twitter-lt: #193146; - --tblr-twitter-lt-rgb: 25, 49, 70; - --tblr-linkedin-lt: #172b41; - --tblr-linkedin-lt-rgb: 23, 43, 65; - --tblr-google-lt: #2c2834; - --tblr-google-lt-rgb: 44, 40, 52; - --tblr-youtube-lt: #2f202e; - --tblr-youtube-lt-rgb: 47, 32, 46; - --tblr-vimeo-lt: #183345; - --tblr-vimeo-lt-rgb: 24, 51, 69; - --tblr-dribbble-lt: #2d283c; - --tblr-dribbble-lt-rgb: 45, 40, 60; - --tblr-github-lt: #182330; - --tblr-github-lt-rgb: 24, 35, 48; - --tblr-instagram-lt: #2c2737; - --tblr-instagram-lt-rgb: 44, 39, 55; - --tblr-pinterest-lt: #292131; - --tblr-pinterest-lt-rgb: 41, 33, 49; - --tblr-vk-lt: #202e3f; - --tblr-vk-lt-rgb: 32, 46, 63; - --tblr-rss-lt: #2f312e; - --tblr-rss-lt-rgb: 47, 49, 46; - --tblr-flickr-lt: #162a44; - --tblr-flickr-lt-rgb: 22, 42, 68; - --tblr-bitbucket-lt: #162942; - --tblr-bitbucket-lt-rgb: 22, 41, 66; - --tblr-tabler-lt: #192b42; - --tblr-tabler-lt-rgb: 25, 43, 66 -} - -[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image { - filter: brightness(0) invert(1) -} - -.accordion { - --tblr-accordion-color: var(--tblr-body-color) -} - -.accordion-button:focus:not(:focus-visible) { - outline: 0; - box-shadow: none -} - -.accordion-button:after { - opacity: .7 -} - -.accordion-button:not(.collapsed) { - font-weight: var(--tblr-font-weight-bold); - border-bottom-color: transparent; - box-shadow: none -} - -.accordion-button:not(.collapsed):after { - opacity: 1 -} - -.alert { - --tblr-alert-color: var(--tblr-secondary); - --tblr-alert-bg: var(--tblr-surface); - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - border-left: 0.25rem var(--tblr-border-style) var(--tblr-alert-color); - box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; -} - -.alert>:last-child { - margin-bottom: 0 -} - -.alert-important { - border-color: transparent; - background: var(--tblr-alert-color); - color: #fff -} - -.alert-important .alert-icon, -.alert-important .alert-link { - color: inherit -} - -.alert-important .alert-link:hover { - color: inherit -} - -.alert-link, -.alert-link:hover { - color: var(--tblr-alert-color) -} - -.alert-primary { - --tblr-alert-color: var(--tblr-primary) -} - -.alert-secondary { - --tblr-alert-color: var(--tblr-secondary) -} - -.alert-success { - --tblr-alert-color: var(--tblr-success) -} - -.alert-info { - --tblr-alert-color: var(--tblr-info) -} - -.alert-warning { - --tblr-alert-color: var(--tblr-warning) -} - -.alert-danger { - --tblr-alert-color: var(--tblr-danger) -} - -.alert-light { - --tblr-alert-color: var(--tblr-light) -} - -.alert-dark { - --tblr-alert-color: var(--tblr-dark) -} - -.alert-muted { - --tblr-alert-color: var(--tblr-muted) -} - -.alert-blue { - --tblr-alert-color: var(--tblr-blue) -} - -.alert-azure { - --tblr-alert-color: var(--tblr-azure) -} - -.alert-indigo { - --tblr-alert-color: var(--tblr-indigo) -} - -.alert-purple { - --tblr-alert-color: var(--tblr-purple) -} - -.alert-pink { - --tblr-alert-color: var(--tblr-pink) -} - -.alert-red { - --tblr-alert-color: var(--tblr-red) -} - -.alert-orange { - --tblr-alert-color: var(--tblr-orange) -} - -.alert-yellow { - --tblr-alert-color: var(--tblr-yellow) -} - -.alert-lime { - --tblr-alert-color: var(--tblr-lime) -} - -.alert-green { - --tblr-alert-color: var(--tblr-green) -} - -.alert-teal { - --tblr-alert-color: var(--tblr-teal) -} - -.alert-cyan { - --tblr-alert-color: var(--tblr-cyan) -} - -.alert-facebook { - --tblr-alert-color: var(--tblr-facebook) -} - -.alert-twitter { - --tblr-alert-color: var(--tblr-twitter) -} - -.alert-linkedin { - --tblr-alert-color: var(--tblr-linkedin) -} - -.alert-google { - --tblr-alert-color: var(--tblr-google) -} - -.alert-youtube { - --tblr-alert-color: var(--tblr-youtube) -} - -.alert-vimeo { - --tblr-alert-color: var(--tblr-vimeo) -} - -.alert-dribbble { - --tblr-alert-color: var(--tblr-dribbble) -} - -.alert-github { - --tblr-alert-color: var(--tblr-github) -} - -.alert-instagram { - --tblr-alert-color: var(--tblr-instagram) -} - -.alert-pinterest { - --tblr-alert-color: var(--tblr-pinterest) -} - -.alert-vk { - --tblr-alert-color: var(--tblr-vk) -} - -.alert-rss { - --tblr-alert-color: var(--tblr-rss) -} - -.alert-flickr { - --tblr-alert-color: var(--tblr-flickr) -} - -.alert-bitbucket { - --tblr-alert-color: var(--tblr-bitbucket) -} - -.alert-tabler { - --tblr-alert-color: var(--tblr-tabler) -} - -.alert-icon { - color: var(--tblr-alert-color); - width: 1.5rem !important; - height: 1.5rem !important; - margin: -.125rem 1rem -.125rem 0 -} - -.alert-title { - font-size: .875rem; - line-height: 1.25rem; - font-weight: var(--tblr-font-weight-bold); - margin-bottom: .25rem; - color: var(--tblr-alert-color) -} - -.avatar { - --tblr-avatar-size: 2.5rem; - --tblr-avatar-bg: var(--tblr-bg-surface-secondary); - --tblr-avatar-shadow: inset var(--tblr-border-color-translucent) 0 0 0 1px; - position: relative; - width: var(--tblr-avatar-size); - height: var(--tblr-avatar-size); - font-size: calc(var(--tblr-avatar-size)/ 2.8571428572); - font-weight: var(--tblr-font-weight-medium); - display: inline-flex; - align-items: center; - justify-content: center; - color: var(--tblr-muted); - text-align: center; - text-transform: uppercase; - vertical-align: bottom; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background: var(--tblr-avatar-bg) no-repeat center/cover; - border-radius: var(--tblr-border-radius); - box-shadow: var(--tblr-avatar-shadow) -} - -.avatar svg { - width: calc(var(--tblr-avatar-size)/ 1.6666666667); - height: calc(var(--tblr-avatar-size)/ 1.6666666667) -} - -.avatar .badge { - position: absolute; - right: 0; - bottom: 0; - border-radius: 100rem; - box-shadow: 0 0 0 2px var(--tblr-bg-surface) -} - -a.avatar { - cursor: pointer -} - -.avatar-rounded { - border-radius: 100rem -} - -.avatar-xs { - --tblr-avatar-size: 1.5rem -} - -.avatar-xs .badge:empty { - width: .375rem; - height: .375rem -} - -.avatar-sm { - --tblr-avatar-size: 2rem -} - -.avatar-sm .badge:empty { - width: .5rem; - height: .5rem -} - -.avatar-md { - --tblr-avatar-size: 4rem -} - -.avatar-md .badge:empty { - width: 1rem; - height: 1rem -} - -.avatar-lg { - --tblr-avatar-size: 5.5rem -} - -.avatar-lg .badge:empty { - width: 1.375rem; - height: 1.375rem -} - -.avatar-xl { - --tblr-avatar-size: 7rem -} - -.avatar-xlplus { - --tblr-avatar-size: 9rem -} - -.avatar-xl .badge:empty { - width: 1.75rem; - height: 1.75rem -} - -.avatar-2xl { - --tblr-avatar-size: 11rem -} - -.avatar-2xl .badge:empty { - width: 2.75rem; - height: 2.75rem -} - -.avatar-list { - --tblr-list-gap: 0.5rem; - display: flex; - flex-wrap: wrap; - gap: var(--tblr-list-gap) -} - -.avatar-list a.avatar:hover { - z-index: 1 -} - -.avatar-list-stacked { - display: block; - --tblr-list-gap: 0 -} - -.avatar-list-stacked .avatar { - margin-right: calc(-.5 * var(--tblr-avatar-size)) !important; - box-shadow: var(--tblr-avatar-shadow), 0 0 0 2px var(--tblr-card-cap-bg, var(--tblr-card-bg, var(--tblr-bg-surface))) -} - -.avatar-upload { - width: 4rem; - height: 4rem; - border: var(--tblr-border-width) dashed var(--tblr-border-color); - background: var(--tblr-bg-forms); - flex-direction: column; - transition: color .3s, background-color .3s -} - -@media (prefers-reduced-motion:reduce) { - .avatar-upload { - transition: none - } -} - -.avatar-upload svg { - width: 1.5rem; - height: 1.5rem; - stroke-width: 1 -} - -.avatar-upload:hover { - border-color: var(--tblr-primary); - color: var(--tblr-primary); - text-decoration: none -} - -.avatar-upload-text { - font-size: .625rem; - line-height: 1; - margin-top: .25rem -} - -.avatar-cover { - margin-top: calc(-.5 * var(--tblr-avatar-size)); - box-shadow: 0 0 0 .25rem var(--tblr-card-bg, var(--tblr-body-bg)) -} - -.badge { - justify-content: center; - align-items: center; - background: #929dab; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: var(--tblr-border-width) var(--tblr-border-style) transparent; - min-width: 1.35714285em; - font-weight: var(--tblr-font-weight-bold); - letter-spacing: .04em; - vertical-align: bottom -} - -a.badge { - color: var(--tblr-bg-surface) -} - -.badge:empty { - display: inline-block; - width: .5rem; - height: .5rem; - min-width: 0; - min-height: auto; - padding: 0; - border-radius: 100rem; - vertical-align: baseline -} - -.badge .avatar { - box-sizing: content-box; - width: 1.25rem; - height: 1.25rem; - margin: 0 .5rem 0 -.5rem -} - -.badge .icon { - width: 1em; - height: 1em; - font-size: 1rem; - stroke-width: 2 -} - -.badge-outline { - background-color: transparent; - border: var(--tblr-border-width) var(--tblr-border-style) currentColor -} - -.badge-pill { - border-radius: 100rem -} - -.badges-list { - --tblr-list-gap: 0.5rem; - display: flex; - flex-wrap: wrap; - gap: var(--tblr-list-gap) -} - -.badge-notification { - position: absolute !important; - top: 0 !important; - right: 0 !important; - transform: translate(50%, -50%); - z-index: 1 -} - -.badge-blink { - animation: blink 2s infinite -} - -.breadcrumb { - --tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold); - --tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color); - --tblr-breadcrumb-link-color: var(--tblr-link-color); - padding: 0; - margin: 0; - background: 0 0 -} - -.breadcrumb a { - color: var(--tblr-breadcrumb-link-color) -} - -.breadcrumb a:hover { - text-decoration: underline -} - -.breadcrumb-muted { - --tblr-breadcrumb-link-color: var(--tblr-muted) -} - -.breadcrumb-item.active { - font-weight: var(--tblr-breadcrumb-item-active-font-weight) -} - -.breadcrumb-item.active a { - color: inherit; - pointer-events: none -} - -.breadcrumb-item.disabled { - color: var(--tblr-breadcrumb-item-disabled-color) -} - -.breadcrumb-item.disabled:before { - color: inherit -} - -.breadcrumb-item.disabled a { - color: inherit; - pointer-events: none -} - -.breadcrumb-dots { - --tblr-breadcrumb-divider: "·" -} - -.breadcrumb-arrows { - --tblr-breadcrumb-divider: "›" -} - -.breadcrumb-bullets { - --tblr-breadcrumb-divider: "•" -} - -.btn { - --tblr-btn-bg: var(--tblr-bg-surface); - --tblr-btn-hover-bg: var(--tblr-bg-surface); - --tblr-btn-icon-size: 1.25rem; - --tblr-btn-bg: var(--tblr-bg-surface); - --tblr-btn-color: var(--tblr-body-color); - --tblr-btn-border-color: var(--tblr-border-color); - --tblr-btn-hover-bg: var(--tblr-btn-bg); - --tblr-btn-hover-border-color: var(--tblr-border-color-active); - --tblr-btn-box-shadow: var(--tblr-shadow-button); - --tblr-btn-active-color: var(--tblr-primary); - --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), 0.04); - --tblr-btn-active-border-color: var(--tblr-primary); - display: inline-flex; - align-items: center; - justify-content: center; - white-space: nowrap; - box-shadow: var(--tblr-btn-box-shadow) -} - -.btn .icon { - width: var(--tblr-btn-icon-size); - height: var(--tblr-btn-icon-size); - min-width: var(--tblr-btn-icon-size); - margin: 0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4); - vertical-align: bottom; - color: inherit -} - -.btn .avatar { - width: var(--tblr-btn-icon-size); - height: var(--tblr-btn-icon-size); - margin: 0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4) -} - -.btn .icon-right { - margin: 0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2) -} - -.btn .badge { - top: auto -} - -.btn-check+.btn:hover { - color: var(--tblr-btn-hover-color); - background-color: var(--tblr-btn-hover-bg); - border-color: var(--tblr-btn-hover-border-color) -} - -.btn-link { - color: #206bc4; - background-color: transparent; - border-color: transparent; - box-shadow: none -} - -.btn-link .icon { - color: inherit -} - -.btn-link:hover { - color: #1a569d; - border-color: transparent -} - -.btn-primary { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-primary-fg); - --tblr-btn-bg: var(--tblr-primary); - --tblr-btn-hover-color: var(--tblr-primary-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-primary-rgb), .8); - --tblr-btn-active-color: var(--tblr-primary-fg); - --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-primary); - --tblr-btn-disabled-color: var(--tblr-primary-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-primary { - --tblr-btn-color: var(--tblr-primary); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-primary); - --tblr-btn-hover-color: var(--tblr-primary-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-primary); - --tblr-btn-active-color: var(--tblr-primary-fg); - --tblr-btn-active-bg: var(--tblr-primary); - --tblr-btn-disabled-color: var(--tblr-primary); - --tblr-btn-disabled-border-color: var(--tblr-primary) -} - -.btn-secondary { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-secondary-fg); - --tblr-btn-bg: var(--tblr-secondary); - --tblr-btn-hover-color: var(--tblr-secondary-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-secondary-rgb), .8); - --tblr-btn-active-color: var(--tblr-secondary-fg); - --tblr-btn-active-bg: rgba(var(--tblr-secondary-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-secondary); - --tblr-btn-disabled-color: var(--tblr-secondary-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-secondary { - --tblr-btn-color: var(--tblr-secondary); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-secondary); - --tblr-btn-hover-color: var(--tblr-secondary-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-secondary); - --tblr-btn-active-color: var(--tblr-secondary-fg); - --tblr-btn-active-bg: var(--tblr-secondary); - --tblr-btn-disabled-color: var(--tblr-secondary); - --tblr-btn-disabled-border-color: var(--tblr-secondary) -} - -.btn-success { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-success-fg); - --tblr-btn-bg: var(--tblr-success); - --tblr-btn-hover-color: var(--tblr-success-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-success-rgb), .8); - --tblr-btn-active-color: var(--tblr-success-fg); - --tblr-btn-active-bg: rgba(var(--tblr-success-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-success); - --tblr-btn-disabled-color: var(--tblr-success-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-success { - --tblr-btn-color: var(--tblr-success); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-success); - --tblr-btn-hover-color: var(--tblr-success-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-success); - --tblr-btn-active-color: var(--tblr-success-fg); - --tblr-btn-active-bg: var(--tblr-success); - --tblr-btn-disabled-color: var(--tblr-success); - --tblr-btn-disabled-border-color: var(--tblr-success) -} - -.btn-info { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-info-fg); - --tblr-btn-bg: var(--tblr-info); - --tblr-btn-hover-color: var(--tblr-info-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-info-rgb), .8); - --tblr-btn-active-color: var(--tblr-info-fg); - --tblr-btn-active-bg: rgba(var(--tblr-info-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-info); - --tblr-btn-disabled-color: var(--tblr-info-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-info { - --tblr-btn-color: var(--tblr-info); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-info); - --tblr-btn-hover-color: var(--tblr-info-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-info); - --tblr-btn-active-color: var(--tblr-info-fg); - --tblr-btn-active-bg: var(--tblr-info); - --tblr-btn-disabled-color: var(--tblr-info); - --tblr-btn-disabled-border-color: var(--tblr-info) -} - -.btn-warning { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-warning-fg); - --tblr-btn-bg: var(--tblr-warning); - --tblr-btn-hover-color: var(--tblr-warning-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-warning-rgb), .8); - --tblr-btn-active-color: var(--tblr-warning-fg); - --tblr-btn-active-bg: rgba(var(--tblr-warning-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-warning); - --tblr-btn-disabled-color: var(--tblr-warning-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-warning { - --tblr-btn-color: var(--tblr-warning); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-warning); - --tblr-btn-hover-color: var(--tblr-warning-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-warning); - --tblr-btn-active-color: var(--tblr-warning-fg); - --tblr-btn-active-bg: var(--tblr-warning); - --tblr-btn-disabled-color: var(--tblr-warning); - --tblr-btn-disabled-border-color: var(--tblr-warning) -} - -.btn-danger { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-danger-fg); - --tblr-btn-bg: var(--tblr-danger); - --tblr-btn-hover-color: var(--tblr-danger-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-danger-rgb), .8); - --tblr-btn-active-color: var(--tblr-danger-fg); - --tblr-btn-active-bg: rgba(var(--tblr-danger-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-danger); - --tblr-btn-disabled-color: var(--tblr-danger-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-danger { - --tblr-btn-color: var(--tblr-danger); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-danger); - --tblr-btn-hover-color: var(--tblr-danger-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-danger); - --tblr-btn-active-color: var(--tblr-danger-fg); - --tblr-btn-active-bg: var(--tblr-danger); - --tblr-btn-disabled-color: var(--tblr-danger); - --tblr-btn-disabled-border-color: var(--tblr-danger) -} - -.btn-light { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-light-fg); - --tblr-btn-bg: var(--tblr-light); - --tblr-btn-hover-color: var(--tblr-light-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-light-rgb), .8); - --tblr-btn-active-color: var(--tblr-light-fg); - --tblr-btn-active-bg: rgba(var(--tblr-light-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-light); - --tblr-btn-disabled-color: var(--tblr-light-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-light { - --tblr-btn-color: var(--tblr-light); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-light); - --tblr-btn-hover-color: var(--tblr-light-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-light); - --tblr-btn-active-color: var(--tblr-light-fg); - --tblr-btn-active-bg: var(--tblr-light); - --tblr-btn-disabled-color: var(--tblr-light); - --tblr-btn-disabled-border-color: var(--tblr-light) -} - -.btn-dark { - --tblr-btn-border-color: var(--tblr-dark-mode-border-color); - --tblr-btn-hover-border-color: var(--tblr-dark-mode-border-color-active); - --tblr-btn-active-border-color: var(--tblr-dark-mode-border-color-active); - --tblr-btn-color: var(--tblr-dark-fg); - --tblr-btn-bg: var(--tblr-dark); - --tblr-btn-hover-color: var(--tblr-dark-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-dark-rgb), .8); - --tblr-btn-active-color: var(--tblr-dark-fg); - --tblr-btn-active-bg: rgba(var(--tblr-dark-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-dark); - --tblr-btn-disabled-color: var(--tblr-dark-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-dark { - --tblr-btn-color: var(--tblr-dark); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-dark); - --tblr-btn-hover-color: var(--tblr-dark-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-dark); - --tblr-btn-active-color: var(--tblr-dark-fg); - --tblr-btn-active-bg: var(--tblr-dark); - --tblr-btn-disabled-color: var(--tblr-dark); - --tblr-btn-disabled-border-color: var(--tblr-dark) -} - -.btn-muted { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-muted-fg); - --tblr-btn-bg: var(--tblr-muted); - --tblr-btn-hover-color: var(--tblr-muted-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-muted-rgb), .8); - --tblr-btn-active-color: var(--tblr-muted-fg); - --tblr-btn-active-bg: rgba(var(--tblr-muted-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-muted); - --tblr-btn-disabled-color: var(--tblr-muted-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-muted { - --tblr-btn-color: var(--tblr-muted); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-muted); - --tblr-btn-hover-color: var(--tblr-muted-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-muted); - --tblr-btn-active-color: var(--tblr-muted-fg); - --tblr-btn-active-bg: var(--tblr-muted); - --tblr-btn-disabled-color: var(--tblr-muted); - --tblr-btn-disabled-border-color: var(--tblr-muted) -} - -.btn-blue { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-blue-fg); - --tblr-btn-bg: var(--tblr-blue); - --tblr-btn-hover-color: var(--tblr-blue-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-blue-rgb), .8); - --tblr-btn-active-color: var(--tblr-blue-fg); - --tblr-btn-active-bg: rgba(var(--tblr-blue-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-blue); - --tblr-btn-disabled-color: var(--tblr-blue-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-blue { - --tblr-btn-color: var(--tblr-blue); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-blue); - --tblr-btn-hover-color: var(--tblr-blue-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-blue); - --tblr-btn-active-color: var(--tblr-blue-fg); - --tblr-btn-active-bg: var(--tblr-blue); - --tblr-btn-disabled-color: var(--tblr-blue); - --tblr-btn-disabled-border-color: var(--tblr-blue) -} - -.btn-azure { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-azure-fg); - --tblr-btn-bg: var(--tblr-azure); - --tblr-btn-hover-color: var(--tblr-azure-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-azure-rgb), .8); - --tblr-btn-active-color: var(--tblr-azure-fg); - --tblr-btn-active-bg: rgba(var(--tblr-azure-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-azure); - --tblr-btn-disabled-color: var(--tblr-azure-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-azure { - --tblr-btn-color: var(--tblr-azure); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-azure); - --tblr-btn-hover-color: var(--tblr-azure-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-azure); - --tblr-btn-active-color: var(--tblr-azure-fg); - --tblr-btn-active-bg: var(--tblr-azure); - --tblr-btn-disabled-color: var(--tblr-azure); - --tblr-btn-disabled-border-color: var(--tblr-azure) -} - -.btn-indigo { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-indigo-fg); - --tblr-btn-bg: var(--tblr-indigo); - --tblr-btn-hover-color: var(--tblr-indigo-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-indigo-rgb), .8); - --tblr-btn-active-color: var(--tblr-indigo-fg); - --tblr-btn-active-bg: rgba(var(--tblr-indigo-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-indigo); - --tblr-btn-disabled-color: var(--tblr-indigo-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-indigo { - --tblr-btn-color: var(--tblr-indigo); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-indigo); - --tblr-btn-hover-color: var(--tblr-indigo-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-indigo); - --tblr-btn-active-color: var(--tblr-indigo-fg); - --tblr-btn-active-bg: var(--tblr-indigo); - --tblr-btn-disabled-color: var(--tblr-indigo); - --tblr-btn-disabled-border-color: var(--tblr-indigo) -} - -.btn-purple { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-purple-fg); - --tblr-btn-bg: var(--tblr-purple); - --tblr-btn-hover-color: var(--tblr-purple-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-purple-rgb), .8); - --tblr-btn-active-color: var(--tblr-purple-fg); - --tblr-btn-active-bg: rgba(var(--tblr-purple-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-purple); - --tblr-btn-disabled-color: var(--tblr-purple-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-purple { - --tblr-btn-color: var(--tblr-purple); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-purple); - --tblr-btn-hover-color: var(--tblr-purple-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-purple); - --tblr-btn-active-color: var(--tblr-purple-fg); - --tblr-btn-active-bg: var(--tblr-purple); - --tblr-btn-disabled-color: var(--tblr-purple); - --tblr-btn-disabled-border-color: var(--tblr-purple) -} - -.btn-pink { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-pink-fg); - --tblr-btn-bg: var(--tblr-pink); - --tblr-btn-hover-color: var(--tblr-pink-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-pink-rgb), .8); - --tblr-btn-active-color: var(--tblr-pink-fg); - --tblr-btn-active-bg: rgba(var(--tblr-pink-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-pink); - --tblr-btn-disabled-color: var(--tblr-pink-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-pink { - --tblr-btn-color: var(--tblr-pink); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-pink); - --tblr-btn-hover-color: var(--tblr-pink-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-pink); - --tblr-btn-active-color: var(--tblr-pink-fg); - --tblr-btn-active-bg: var(--tblr-pink); - --tblr-btn-disabled-color: var(--tblr-pink); - --tblr-btn-disabled-border-color: var(--tblr-pink) -} - -.btn-red { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-red-fg); - --tblr-btn-bg: var(--tblr-red); - --tblr-btn-hover-color: var(--tblr-red-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-red-rgb), .8); - --tblr-btn-active-color: var(--tblr-red-fg); - --tblr-btn-active-bg: rgba(var(--tblr-red-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-red); - --tblr-btn-disabled-color: var(--tblr-red-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-red { - --tblr-btn-color: var(--tblr-red); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-red); - --tblr-btn-hover-color: var(--tblr-red-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-red); - --tblr-btn-active-color: var(--tblr-red-fg); - --tblr-btn-active-bg: var(--tblr-red); - --tblr-btn-disabled-color: var(--tblr-red); - --tblr-btn-disabled-border-color: var(--tblr-red) -} - -.btn-orange { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-orange-fg); - --tblr-btn-bg: var(--tblr-orange); - --tblr-btn-hover-color: var(--tblr-orange-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-orange-rgb), .8); - --tblr-btn-active-color: var(--tblr-orange-fg); - --tblr-btn-active-bg: rgba(var(--tblr-orange-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-orange); - --tblr-btn-disabled-color: var(--tblr-orange-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-orange { - --tblr-btn-color: var(--tblr-orange); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-orange); - --tblr-btn-hover-color: var(--tblr-orange-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-orange); - --tblr-btn-active-color: var(--tblr-orange-fg); - --tblr-btn-active-bg: var(--tblr-orange); - --tblr-btn-disabled-color: var(--tblr-orange); - --tblr-btn-disabled-border-color: var(--tblr-orange) -} - -.btn-yellow { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-yellow-fg); - --tblr-btn-bg: var(--tblr-yellow); - --tblr-btn-hover-color: var(--tblr-yellow-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-yellow-rgb), .8); - --tblr-btn-active-color: var(--tblr-yellow-fg); - --tblr-btn-active-bg: rgba(var(--tblr-yellow-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-yellow); - --tblr-btn-disabled-color: var(--tblr-yellow-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-yellow { - --tblr-btn-color: var(--tblr-yellow); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-yellow); - --tblr-btn-hover-color: var(--tblr-yellow-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-yellow); - --tblr-btn-active-color: var(--tblr-yellow-fg); - --tblr-btn-active-bg: var(--tblr-yellow); - --tblr-btn-disabled-color: var(--tblr-yellow); - --tblr-btn-disabled-border-color: var(--tblr-yellow) -} - -.btn-lime { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-lime-fg); - --tblr-btn-bg: var(--tblr-lime); - --tblr-btn-hover-color: var(--tblr-lime-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-lime-rgb), .8); - --tblr-btn-active-color: var(--tblr-lime-fg); - --tblr-btn-active-bg: rgba(var(--tblr-lime-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-lime); - --tblr-btn-disabled-color: var(--tblr-lime-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-lime { - --tblr-btn-color: var(--tblr-lime); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-lime); - --tblr-btn-hover-color: var(--tblr-lime-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-lime); - --tblr-btn-active-color: var(--tblr-lime-fg); - --tblr-btn-active-bg: var(--tblr-lime); - --tblr-btn-disabled-color: var(--tblr-lime); - --tblr-btn-disabled-border-color: var(--tblr-lime) -} - -.btn-green { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-green-fg); - --tblr-btn-bg: var(--tblr-green); - --tblr-btn-hover-color: var(--tblr-green-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-green-rgb), .8); - --tblr-btn-active-color: var(--tblr-green-fg); - --tblr-btn-active-bg: rgba(var(--tblr-green-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-green); - --tblr-btn-disabled-color: var(--tblr-green-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-green { - --tblr-btn-color: var(--tblr-green); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-green); - --tblr-btn-hover-color: var(--tblr-green-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-green); - --tblr-btn-active-color: var(--tblr-green-fg); - --tblr-btn-active-bg: var(--tblr-green); - --tblr-btn-disabled-color: var(--tblr-green); - --tblr-btn-disabled-border-color: var(--tblr-green) -} - -.btn-teal { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-teal-fg); - --tblr-btn-bg: var(--tblr-teal); - --tblr-btn-hover-color: var(--tblr-teal-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-teal-rgb), .8); - --tblr-btn-active-color: var(--tblr-teal-fg); - --tblr-btn-active-bg: rgba(var(--tblr-teal-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-teal); - --tblr-btn-disabled-color: var(--tblr-teal-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-teal { - --tblr-btn-color: var(--tblr-teal); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-teal); - --tblr-btn-hover-color: var(--tblr-teal-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-teal); - --tblr-btn-active-color: var(--tblr-teal-fg); - --tblr-btn-active-bg: var(--tblr-teal); - --tblr-btn-disabled-color: var(--tblr-teal); - --tblr-btn-disabled-border-color: var(--tblr-teal) -} - -.btn-cyan { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-cyan-fg); - --tblr-btn-bg: var(--tblr-cyan); - --tblr-btn-hover-color: var(--tblr-cyan-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-cyan-rgb), .8); - --tblr-btn-active-color: var(--tblr-cyan-fg); - --tblr-btn-active-bg: rgba(var(--tblr-cyan-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-cyan); - --tblr-btn-disabled-color: var(--tblr-cyan-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-cyan { - --tblr-btn-color: var(--tblr-cyan); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-cyan); - --tblr-btn-hover-color: var(--tblr-cyan-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-cyan); - --tblr-btn-active-color: var(--tblr-cyan-fg); - --tblr-btn-active-bg: var(--tblr-cyan); - --tblr-btn-disabled-color: var(--tblr-cyan); - --tblr-btn-disabled-border-color: var(--tblr-cyan) -} - -.btn-facebook { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-facebook-fg); - --tblr-btn-bg: var(--tblr-facebook); - --tblr-btn-hover-color: var(--tblr-facebook-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-facebook-rgb), .8); - --tblr-btn-active-color: var(--tblr-facebook-fg); - --tblr-btn-active-bg: rgba(var(--tblr-facebook-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-facebook); - --tblr-btn-disabled-color: var(--tblr-facebook-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-facebook { - --tblr-btn-color: var(--tblr-facebook); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-facebook); - --tblr-btn-hover-color: var(--tblr-facebook-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-facebook); - --tblr-btn-active-color: var(--tblr-facebook-fg); - --tblr-btn-active-bg: var(--tblr-facebook); - --tblr-btn-disabled-color: var(--tblr-facebook); - --tblr-btn-disabled-border-color: var(--tblr-facebook) -} - -.btn-twitter { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-twitter-fg); - --tblr-btn-bg: var(--tblr-twitter); - --tblr-btn-hover-color: var(--tblr-twitter-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-twitter-rgb), .8); - --tblr-btn-active-color: var(--tblr-twitter-fg); - --tblr-btn-active-bg: rgba(var(--tblr-twitter-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-twitter); - --tblr-btn-disabled-color: var(--tblr-twitter-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-twitter { - --tblr-btn-color: var(--tblr-twitter); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-twitter); - --tblr-btn-hover-color: var(--tblr-twitter-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-twitter); - --tblr-btn-active-color: var(--tblr-twitter-fg); - --tblr-btn-active-bg: var(--tblr-twitter); - --tblr-btn-disabled-color: var(--tblr-twitter); - --tblr-btn-disabled-border-color: var(--tblr-twitter) -} - -.btn-linkedin { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-linkedin-fg); - --tblr-btn-bg: var(--tblr-linkedin); - --tblr-btn-hover-color: var(--tblr-linkedin-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-linkedin-rgb), .8); - --tblr-btn-active-color: var(--tblr-linkedin-fg); - --tblr-btn-active-bg: rgba(var(--tblr-linkedin-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-linkedin); - --tblr-btn-disabled-color: var(--tblr-linkedin-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-linkedin { - --tblr-btn-color: var(--tblr-linkedin); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-linkedin); - --tblr-btn-hover-color: var(--tblr-linkedin-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-linkedin); - --tblr-btn-active-color: var(--tblr-linkedin-fg); - --tblr-btn-active-bg: var(--tblr-linkedin); - --tblr-btn-disabled-color: var(--tblr-linkedin); - --tblr-btn-disabled-border-color: var(--tblr-linkedin) -} - -.btn-google { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-google-fg); - --tblr-btn-bg: var(--tblr-google); - --tblr-btn-hover-color: var(--tblr-google-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-google-rgb), .8); - --tblr-btn-active-color: var(--tblr-google-fg); - --tblr-btn-active-bg: rgba(var(--tblr-google-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-google); - --tblr-btn-disabled-color: var(--tblr-google-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-google { - --tblr-btn-color: var(--tblr-google); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-google); - --tblr-btn-hover-color: var(--tblr-google-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-google); - --tblr-btn-active-color: var(--tblr-google-fg); - --tblr-btn-active-bg: var(--tblr-google); - --tblr-btn-disabled-color: var(--tblr-google); - --tblr-btn-disabled-border-color: var(--tblr-google) -} - -.btn-youtube { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-youtube-fg); - --tblr-btn-bg: var(--tblr-youtube); - --tblr-btn-hover-color: var(--tblr-youtube-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-youtube-rgb), .8); - --tblr-btn-active-color: var(--tblr-youtube-fg); - --tblr-btn-active-bg: rgba(var(--tblr-youtube-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-youtube); - --tblr-btn-disabled-color: var(--tblr-youtube-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-youtube { - --tblr-btn-color: var(--tblr-youtube); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-youtube); - --tblr-btn-hover-color: var(--tblr-youtube-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-youtube); - --tblr-btn-active-color: var(--tblr-youtube-fg); - --tblr-btn-active-bg: var(--tblr-youtube); - --tblr-btn-disabled-color: var(--tblr-youtube); - --tblr-btn-disabled-border-color: var(--tblr-youtube) -} - -.btn-vimeo { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-vimeo-fg); - --tblr-btn-bg: var(--tblr-vimeo); - --tblr-btn-hover-color: var(--tblr-vimeo-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-vimeo-rgb), .8); - --tblr-btn-active-color: var(--tblr-vimeo-fg); - --tblr-btn-active-bg: rgba(var(--tblr-vimeo-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-vimeo); - --tblr-btn-disabled-color: var(--tblr-vimeo-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-vimeo { - --tblr-btn-color: var(--tblr-vimeo); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-vimeo); - --tblr-btn-hover-color: var(--tblr-vimeo-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-vimeo); - --tblr-btn-active-color: var(--tblr-vimeo-fg); - --tblr-btn-active-bg: var(--tblr-vimeo); - --tblr-btn-disabled-color: var(--tblr-vimeo); - --tblr-btn-disabled-border-color: var(--tblr-vimeo) -} - -.btn-dribbble { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-dribbble-fg); - --tblr-btn-bg: var(--tblr-dribbble); - --tblr-btn-hover-color: var(--tblr-dribbble-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-dribbble-rgb), .8); - --tblr-btn-active-color: var(--tblr-dribbble-fg); - --tblr-btn-active-bg: rgba(var(--tblr-dribbble-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-dribbble); - --tblr-btn-disabled-color: var(--tblr-dribbble-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-dribbble { - --tblr-btn-color: var(--tblr-dribbble); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-dribbble); - --tblr-btn-hover-color: var(--tblr-dribbble-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-dribbble); - --tblr-btn-active-color: var(--tblr-dribbble-fg); - --tblr-btn-active-bg: var(--tblr-dribbble); - --tblr-btn-disabled-color: var(--tblr-dribbble); - --tblr-btn-disabled-border-color: var(--tblr-dribbble) -} - -.btn-github { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-github-fg); - --tblr-btn-bg: var(--tblr-github); - --tblr-btn-hover-color: var(--tblr-github-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-github-rgb), .8); - --tblr-btn-active-color: var(--tblr-github-fg); - --tblr-btn-active-bg: rgba(var(--tblr-github-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-github); - --tblr-btn-disabled-color: var(--tblr-github-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-github { - --tblr-btn-color: var(--tblr-github); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-github); - --tblr-btn-hover-color: var(--tblr-github-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-github); - --tblr-btn-active-color: var(--tblr-github-fg); - --tblr-btn-active-bg: var(--tblr-github); - --tblr-btn-disabled-color: var(--tblr-github); - --tblr-btn-disabled-border-color: var(--tblr-github) -} - -.btn-instagram { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-instagram-fg); - --tblr-btn-bg: var(--tblr-instagram); - --tblr-btn-hover-color: var(--tblr-instagram-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-instagram-rgb), .8); - --tblr-btn-active-color: var(--tblr-instagram-fg); - --tblr-btn-active-bg: rgba(var(--tblr-instagram-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-instagram); - --tblr-btn-disabled-color: var(--tblr-instagram-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-instagram { - --tblr-btn-color: var(--tblr-instagram); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-instagram); - --tblr-btn-hover-color: var(--tblr-instagram-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-instagram); - --tblr-btn-active-color: var(--tblr-instagram-fg); - --tblr-btn-active-bg: var(--tblr-instagram); - --tblr-btn-disabled-color: var(--tblr-instagram); - --tblr-btn-disabled-border-color: var(--tblr-instagram) -} - -.btn-pinterest { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-pinterest-fg); - --tblr-btn-bg: var(--tblr-pinterest); - --tblr-btn-hover-color: var(--tblr-pinterest-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-pinterest-rgb), .8); - --tblr-btn-active-color: var(--tblr-pinterest-fg); - --tblr-btn-active-bg: rgba(var(--tblr-pinterest-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-pinterest); - --tblr-btn-disabled-color: var(--tblr-pinterest-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-pinterest { - --tblr-btn-color: var(--tblr-pinterest); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-pinterest); - --tblr-btn-hover-color: var(--tblr-pinterest-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-pinterest); - --tblr-btn-active-color: var(--tblr-pinterest-fg); - --tblr-btn-active-bg: var(--tblr-pinterest); - --tblr-btn-disabled-color: var(--tblr-pinterest); - --tblr-btn-disabled-border-color: var(--tblr-pinterest) -} - -.btn-vk { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-vk-fg); - --tblr-btn-bg: var(--tblr-vk); - --tblr-btn-hover-color: var(--tblr-vk-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-vk-rgb), .8); - --tblr-btn-active-color: var(--tblr-vk-fg); - --tblr-btn-active-bg: rgba(var(--tblr-vk-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-vk); - --tblr-btn-disabled-color: var(--tblr-vk-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-vk { - --tblr-btn-color: var(--tblr-vk); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-vk); - --tblr-btn-hover-color: var(--tblr-vk-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-vk); - --tblr-btn-active-color: var(--tblr-vk-fg); - --tblr-btn-active-bg: var(--tblr-vk); - --tblr-btn-disabled-color: var(--tblr-vk); - --tblr-btn-disabled-border-color: var(--tblr-vk) -} - -.btn-rss { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-rss-fg); - --tblr-btn-bg: var(--tblr-rss); - --tblr-btn-hover-color: var(--tblr-rss-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-rss-rgb), .8); - --tblr-btn-active-color: var(--tblr-rss-fg); - --tblr-btn-active-bg: rgba(var(--tblr-rss-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-rss); - --tblr-btn-disabled-color: var(--tblr-rss-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-rss { - --tblr-btn-color: var(--tblr-rss); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-rss); - --tblr-btn-hover-color: var(--tblr-rss-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-rss); - --tblr-btn-active-color: var(--tblr-rss-fg); - --tblr-btn-active-bg: var(--tblr-rss); - --tblr-btn-disabled-color: var(--tblr-rss); - --tblr-btn-disabled-border-color: var(--tblr-rss) -} - -.btn-flickr { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-flickr-fg); - --tblr-btn-bg: var(--tblr-flickr); - --tblr-btn-hover-color: var(--tblr-flickr-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-flickr-rgb), .8); - --tblr-btn-active-color: var(--tblr-flickr-fg); - --tblr-btn-active-bg: rgba(var(--tblr-flickr-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-flickr); - --tblr-btn-disabled-color: var(--tblr-flickr-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-flickr { - --tblr-btn-color: var(--tblr-flickr); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-flickr); - --tblr-btn-hover-color: var(--tblr-flickr-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-flickr); - --tblr-btn-active-color: var(--tblr-flickr-fg); - --tblr-btn-active-bg: var(--tblr-flickr); - --tblr-btn-disabled-color: var(--tblr-flickr); - --tblr-btn-disabled-border-color: var(--tblr-flickr) -} - -.btn-bitbucket { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-bitbucket-fg); - --tblr-btn-bg: var(--tblr-bitbucket); - --tblr-btn-hover-color: var(--tblr-bitbucket-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-bitbucket-rgb), .8); - --tblr-btn-active-color: var(--tblr-bitbucket-fg); - --tblr-btn-active-bg: rgba(var(--tblr-bitbucket-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-bitbucket); - --tblr-btn-disabled-color: var(--tblr-bitbucket-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-bitbucket { - --tblr-btn-color: var(--tblr-bitbucket); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-bitbucket); - --tblr-btn-hover-color: var(--tblr-bitbucket-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-bitbucket); - --tblr-btn-active-color: var(--tblr-bitbucket-fg); - --tblr-btn-active-bg: var(--tblr-bitbucket); - --tblr-btn-disabled-color: var(--tblr-bitbucket); - --tblr-btn-disabled-border-color: var(--tblr-bitbucket) -} - -.btn-tabler { - --tblr-btn-border-color: transparent; - --tblr-btn-hover-border-color: transparent; - --tblr-btn-active-border-color: transparent; - --tblr-btn-color: var(--tblr-tabler-fg); - --tblr-btn-bg: var(--tblr-tabler); - --tblr-btn-hover-color: var(--tblr-tabler-fg); - --tblr-btn-hover-bg: rgba(var(--tblr-tabler-rgb), .8); - --tblr-btn-active-color: var(--tblr-tabler-fg); - --tblr-btn-active-bg: rgba(var(--tblr-tabler-rgb), .8); - --tblr-btn-disabled-bg: var(--tblr-tabler); - --tblr-btn-disabled-color: var(--tblr-tabler-fg); - --tblr-btn-box-shadow: var(--tblr-shadow-button), var(--tblr-shadow-button-inset) -} - -.btn-outline-tabler { - --tblr-btn-color: var(--tblr-tabler); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: var(--tblr-tabler); - --tblr-btn-hover-color: var(--tblr-tabler-fg); - --tblr-btn-hover-border-color: transparent; - --tblr-btn-hover-bg: var(--tblr-tabler); - --tblr-btn-active-color: var(--tblr-tabler-fg); - --tblr-btn-active-bg: var(--tblr-tabler); - --tblr-btn-disabled-color: var(--tblr-tabler); - --tblr-btn-disabled-border-color: var(--tblr-tabler) -} - -.btn-ghost-primary { - --tblr-btn-color: var(--tblr-primary); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-primary-fg); - --tblr-btn-hover-bg: var(--tblr-primary); - --tblr-btn-hover-border-color: var(--tblr-primary); - --tblr-btn-active-color: var(--tblr-primary-fg); - --tblr-btn-active-bg: var(--tblr-primary); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-primary); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-secondary { - --tblr-btn-color: var(--tblr-secondary); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-secondary-fg); - --tblr-btn-hover-bg: var(--tblr-secondary); - --tblr-btn-hover-border-color: var(--tblr-secondary); - --tblr-btn-active-color: var(--tblr-secondary-fg); - --tblr-btn-active-bg: var(--tblr-secondary); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-secondary); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-success { - --tblr-btn-color: var(--tblr-success); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-success-fg); - --tblr-btn-hover-bg: var(--tblr-success); - --tblr-btn-hover-border-color: var(--tblr-success); - --tblr-btn-active-color: var(--tblr-success-fg); - --tblr-btn-active-bg: var(--tblr-success); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-success); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-info { - --tblr-btn-color: var(--tblr-info); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-info-fg); - --tblr-btn-hover-bg: var(--tblr-info); - --tblr-btn-hover-border-color: var(--tblr-info); - --tblr-btn-active-color: var(--tblr-info-fg); - --tblr-btn-active-bg: var(--tblr-info); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-info); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-warning { - --tblr-btn-color: var(--tblr-warning); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-warning-fg); - --tblr-btn-hover-bg: var(--tblr-warning); - --tblr-btn-hover-border-color: var(--tblr-warning); - --tblr-btn-active-color: var(--tblr-warning-fg); - --tblr-btn-active-bg: var(--tblr-warning); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-warning); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-danger { - --tblr-btn-color: var(--tblr-danger); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-danger-fg); - --tblr-btn-hover-bg: var(--tblr-danger); - --tblr-btn-hover-border-color: var(--tblr-danger); - --tblr-btn-active-color: var(--tblr-danger-fg); - --tblr-btn-active-bg: var(--tblr-danger); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-danger); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-light { - --tblr-btn-color: var(--tblr-light); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-light-fg); - --tblr-btn-hover-bg: var(--tblr-light); - --tblr-btn-hover-border-color: var(--tblr-light); - --tblr-btn-active-color: var(--tblr-light-fg); - --tblr-btn-active-bg: var(--tblr-light); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-light); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-dark { - --tblr-btn-color: var(--tblr-dark); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-dark-fg); - --tblr-btn-hover-bg: var(--tblr-dark); - --tblr-btn-hover-border-color: var(--tblr-dark); - --tblr-btn-active-color: var(--tblr-dark-fg); - --tblr-btn-active-bg: var(--tblr-dark); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-dark); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-muted { - --tblr-btn-color: var(--tblr-muted); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-muted-fg); - --tblr-btn-hover-bg: var(--tblr-muted); - --tblr-btn-hover-border-color: var(--tblr-muted); - --tblr-btn-active-color: var(--tblr-muted-fg); - --tblr-btn-active-bg: var(--tblr-muted); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-muted); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-blue { - --tblr-btn-color: var(--tblr-blue); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-blue-fg); - --tblr-btn-hover-bg: var(--tblr-blue); - --tblr-btn-hover-border-color: var(--tblr-blue); - --tblr-btn-active-color: var(--tblr-blue-fg); - --tblr-btn-active-bg: var(--tblr-blue); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-blue); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-azure { - --tblr-btn-color: var(--tblr-azure); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-azure-fg); - --tblr-btn-hover-bg: var(--tblr-azure); - --tblr-btn-hover-border-color: var(--tblr-azure); - --tblr-btn-active-color: var(--tblr-azure-fg); - --tblr-btn-active-bg: var(--tblr-azure); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-azure); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-indigo { - --tblr-btn-color: var(--tblr-indigo); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-indigo-fg); - --tblr-btn-hover-bg: var(--tblr-indigo); - --tblr-btn-hover-border-color: var(--tblr-indigo); - --tblr-btn-active-color: var(--tblr-indigo-fg); - --tblr-btn-active-bg: var(--tblr-indigo); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-indigo); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-purple { - --tblr-btn-color: var(--tblr-purple); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-purple-fg); - --tblr-btn-hover-bg: var(--tblr-purple); - --tblr-btn-hover-border-color: var(--tblr-purple); - --tblr-btn-active-color: var(--tblr-purple-fg); - --tblr-btn-active-bg: var(--tblr-purple); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-purple); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-pink { - --tblr-btn-color: var(--tblr-pink); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-pink-fg); - --tblr-btn-hover-bg: var(--tblr-pink); - --tblr-btn-hover-border-color: var(--tblr-pink); - --tblr-btn-active-color: var(--tblr-pink-fg); - --tblr-btn-active-bg: var(--tblr-pink); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-pink); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-red { - --tblr-btn-color: var(--tblr-red); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-red-fg); - --tblr-btn-hover-bg: var(--tblr-red); - --tblr-btn-hover-border-color: var(--tblr-red); - --tblr-btn-active-color: var(--tblr-red-fg); - --tblr-btn-active-bg: var(--tblr-red); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-red); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-orange { - --tblr-btn-color: var(--tblr-orange); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-orange-fg); - --tblr-btn-hover-bg: var(--tblr-orange); - --tblr-btn-hover-border-color: var(--tblr-orange); - --tblr-btn-active-color: var(--tblr-orange-fg); - --tblr-btn-active-bg: var(--tblr-orange); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-orange); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-yellow { - --tblr-btn-color: var(--tblr-yellow); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-yellow-fg); - --tblr-btn-hover-bg: var(--tblr-yellow); - --tblr-btn-hover-border-color: var(--tblr-yellow); - --tblr-btn-active-color: var(--tblr-yellow-fg); - --tblr-btn-active-bg: var(--tblr-yellow); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-yellow); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-lime { - --tblr-btn-color: var(--tblr-lime); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-lime-fg); - --tblr-btn-hover-bg: var(--tblr-lime); - --tblr-btn-hover-border-color: var(--tblr-lime); - --tblr-btn-active-color: var(--tblr-lime-fg); - --tblr-btn-active-bg: var(--tblr-lime); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-lime); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-green { - --tblr-btn-color: var(--tblr-green); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-green-fg); - --tblr-btn-hover-bg: var(--tblr-green); - --tblr-btn-hover-border-color: var(--tblr-green); - --tblr-btn-active-color: var(--tblr-green-fg); - --tblr-btn-active-bg: var(--tblr-green); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-green); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-teal { - --tblr-btn-color: var(--tblr-teal); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-teal-fg); - --tblr-btn-hover-bg: var(--tblr-teal); - --tblr-btn-hover-border-color: var(--tblr-teal); - --tblr-btn-active-color: var(--tblr-teal-fg); - --tblr-btn-active-bg: var(--tblr-teal); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-teal); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-cyan { - --tblr-btn-color: var(--tblr-cyan); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-cyan-fg); - --tblr-btn-hover-bg: var(--tblr-cyan); - --tblr-btn-hover-border-color: var(--tblr-cyan); - --tblr-btn-active-color: var(--tblr-cyan-fg); - --tblr-btn-active-bg: var(--tblr-cyan); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-cyan); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-facebook { - --tblr-btn-color: var(--tblr-facebook); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-facebook-fg); - --tblr-btn-hover-bg: var(--tblr-facebook); - --tblr-btn-hover-border-color: var(--tblr-facebook); - --tblr-btn-active-color: var(--tblr-facebook-fg); - --tblr-btn-active-bg: var(--tblr-facebook); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-facebook); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-twitter { - --tblr-btn-color: var(--tblr-twitter); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-twitter-fg); - --tblr-btn-hover-bg: var(--tblr-twitter); - --tblr-btn-hover-border-color: var(--tblr-twitter); - --tblr-btn-active-color: var(--tblr-twitter-fg); - --tblr-btn-active-bg: var(--tblr-twitter); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-twitter); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-linkedin { - --tblr-btn-color: var(--tblr-linkedin); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-linkedin-fg); - --tblr-btn-hover-bg: var(--tblr-linkedin); - --tblr-btn-hover-border-color: var(--tblr-linkedin); - --tblr-btn-active-color: var(--tblr-linkedin-fg); - --tblr-btn-active-bg: var(--tblr-linkedin); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-linkedin); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-google { - --tblr-btn-color: var(--tblr-google); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-google-fg); - --tblr-btn-hover-bg: var(--tblr-google); - --tblr-btn-hover-border-color: var(--tblr-google); - --tblr-btn-active-color: var(--tblr-google-fg); - --tblr-btn-active-bg: var(--tblr-google); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-google); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-youtube { - --tblr-btn-color: var(--tblr-youtube); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-youtube-fg); - --tblr-btn-hover-bg: var(--tblr-youtube); - --tblr-btn-hover-border-color: var(--tblr-youtube); - --tblr-btn-active-color: var(--tblr-youtube-fg); - --tblr-btn-active-bg: var(--tblr-youtube); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-youtube); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-vimeo { - --tblr-btn-color: var(--tblr-vimeo); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-vimeo-fg); - --tblr-btn-hover-bg: var(--tblr-vimeo); - --tblr-btn-hover-border-color: var(--tblr-vimeo); - --tblr-btn-active-color: var(--tblr-vimeo-fg); - --tblr-btn-active-bg: var(--tblr-vimeo); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-vimeo); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-dribbble { - --tblr-btn-color: var(--tblr-dribbble); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-dribbble-fg); - --tblr-btn-hover-bg: var(--tblr-dribbble); - --tblr-btn-hover-border-color: var(--tblr-dribbble); - --tblr-btn-active-color: var(--tblr-dribbble-fg); - --tblr-btn-active-bg: var(--tblr-dribbble); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-dribbble); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-github { - --tblr-btn-color: var(--tblr-github); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-github-fg); - --tblr-btn-hover-bg: var(--tblr-github); - --tblr-btn-hover-border-color: var(--tblr-github); - --tblr-btn-active-color: var(--tblr-github-fg); - --tblr-btn-active-bg: var(--tblr-github); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-github); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-instagram { - --tblr-btn-color: var(--tblr-instagram); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-instagram-fg); - --tblr-btn-hover-bg: var(--tblr-instagram); - --tblr-btn-hover-border-color: var(--tblr-instagram); - --tblr-btn-active-color: var(--tblr-instagram-fg); - --tblr-btn-active-bg: var(--tblr-instagram); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-instagram); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-pinterest { - --tblr-btn-color: var(--tblr-pinterest); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-pinterest-fg); - --tblr-btn-hover-bg: var(--tblr-pinterest); - --tblr-btn-hover-border-color: var(--tblr-pinterest); - --tblr-btn-active-color: var(--tblr-pinterest-fg); - --tblr-btn-active-bg: var(--tblr-pinterest); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-pinterest); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-vk { - --tblr-btn-color: var(--tblr-vk); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-vk-fg); - --tblr-btn-hover-bg: var(--tblr-vk); - --tblr-btn-hover-border-color: var(--tblr-vk); - --tblr-btn-active-color: var(--tblr-vk-fg); - --tblr-btn-active-bg: var(--tblr-vk); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-vk); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-rss { - --tblr-btn-color: var(--tblr-rss); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-rss-fg); - --tblr-btn-hover-bg: var(--tblr-rss); - --tblr-btn-hover-border-color: var(--tblr-rss); - --tblr-btn-active-color: var(--tblr-rss-fg); - --tblr-btn-active-bg: var(--tblr-rss); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-rss); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-flickr { - --tblr-btn-color: var(--tblr-flickr); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-flickr-fg); - --tblr-btn-hover-bg: var(--tblr-flickr); - --tblr-btn-hover-border-color: var(--tblr-flickr); - --tblr-btn-active-color: var(--tblr-flickr-fg); - --tblr-btn-active-bg: var(--tblr-flickr); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-flickr); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-bitbucket { - --tblr-btn-color: var(--tblr-bitbucket); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-bitbucket-fg); - --tblr-btn-hover-bg: var(--tblr-bitbucket); - --tblr-btn-hover-border-color: var(--tblr-bitbucket); - --tblr-btn-active-color: var(--tblr-bitbucket-fg); - --tblr-btn-active-bg: var(--tblr-bitbucket); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-bitbucket); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-ghost-tabler { - --tblr-btn-color: var(--tblr-tabler); - --tblr-btn-bg: transparent; - --tblr-btn-border-color: transparent; - --tblr-btn-hover-color: var(--tblr-tabler-fg); - --tblr-btn-hover-bg: var(--tblr-tabler); - --tblr-btn-hover-border-color: var(--tblr-tabler); - --tblr-btn-active-color: var(--tblr-tabler-fg); - --tblr-btn-active-bg: var(--tblr-tabler); - --tblr-btn-active-border-color: transparent; - --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --tblr-btn-disabled-color: var(--tblr-tabler); - --tblr-btn-disabled-bg: transparent; - --tblr-btn-disabled-border-color: transparent; - --tblr-gradient: none; - --tblr-btn-box-shadow: none -} - -.btn-group-sm>.btn, -.btn-sm { - --tblr-btn-line-height: 1.5; - --tblr-btn-icon-size: .75rem -} - -.btn-group-lg>.btn, -.btn-lg { - --tblr-btn-line-height: 1.5; - --tblr-btn-icon-size: 2rem -} - -.btn-pill { - padding-right: 1.5em; - padding-left: 1.5em; - border-radius: 10rem -} - -.btn-pill[class*=btn-icon] { - padding: .375rem 15px -} - -.btn-square { - border-radius: 0 -} - -.btn-icon { - min-width: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); - min-height: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); - padding-left: 0; - padding-right: 0 -} - -.btn-icon .icon { - margin: calc(-1 * var(--tblr-btn-padding-x)) -} - -.btn-list { - --tblr-list-gap: 0.5rem; - display: flex; - flex-wrap: wrap; - gap: var(--tblr-list-gap) -} - -.btn-floating { - position: fixed; - z-index: 1030; - bottom: 1.5rem; - right: 1.5rem; - border-radius: 100rem -} - -.btn-loading { - position: relative; - color: transparent !important; - text-shadow: none !important; - pointer-events: none -} - -.btn-loading>* { - opacity: 0 -} - -.btn-loading:after { - content: ""; - display: inline-block; - vertical-align: text-bottom; - border: 2px var(--tblr-border-style) currentColor; - border-right-color: transparent; - border-radius: 100rem; - color: var(--tblr-btn-color); - position: absolute; - width: var(--tblr-btn-icon-size); - height: var(--tblr-btn-icon-size); - left: calc(50% - var(--tblr-btn-icon-size)/ 2); - top: calc(50% - var(--tblr-btn-icon-size)/ 2); - animation: spinner-border .75s linear infinite -} - -.btn-action { - padding: 0; - border: 0; - color: var(--tblr-muted); - display: inline-flex; - width: 2rem; - height: 2rem; - align-items: center; - justify-content: center; - border-radius: var(--tblr-border-radius); - background: 0 0 -} - -.btn-action:after { - content: none -} - -.btn-action:focus { - outline: 0; - box-shadow: none -} - -.btn-action.show, -.btn-action:hover { - color: var(--tblr-body-color); - background: var(--tblr-active-bg) -} - -.btn-action.show { - color: var(--tblr-primary) -} - -.btn-action .icon { - margin: 0; - width: 1.25rem; - height: 1.25rem; - font-size: 1.25rem; - stroke-width: 1 -} - -.btn-actions { - display: flex -} - -.btn-group-vertical>.btn-check:checked+.btn, -.btn-group-vertical>.btn.active, -.btn-group-vertical>.btn:active, -.btn-group>.btn-check:checked+.btn, -.btn-group>.btn.active, -.btn-group>.btn:active { - z-index: 5 -} - -.btn-group-vertical>.btn-check:focus+.btn, -.btn-group-vertical>.btn:focus, -.btn-group-vertical>.btn:hover, -.btn-group>.btn-check:focus+.btn, -.btn-group>.btn:focus, -.btn-group>.btn:hover { - z-index: 1 -} - -.calendar { - display: block; - font-size: .765625rem; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: var(--tblr-border-radius) -} - -.calendar-nav { - display: flex; - align-items: center -} - -.calendar-title { - flex: 1; - text-align: center -} - -.calendar-body, -.calendar-header { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; - padding: .5rem 0 -} - -.calendar-header { - color: var(--tblr-muted) -} - -.calendar-date { - flex: 0 0 14.2857142857%; - max-width: 14.2857142857%; - padding: .2rem; - text-align: center; - border: 0 -} - -.calendar-date.next-month, -.calendar-date.prev-month { - opacity: .25 -} - -.calendar-date .date-item { - position: relative; - display: inline-block; - width: 1.4rem; - height: 1.4rem; - line-height: 1.4rem; - color: #66758c; - text-align: center; - text-decoration: none; - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - background: 0 0; - border: var(--tblr-border-width) var(--tblr-border-style) transparent; - border-radius: 100rem; - outline: 0; - transition: background .3s, border .3s, box-shadow .32s, color .3s -} - -@media (prefers-reduced-motion:reduce) { - .calendar-date .date-item { - transition: none - } -} - -.calendar-date .date-item:hover { - color: var(--tblr-primary); - text-decoration: none; - background: #fefeff; - border-color: var(--tblr-border-color) -} - -.calendar-date .date-today { - color: var(--tblr-primary); - border-color: var(--tblr-border-color) -} - -.calendar-range { - position: relative -} - -.calendar-range:before { - position: absolute; - top: 50%; - right: 0; - left: 0; - height: 1.4rem; - content: ""; - background: rgba(var(--tblr-primary-rgb), .1); - transform: translateY(-50%) -} - -.calendar-range.range-end .date-item, -.calendar-range.range-start .date-item { - color: #fff; - background: var(--tblr-primary); - border-color: var(--tblr-primary) -} - -.calendar-range.range-start:before { - left: 50% -} - -.calendar-range.range-end:before { - right: 50% -} - -.carousel-indicators-vertical { - left: auto; - top: 0; - margin: 0 1rem 0 0; - flex-direction: column -} - -.carousel-indicators-vertical [data-bs-target] { - margin: 3px 0 3px; - width: 3px; - height: 30px; - border: 0; - border-left: 10px var(--tblr-border-style) transparent; - border-right: 10px var(--tblr-border-style) transparent -} - -.carousel-indicators-dot [data-bs-target] { - width: .5rem; - height: .5rem; - border-radius: 100rem; - border: 10px var(--tblr-border-style) transparent; - margin: 0 -} - -.carousel-indicators-thumb [data-bs-target] { - width: 2rem; - height: auto; - background: no-repeat center/cover; - border: 0; - border-radius: var(--tblr-border-radius); - box-shadow: rgba(var(--tblr-body-color-rgb), .04) 0 2px 4px 0; - margin: 0 3px; - opacity: .75 -} - -@media (min-width:992px) { - .carousel-indicators-thumb [data-bs-target] { - width: 4rem - } -} - -.carousel-indicators-thumb [data-bs-target]:before { - content: ""; - padding-top: var(--tblr-aspect-ratio, 100%); - display: block -} - -.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target] { - margin: 3px 0 -} - -.carousel-caption-background { - background: red; - position: absolute; - left: 0; - right: 0; - bottom: 0; - height: 90%; - background: linear-gradient(0deg, rgba(24, 36, 51, .9), rgba(24, 36, 51, 0)) -} - -.card { - transition: transform .3s ease-out, opacity .3s ease-out, box-shadow .3s ease-out -} - -@media (prefers-reduced-motion:reduce) { - .card { - transition: none - } -} - -@media print { - .card { - border: none; - box-shadow: none - } -} - -a.card { - color: inherit -} - -a.card:hover { - text-decoration: none; - box-shadow: rgba(var(--tblr-body-color-rgb), .16) 0 2px 16px 0 -} - -.card .card { - box-shadow: none -} - -.card-borderless, -.card-borderless .card-footer, -.card-borderless .card-header { - border-color: transparent -} - -.card-stamp { - --tblr-stamp-size: 7rem; - position: absolute; - top: 0; - left: 0; - width: calc(var(--tblr-stamp-size) * 1); - height: calc(var(--tblr-stamp-size) * 1); - max-height: 100%; - border-top-right-radius: 4px; - opacity: .2; - overflow: hidden; - pointer-events: none -} - -.card-stamp-lg { - --tblr-stamp-size: 13rem -} - -.card-stamp-sm { - --tblr-stamp-size: 8rem -} - - -.card-stamp-icon { - background: var(--tblr-muted); - color: var(--tblr-card-bg, var(--tblr-bg-surface)); - display: flex; - align-items: center; - justify-content: center; - border-radius: 100rem; - width: calc(var(--tblr-stamp-size) * 1); - height: calc(var(--tblr-stamp-size) * 1); - position: relative; - top: calc(var(--tblr-stamp-size) * -.25); - right: calc(var(--tblr-stamp-size) * -.25); - font-size: calc(var(--tblr-stamp-size) * .75); - transform: rotate(10deg) -} - -.card-stamp-icon .icon { - stroke-width: 2; - width: calc(var(--tblr-stamp-size) * .75); - height: calc(var(--tblr-stamp-size) * .75) -} - -.card-img, -.card-img-start { - border-top-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); - border-bottom-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))) -} - -.card-img, -.card-img-end { - border-top-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); - border-bottom-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))) -} - -.card-img-overlay { - display: flex; - flex-direction: column; - justify-content: flex-end -} - -.card-img-overlay-dark { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, .6) 100%) -} - -.card-inactive { - pointer-events: none; - box-shadow: none -} - -.card-inactive .card-body { - opacity: .64 -} - -.card-active { - --tblr-card-border-color: var(--tblr-primary); - --tblr-card-bg: var(--tblr-active-bg) -} - -.card-btn { - display: flex; - align-items: center; - justify-content: center; - padding: 1rem 1.5rem; - text-align: center; - transition: background .3s; - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - flex: 1; - color: inherit; - font-weight: var(--tblr-font-weight-medium) -} - -@media (prefers-reduced-motion:reduce) { - .card-btn { - transition: none - } -} - -.card-btn:hover { - text-decoration: none; - background: rgba(var(--tblr-primary-rgb), .04) -} - -.card-btn+.card-btn { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.card-stacked { - --tblr-card-stacked-offset: .25rem; - position: relative -} - -.card-stacked:after { - position: absolute; - top: calc(-1 * var(--tblr-card-stacked-offset)); - right: var(--tblr-card-stacked-offset); - left: var(--tblr-card-stacked-offset); - height: var(--tblr-card-stacked-offset); - content: ""; - background: var(--tblr-card-bg, var(--tblr-bg-surface)); - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color); - border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0 -} - -.card-cover { - position: relative; - padding: 1rem 1.5rem; - background: #666 no-repeat center/cover -} - -.card-cover:before { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - content: ""; - background: rgba(24, 36, 51, .48) -} - -.card-cover:first-child, -.card-cover:first-child:before { - border-radius: 4px 4px 0 0 -} - -.card-cover-blurred:before { - -webkit-backdrop-filter: blur(2px); - backdrop-filter: blur(2px) -} - -.card-actions { - margin: -.5rem -.5rem -.5rem auto; - padding-left: .5rem -} - -.card-actions a { - text-decoration: none -} - -.card-header { - color: inherit; - display: flex; - align-items: center; - background: 0 0 -} - -.card-header:first-child { - border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0 -} - -.card-header-light { - border-bottom-color: transparent; - background: var(--tblr-bg-surface-tertiary) -} - -.card-header-tabs { - background: var(--tblr-bg-surface-tertiary); - flex: 1; - margin: calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1); - padding: calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0 -} - -.card-header-pills { - flex: 1; - margin-top: -.5rem; - margin-bottom: -.5rem -} - -.card-rotate-left { - transform: rotate(-1.5deg) -} - -.card-rotate-right { - transform: rotate(1.5deg) -} - -.card-link { - color: inherit -} - -.card-link:hover { - color: inherit; - text-decoration: none; - box-shadow: 0 1px 6px 0 rgba(0, 0, 0, .08) -} - -.card-link-rotate:hover { - transform: rotate(1.5deg); - opacity: 1 -} - -.card-link-pop:hover { - transform: translateY(-2px); - opacity: 1 -} - -.card-footer { - margin-top: auto -} - -.card-footer:last-child { - border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) -} - -.card-footer-transparent { - background: 0 0; - border-color: transparent; - padding-top: 0 -} - -.card-footer-borderless { - border-top: none -} - -.card-progress { - height: .25rem -} - -.card-progress:last-child { - border-radius: 0 0 2px 2px -} - -.card-progress:first-child { - border-radius: 2px 2px 0 0 -} - -.card-meta { - color: var(--tblr-muted) -} - -.card-title { - display: block; - margin: 0 0 1rem; - font-size: 1rem; - font-weight: var(--tblr-font-weight-medium); - line-height: 1.5rem -} - -a.card-title:hover { - color: inherit -} - -.card-header .card-title { - margin: 0 -} - -.card-subtitle { - margin-bottom: 1.25rem; - color: var(--tblr-muted); - font-weight: 400 -} - -.card-header .card-subtitle { - margin: 0 -} - -.card-title .card-subtitle { - margin: 0 0 0 .25rem; - font-size: .875rem -} - -.card-body { - position: relative -} - -.card-body>:last-child { - margin-bottom: 0 -} - -.card-sm>.card-body { - padding: 1rem -} - -@media (min-width:768px) { - .card-md>.card-body { - padding: 2.5rem - } -} - -@media (min-width:768px) { - .card-lg>.card-body { - padding: 2rem - } -} - -@media (min-width:992px) { - .card-lg>.card-body { - padding: 4rem - } -} - -@media print { - .card-body { - padding: 0 - } -} - -.card-body+.card-body { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.card-body-scrollable { - overflow: auto -} - -.card-options { - top: 1.5rem; - right: .75rem; - display: flex; - margin-left: auto -} - -.card-options-link { - display: inline-block; - min-width: 1rem; - margin-left: .25rem; - color: var(--tblr-muted) -} - -.card-status-top { - position: absolute; - top: 0; - right: 0; - left: 0; - height: 2px; - border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0 -} - -.card-status-start { - position: absolute; - right: auto; - bottom: 0; - width: 2px; - height: 100%; - border-radius: var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius) -} - -.card-status-bottom { - position: absolute; - top: initial; - bottom: 0; - width: 100%; - height: 2px; - border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) -} - -.card-table { - margin-bottom: 0 !important -} - -.card-table tr td:first-child, -.card-table tr th:first-child { - padding-left: 1.5rem; - border-left: 0 -} - -.card-table tr td:last-child, -.card-table tr th:last-child { - padding-right: 1.5rem; - border-right: 0 -} - -.card-table tbody tr:first-child, -.card-table tfoot tr:first-child, -.card-table thead tr:first-child { - border-top: 0 -} - -.card-table tbody tr:first-child td, -.card-table tbody tr:first-child th, -.card-table tfoot tr:first-child td, -.card-table tfoot tr:first-child th, -.card-table thead tr:first-child td, -.card-table thead tr:first-child th { - border-top: 0 -} - -.card-body+.card-table { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color) -} - -.card-code { - padding: 0 -} - -.card-code .highlight { - margin: 0; - border: 0 -} - -.card-code pre { - margin: 0 !important; - border: 0 !important -} - -.card-chart { - position: relative; - z-index: 1; - height: 3.5rem -} - -.card-avatar { - margin-left: auto; - margin-right: auto; - box-shadow: 0 0 0 .25rem var(--tblr-card-bg, var(--tblr-bg-surface)); - margin-top: calc(-1 * var(--tblr-avatar-size) * .5) -} - -.card-body+.card-list-group { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.card-list-group .list-group-item { - padding-right: 1.5rem; - padding-left: 1.5rem; - border-right: 0; - border-left: 0; - border-radius: 0 -} - -.card-list-group .list-group-item:last-child { - border-bottom: 0 -} - -.card-list-group .list-group-item:first-child { - border-top: 0 -} - -.card-tabs .nav-tabs { - position: relative; - z-index: 1000; - border-bottom: 0 -} - -.card-tabs .nav-tabs .nav-link { - background: var(--tblr-bg-surface-tertiary); - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) -} - -.card-tabs .nav-tabs .nav-link.active, -.card-tabs .nav-tabs .nav-link:active, -.card-tabs .nav-tabs .nav-link:hover { - border-color: var(--tblr-border-color-translucent); - color: var(--tblr-body-color) -} - -.card-tabs .nav-tabs .nav-link.active { - background: var(--tblr-card-bg, var(--tblr-bg-surface)); - border-bottom-color: transparent -} - -.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link { - border-top-left-radius: 0 -} - -.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link { - border-top-right-radius: 0 -} - -.card-tabs .nav-tabs .nav-item+.nav-item { - margin-left: calc(-1 * var(--tblr-border-width)) -} - -.card-tabs .nav-tabs-bottom { - margin-bottom: 0 -} - -.card-tabs .nav-tabs-bottom .nav-link { - margin-bottom: 0 -} - -.card-tabs .nav-tabs-bottom .nav-link.active { - border-top-color: transparent -} - -.card-tabs .nav-tabs-bottom .nav-item { - margin-top: calc(-1 * var(--tblr-border-width)); - margin-bottom: 0 -} - -.card-tabs .nav-tabs-bottom .nav-item .nav-link { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius) -} - -.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link { - border-bottom-left-radius: 0 -} - -.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link { - border-bottom-right-radius: 0 -} - -.card-tabs .card { - border-bottom-left-radius: 0 -} - -.card-tabs .nav-tabs+.tab-content .card { - border-bottom-left-radius: var(--tblr-card-border-radius); - border-top-left-radius: 0 -} - -.btn-close { - cursor: pointer -} - -.btn-close:focus { - outline: 0 -} - -.dropdown-menu { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.dropdown-menu.card { - padding: 0; - min-width: 25rem; - display: none -} - -.dropdown-menu.card.show { - display: flex -} - -.dropdown-item { - min-width: 11rem; - display: flex; - align-items: center; - margin: 0; - line-height: 1.4285714286 -} - -.dropdown-item-icon { - width: 1.25rem !important; - height: 1.25rem !important; - margin-right: .5rem; - color: var(--tblr-muted); - opacity: .7; - text-align: center -} - -.dropdown-item-indicator { - margin-right: .5rem; - margin-left: -.25rem; - height: 1.25rem; - display: inline-flex; - line-height: 1; - vertical-align: bottom; - align-items: center -} - -.dropdown-header { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - padding-bottom: .25rem; - pointer-events: none -} - -.dropdown-menu-scrollable { - height: auto; - max-height: 13rem; - overflow-x: hidden -} - -.dropdown-menu-column { - min-width: 11rem -} - -.dropdown-menu-column .dropdown-item { - min-width: 0 -} - -.dropdown-menu-columns { - display: flex; - flex: 0 .25rem -} - -.dropdown-menu-arrow:before { - content: ""; - position: absolute; - top: -.25rem; - left: .75rem; - display: block; - background: inherit; - width: 14px; - height: 14px; - transform: rotate(45deg); - transform-origin: center; - border: 1px solid; - border-color: inherit; - z-index: -1; - clip: rect(0, 9px, 9px, 0) -} - -.dropdown-menu-arrow.dropdown-menu-end:before { - right: .75rem; - left: auto -} - -.dropend>.dropdown-menu { - margin-top: calc(-.25rem - 1px); - margin-left: -.25rem -} - -.dropend .dropdown-toggle:after { - margin-left: auto -} - -.dropdown-menu-card { - padding: 0 -} - -.dropdown-menu-card>.card { - margin: 0; - border: 0; - box-shadow: none -} - -.datagrid { - --tblr-datagrid-padding: 1.5rem; - --tblr-datagrid-item-width: 15rem; - display: grid; - grid-gap: var(--tblr-datagrid-padding); - grid-template-columns: repeat(auto-fit, minmax(var(--tblr-datagrid-item-width), 1fr)) -} - -.datagrid-title { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - margin-bottom: .25rem -} - -.empty { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - height: 100%; - padding: 1rem; - text-align: center -} - -@media (min-width:768px) { - .empty { - padding: 3rem - } -} - -.empty-icon { - margin: 0 0 1rem; - width: 3rem; - height: 3rem; - line-height: 1; - color: var(--tblr-muted) -} - -.empty-icon svg { - width: 100%; - height: 100% -} - -.empty-img { - margin: 0 0 2rem; - line-height: 1 -} - -.empty-img img { - height: 8rem; - width: auto -} - -.empty-header { - margin: 0 0 1rem; - font-size: 4rem; - font-weight: var(--tblr-font-weight-light); - line-height: 1; - color: var(--tblr-muted) -} - -.empty-title { - font-size: 1.25rem; - line-height: 1.75rem; - font-weight: var(--tblr-font-weight-bold) -} - -.empty-subtitle, -.empty-title { - margin: 0 0 .5rem -} - -.empty-action { - margin-top: 1.5rem -} - -.empty-bordered { - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: var(--tblr-border-radius) -} - -.row>* { - min-width: 0 -} - -.col-separator { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.container-slim { - --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); - --tblr-gutter-y: 0; - width: 100%; - padding-right: calc(var(--tblr-gutter-x) * .5); - padding-left: calc(var(--tblr-gutter-x) * .5); - margin-right: auto; - margin-left: auto; - max-width: 16rem -} - -.container-tight { - --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); - --tblr-gutter-y: 0; - width: 100%; - padding-right: calc(var(--tblr-gutter-x) * .5); - padding-left: calc(var(--tblr-gutter-x) * .5); - margin-right: auto; - margin-left: auto; - max-width: 30rem -} - -.container-narrow { - --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); - --tblr-gutter-y: 0; - width: 100%; - padding-right: calc(var(--tblr-gutter-x) * .5); - padding-left: calc(var(--tblr-gutter-x) * .5); - margin-right: auto; - margin-left: auto; - max-width: 45rem -} - -.row-0 { - margin-right: 0; - margin-left: 0 -} - -.row-0>.col, -.row-0>[class*=col-] { - padding-right: 0; - padding-left: 0 -} - -.row-0 .card { - margin-bottom: 0 -} - -.row-sm { - margin-right: -.375rem; - margin-left: -.375rem -} - -.row-sm>.col, -.row-sm>[class*=col-] { - padding-right: .375rem; - padding-left: .375rem -} - -.row-sm .card { - margin-bottom: .75rem -} - -.row-md { - margin-right: -1.5rem; - margin-left: -1.5rem -} - -.row-md>.col, -.row-md>[class*=col-] { - padding-right: 1.5rem; - padding-left: 1.5rem -} - -.row-md .card { - margin-bottom: 3rem -} - -.row-lg { - margin-right: -3rem; - margin-left: -3rem -} - -.row-lg>.col, -.row-lg>[class*=col-] { - padding-right: 3rem; - padding-left: 3rem -} - -.row-lg .card { - margin-bottom: 6rem -} - -.row-deck>.col, -.row-deck>[class*=col-] { - display: flex; - align-items: stretch -} - -.row-deck>.col .card, -.row-deck>[class*=col-] .card { - flex: 1 1 auto -} - -.row-cards { - --tblr-gutter-x: var(--tblr-page-padding); - --tblr-gutter-y: var(--tblr-page-padding); - min-width: 0 -} - -.row-cards .row-cards { - flex: 1 -} - -.space-y { - display: flex; - flex-direction: column; - gap: 1rem -} - -.space-x { - display: flex; - gap: 1rem -} - -.space-y-0 { - display: flex; - flex-direction: column; - gap: 0 -} - -.space-x-0 { - display: flex; - gap: 0 -} - -.space-y-1 { - display: flex; - flex-direction: column; - gap: .25rem -} - -.space-x-1 { - display: flex; - gap: .25rem -} - -.space-y-2 { - display: flex; - flex-direction: column; - gap: .5rem -} - -.space-x-2 { - display: flex; - gap: .5rem -} - -.space-y-3 { - display: flex; - flex-direction: column; - gap: 1rem -} - -.space-x-3 { - display: flex; - gap: 1rem -} - -.space-y-4 { - display: flex; - flex-direction: column; - gap: 1.5rem -} - -.space-x-4 { - display: flex; - gap: 1.5rem -} - -.space-y-5 { - display: flex; - flex-direction: column; - gap: 2rem -} - -.space-x-5 { - display: flex; - gap: 2rem -} - -.space-y-6 { - display: flex; - flex-direction: column; - gap: 3rem -} - -.space-x-6 { - display: flex; - gap: 3rem -} - -.space-y-7 { - display: flex; - flex-direction: column; - gap: 5rem -} - -.space-x-7 { - display: flex; - gap: 5rem -} - -.space-y-8 { - display: flex; - flex-direction: column; - gap: 8rem -} - -.space-x-8 { - display: flex; - gap: 8rem -} - -.divide-y>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y>:not(template):not(:first-child) { - padding-top: 1rem !important -} - -.divide-y>:not(template):not(:last-child) { - padding-bottom: 1rem !important -} - -.divide-x>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x>:not(template):not(:first-child) { - padding-left: 1rem !important -} - -.divide-x>:not(template):not(:last-child) { - padding-right: 1rem !important -} - -.divide-y-0>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-0>:not(template):not(:first-child) { - padding-top: 0 !important -} - -.divide-y-0>:not(template):not(:last-child) { - padding-bottom: 0 !important -} - -.divide-x-0>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-0>:not(template):not(:first-child) { - padding-left: 0 !important -} - -.divide-x-0>:not(template):not(:last-child) { - padding-right: 0 !important -} - -.divide-y-1>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-1>:not(template):not(:first-child) { - padding-top: .25rem !important -} - -.divide-y-1>:not(template):not(:last-child) { - padding-bottom: .25rem !important -} - -.divide-x-1>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-1>:not(template):not(:first-child) { - padding-left: .25rem !important -} - -.divide-x-1>:not(template):not(:last-child) { - padding-right: .25rem !important -} - -.divide-y-2>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-2>:not(template):not(:first-child) { - padding-top: .5rem !important -} - -.divide-y-2>:not(template):not(:last-child) { - padding-bottom: .5rem !important -} - -.divide-x-2>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-2>:not(template):not(:first-child) { - padding-left: .5rem !important -} - -.divide-x-2>:not(template):not(:last-child) { - padding-right: .5rem !important -} - -.divide-y-3>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-3>:not(template):not(:first-child) { - padding-top: 1rem !important -} - -.divide-y-3>:not(template):not(:last-child) { - padding-bottom: 1rem !important -} - -.divide-x-3>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-3>:not(template):not(:first-child) { - padding-left: 1rem !important -} - -.divide-x-3>:not(template):not(:last-child) { - padding-right: 1rem !important -} - -.divide-y-4>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-4>:not(template):not(:first-child) { - padding-top: 1.5rem !important -} - -.divide-y-4>:not(template):not(:last-child) { - padding-bottom: 1.5rem !important -} - -.divide-x-4>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-4>:not(template):not(:first-child) { - padding-left: 1.5rem !important -} - -.divide-x-4>:not(template):not(:last-child) { - padding-right: 1.5rem !important -} - -.divide-y-5>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-5>:not(template):not(:first-child) { - padding-top: 2rem !important -} - -.divide-y-5>:not(template):not(:last-child) { - padding-bottom: 2rem !important -} - -.divide-x-5>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-5>:not(template):not(:first-child) { - padding-left: 2rem !important -} - -.divide-x-5>:not(template):not(:last-child) { - padding-right: 2rem !important -} - -.divide-y-6>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-6>:not(template):not(:first-child) { - padding-top: 3rem !important -} - -.divide-y-6>:not(template):not(:last-child) { - padding-bottom: 3rem !important -} - -.divide-x-6>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-6>:not(template):not(:first-child) { - padding-left: 3rem !important -} - -.divide-x-6>:not(template):not(:last-child) { - padding-right: 3rem !important -} - -.divide-y-7>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-7>:not(template):not(:first-child) { - padding-top: 5rem !important -} - -.divide-y-7>:not(template):not(:last-child) { - padding-bottom: 5rem !important -} - -.divide-x-7>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-7>:not(template):not(:first-child) { - padding-left: 5rem !important -} - -.divide-x-7>:not(template):not(:last-child) { - padding-right: 5rem !important -} - -.divide-y-8>:not(template)~:not(template) { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-y-8>:not(template):not(:first-child) { - padding-top: 8rem !important -} - -.divide-y-8>:not(template):not(:last-child) { - padding-bottom: 8rem !important -} - -.divide-x-8>:not(template)~:not(template) { - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important -} - -.divide-x-8>:not(template):not(:first-child) { - padding-left: 8rem !important -} - -.divide-x-8>:not(template):not(:last-child) { - padding-right: 8rem !important -} - -.divide-y-fill { - display: flex; - flex-direction: column; - height: 100% -} - -.divide-y-fill>:not(template) { - flex: 1; - display: flex; - justify-content: center; - flex-direction: column -} - -.icon { - --tblr-icon-size: 1.25rem; - width: var(--tblr-icon-size); - height: var(--tblr-icon-size); - font-size: var(--tblr-icon-size); - vertical-align: bottom; - stroke-width: 1.5 -} - -.icon:hover { - text-decoration: none -} - -.icon-inline { - --tblr-icon-size: 1rem; - vertical-align: -.2rem -} - -.icon-filled { - fill: currentColor -} - -.icon-sm { - --tblr-icon-size: 1rem; - stroke-width: 1 -} - -.icon-md { - --tblr-icon-size: 2.5rem; - stroke-width: 1 -} - -.icon-lg { - --tblr-icon-size: 3.5rem; - stroke-width: 1 -} - -.icon-pulse { - transition: all .15s ease 0s; - animation: pulse 2s ease infinite; - animation-fill-mode: both -} - -.icon-tada { - transition: all .15s ease 0s; - animation: tada 3s ease infinite; - animation-fill-mode: both -} - -.icon-rotate { - transition: all .15s ease 0s; - animation: rotate-360 3s linear infinite; - animation-fill-mode: both -} - -.img-responsive { - --tblr-img-responsive-ratio: 75%; - background: no-repeat center/cover; - padding-top: var(--tblr-img-responsive-ratio) -} - -.img-responsive-grid { - padding-top: calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2) -} - -.img-responsive-1x1 { - --tblr-img-responsive-ratio: 100% -} - -.img-responsive-2x1 { - --tblr-img-responsive-ratio: 50% -} - -.img-responsive-1x2 { - --tblr-img-responsive-ratio: 200% -} - -.img-responsive-3x1 { - --tblr-img-responsive-ratio: 33.3333333333% -} - -.img-responsive-1x3 { - --tblr-img-responsive-ratio: 300% -} - -.img-responsive-4x3 { - --tblr-img-responsive-ratio: 75% -} - -.img-responsive-3x4 { - --tblr-img-responsive-ratio: 133.3333333333% -} - -.img-responsive-16x9 { - --tblr-img-responsive-ratio: 56.25% -} - -.img-responsive-9x16 { - --tblr-img-responsive-ratio: 177.7777777778% -} - -.img-responsive-21x9 { - --tblr-img-responsive-ratio: 42.8571428571% -} - -.img-responsive-9x21 { - --tblr-img-responsive-ratio: 233.3333333333% -} - -textarea[cols] { - height: auto -} - -.col-form-label, -.form-label { - display: block; - font-weight: var(--tblr-font-weight-medium) -} - -.col-form-label.required:after, -.form-label.required:after { - content: "*"; - margin-left: .25rem; - color: #d63939 -} - -.form-label-description { - float: right; - font-weight: var(--tblr-font-weight-normal); - color: var(--tblr-muted) -} - -.form-hint { - display: block; - color: var(--tblr-muted) -} - -.form-hint:last-child { - margin-bottom: 0 -} - -.form-hint+.form-control { - margin-top: .25rem -} - -.form-label+.form-hint { - margin-top: -.25rem -} - -.form-control+.form-hint, -.form-select+.form-hint, -.input-group+.form-hint { - margin-top: .5rem -} - -.form-select:-moz-focusring { - color: var(--tblr-body-color) -} - -.form-control:-webkit-autofill { - box-shadow: 0 0 0 1000px var(--tblr-body-bg) inset; - color: var(--tblr-body-color); - -webkit-text-fill-color: var(--tblr-body-color) -} - -.form-control.disabled, -.form-control:disabled { - color: var(--tblr-muted); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.form-control[size] { - width: auto -} - -.form-control-light { - background-color: var(--tblr-gray-100); - border-color: transparent -} - -.form-control-dark { - background-color: rgba(0, 0, 0, .1); - color: #fff; - border-color: transparent -} - -.form-control-dark:focus { - background-color: rgba(0, 0, 0, .1); - box-shadow: none; - border-color: rgba(255, 255, 255, .24) -} - -.form-control-dark::-webkit-input-placeholder { - color: rgba(255, 255, 255, .6) -} - -.form-control-dark:-ms-input-placeholder { - color: rgba(255, 255, 255, .6) -} - -.form-control-dark::-ms-input-placeholder { - color: rgba(255, 255, 255, .6) -} - -.form-control-dark::placeholder { - color: rgba(255, 255, 255, .6) -} - -.form-control-rounded { - border-radius: 10rem -} - -.form-control-flush { - padding: 0; - background: 0 0 !important; - border-color: transparent !important; - resize: none; - box-shadow: none !important; - line-height: inherit -} - -.form-footer { - margin-top: 2rem -} - -.form-fieldset { - padding: 1rem; - margin-bottom: 1rem; - background: var(--tblr-body-bg); - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: var(--tblr-border-radius) -} - -.form-help { - display: inline-flex; - font-weight: var(--tblr-font-weight-bold); - align-items: center; - justify-content: center; - width: 1.125rem; - height: 1.125rem; - font-size: .75rem; - color: var(--tblr-muted); - text-align: center; - text-decoration: none; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background: var(--tblr-gray-100); - border-radius: 100rem; - transition: background-color .3s, color .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-help { - transition: none - } -} - -.form-help:hover, -.form-help[aria-describedby] { - color: #fff; - background: var(--tblr-primary) -} - -.input-group-link { - font-size: .75rem -} - -.input-group-flat:focus-within { - box-shadow: 0 0 0 .25rem rgba(32, 107, 196, .25); - border-radius: var(--tblr-border-radius) -} - -.input-group-flat:focus-within .form-control, -.input-group-flat:focus-within .input-group-text { - border-color: #90b5e2 !important -} - - - -.input-group-flat .form-control:not(:last-child) { - border-right: 0 -} - -.input-group-flat .form-control:not(:first-child) { - border-left: 0 -} - -.input-group-flat .input-group-text { - background: var(--tblr-bg-forms); - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .input-group-flat .input-group-text { - transition: none - } -} - -.input-group-flat .input-group-text:first-child { - padding-right: 0 -} - -.input-group-flat .input-group-text:last-child { - padding-left: 0 -} - -.form-file-button { - margin-left: 0; - border-left: 0 -} - -.input-icon { - position: relative -} - -.input-icon .form-control:not(:last-child), -.input-icon .form-select:not(:last-child) { - padding-right: 2.5rem -} - -.input-icon .form-control:not(:first-child), -.input-icon .form-select:not(:last-child) { - padding-left: 2.5rem -} - -.input-icon-addon { - position: absolute; - top: 0; - bottom: 0; - left: 0; - display: flex; - align-items: center; - justify-content: center; - min-width: 2.5rem; - color: var(--tblr-icon-color); - pointer-events: none; - font-size: 1.2em -} - -.input-icon-addon:last-child { - right: 0; - left: auto -} - -.form-colorinput { - position: relative; - display: inline-block; - margin: 0; - line-height: 1; - cursor: pointer -} - -.form-colorinput-input { - position: absolute; - z-index: -1; - opacity: 0 -} - -.form-colorinput-color { - display: block; - width: 1.5rem; - height: 1.5rem; - color: #fff; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - border-radius: 3px; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05) -} - -.form-colorinput-color:before { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - content: ""; - background: no-repeat center center/1rem; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); - opacity: 0; - transition: opacity .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-colorinput-color:before { - transition: none - } -} - -.form-colorinput-input:checked~.form-colorinput-color:before { - opacity: 1 -} - -.form-colorinput-input:focus~.form-colorinput-color { - border-color: var(--tblr-primary); - box-shadow: 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.form-colorinput-light .form-colorinput-color:before { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e") -} - -.form-imagecheck { - position: relative; - margin: 0; - cursor: pointer -} - -.form-imagecheck-input { - position: absolute; - z-index: -1; - opacity: 0 -} - -.form-imagecheck-figure { - position: relative; - display: block; - margin: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: 3px -} - -.form-imagecheck-input:focus~.form-imagecheck-figure { - border-color: var(--tblr-primary); - box-shadow: 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.form-imagecheck-input:checked~.form-imagecheck-figure { - border-color: var(--tblr-primary) -} - -.form-imagecheck-figure:before { - position: absolute; - top: .25rem; - left: .25rem; - z-index: 1; - display: block; - width: 1rem; - height: 1rem; - color: #fff; - pointer-events: none; - content: ""; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background: var(--tblr-bg-forms); - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: var(--tblr-border-radius); - transition: opacity .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-imagecheck-figure:before { - transition: none - } -} - -.form-imagecheck-input:checked~.form-imagecheck-figure:before { - background-color: var(--tblr-primary); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); - background-repeat: repeat; - background-position: center; - background-size: 1rem; - border-color: var(--tblr-border-color-translucent) -} - -.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before { - border-radius: 50% -} - -.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e") -} - -.form-imagecheck-image { - max-width: 100%; - display: block; - opacity: .64; - transition: opacity .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-imagecheck-image { - transition: none - } -} - -.form-imagecheck-image:first-child { - border-top-left-radius: 2px; - border-top-right-radius: 2px -} - -.form-imagecheck-image:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px -} - -.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image, -.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image, -.form-imagecheck:hover .form-imagecheck-image { - opacity: 1 -} - -.form-imagecheck-caption { - padding: .25rem; - font-size: .765625rem; - color: var(--tblr-muted); - text-align: center; - transition: color .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-imagecheck-caption { - transition: none - } -} - -.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption, -.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption, -.form-imagecheck:hover .form-imagecheck-caption { - color: var(--tblr-body-color) -} - -.form-selectgroup { - display: inline-flex; - margin: 0 -.5rem -.5rem 0; - flex-wrap: wrap -} - -.form-selectgroup .form-selectgroup-item { - margin: 0 .5rem .5rem 0 -} - -.form-selectgroup-vertical { - flex-direction: column -} - -.form-selectgroup-item { - display: block; - position: relative -} - -.form-selectgroup-input { - position: absolute; - top: 0; - left: 0; - z-index: -1; - opacity: 0 -} - -.form-selectgroup-label { - position: relative; - display: block; - min-width: calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2)); - margin: 0; - padding: .4375rem .75rem; - font-size: .875rem; - line-height: 1.4285714286; - color: var(--tblr-muted); - background: var(--tblr-bg-forms); - text-align: center; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - border-radius: 3px; - transition: border-color .3s, background .3s, color .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-selectgroup-label { - transition: none - } -} - -.form-selectgroup-label .icon:only-child { - margin: 0 -.25rem -} - -.form-selectgroup-label:hover { - color: var(--tblr-body-color) -} - -.form-selectgroup-check { - display: inline-block; - width: 1rem; - height: 1rem; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - vertical-align: middle -} - -.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check { - border-radius: var(--tblr-border-radius) -} - -.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check { - border-radius: 50% -} - -.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check { - background-color: var(--tblr-primary); - background-repeat: repeat; - background-position: center; - background-size: 1rem; - border-color: var(--tblr-border-color-translucent) -} - -.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e") -} - -.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e") -} - -.form-selectgroup-check-floated { - position: absolute; - top: .4375rem; - right: .4375rem -} - -.form-selectgroup-input:checked+.form-selectgroup-label { - z-index: 1; - color: var(--tblr-primary); - background: rgba(var(--tblr-primary-rgb), .04); - border-color: var(--tblr-primary) -} - -.form-selectgroup-input:focus+.form-selectgroup-label { - z-index: 2; - color: var(--tblr-primary); - border-color: var(--tblr-primary); - box-shadow: 0 0 0 .25rem rgba(32, 107, 196, .25) -} - -.form-selectgroup-boxes .form-selectgroup-label { - text-align: left; - padding: 1.5rem 1rem; - color: inherit -} - -.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label { - color: inherit -} - -.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title { - color: var(--tblr-primary) -} - -.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content { - opacity: 1 -} - -.form-selectgroup-pills { - flex-wrap: wrap; - align-items: flex-start -} - -.form-selectgroup-pills .form-selectgroup-item { - flex-grow: 0 -} - -.form-selectgroup-pills .form-selectgroup-label { - border-radius: 50px -} - -.form-control-color::-webkit-color-swatch { - border: none -} - -[type=search]::-webkit-search-cancel-button { - -webkit-appearance: none -} - -.form-control::-webkit-file-upload-button { - background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)) -} - -.form-control::file-selector-button { - background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)) -} - -.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { - background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)) -} - -.form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)) -} - -.form-check { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label { - color: var(--tblr-muted) -} - -.form-check .form-check-label-off { - color: var(--tblr-muted) -} - -.form-check .form-check-input:checked~.form-check-label-off { - display: none -} - -.form-check .form-check-input:not(:checked)~.form-check-label-on { - display: none -} - -.form-check-input { - background-size: 1rem; - margin-top: .125rem -} - -.form-switch .form-check-input { - transition: background-color .3s, background-position .3s -} - -@media (prefers-reduced-motion:reduce) { - .form-switch .form-check-input { - transition: none - } -} - -.form-check-label { - display: block -} - -.form-check-label.required:after { - content: "*"; - margin-left: .25rem; - color: #d63939 -} - -.form-check-description { - display: block; - color: var(--tblr-muted); - font-size: .75rem; - margin-top: .25rem -} - -.form-check-single { - margin: 0 -} - -.form-check-single .form-check-input { - margin: 0 -} - -.form-switch .form-check-input { - height: 1.125rem; - margin-top: .0625rem -} - -.form-switch-lg { - padding-left: 3.5rem; - min-height: 1.5rem -} - -.form-switch-lg .form-check-input { - height: 1.5rem; - width: 2.75rem; - background-size: 1.5rem; - margin-left: -3.5rem -} - -.form-switch-lg .form-check-label { - padding-top: .125rem -} - -.form-check-input:checked { - border: none -} - -.form-control.is-invalid-lite, -.form-control.is-valid-lite, -.form-select.is-invalid-lite, -.form-select.is-valid-lite { - border-color: var(--tblr-border-color) !important -} - -.legend { - --tblr-legend-size: 0.75em; - display: inline-block; - background: var(--tblr-border-color); - width: var(--tblr-legend-size); - height: var(--tblr-legend-size); - border-radius: var(--tblr-border-radius-sm) -} - -.list-group { - margin-left: 0; - margin-right: 0 -} - -.list-group-header { - background: var(--tblr-bg-surface-tertiary); - padding: .5rem 1.5rem; - font-size: .75rem; - font-weight: var(--tblr-font-weight-medium); - line-height: 1; - text-transform: uppercase; - color: var(--tblr-muted); - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.list-group-flush>.list-group-header:last-child { - border-bottom-width: 0 -} - -.list-group-item { - background-color: inherit -} - -.list-group-item.active { - background-color: rgba(var(--tblr-muted-rgb), .04); - border-left-color: #206bc4; - border-left-width: 2px -} - -.list-group-item:active, -.list-group-item:focus, -.list-group-item:hover { - background-color: rgba(var(--tblr-muted-rgb), .04) -} - -.list-group-item.disabled, -.list-group-item:disabled { - color: #929dab; - background-color: rgba(var(--tblr-muted-rgb), .04) -} - -.list-bordered .list-item { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - margin-top: -1px -} - -.list-bordered .list-item:first-child { - border-top: none -} - -.list-group-hoverable .list-group-item-actions { - opacity: 0; - transition: opacity .3s -} - -@media (prefers-reduced-motion:reduce) { - .list-group-hoverable .list-group-item-actions { - transition: none - } -} - -.list-group-hoverable .list-group-item-actions.show, -.list-group-hoverable .list-group-item:hover .list-group-item-actions { - opacity: 1 -} - -.list-group-transparent { - --tblr-list-group-border-radius: 0; - margin: 0 -1.5rem -} - -.list-group-transparent .list-group-item { - background: 0 0; - border: 0 -} - -.list-group-transparent .list-group-item .icon { - color: var(--tblr-muted) -} - -.list-group-transparent .list-group-item.active { - font-weight: var(--tblr-font-weight-bold); - color: inherit; - background: var(--tblr-active-bg) -} - -.list-group-transparent .list-group-item.active .icon { - color: inherit -} - -.list-separated-item { - padding: 1rem 0 -} - -.list-separated-item:first-child { - padding-top: 0 -} - -.list-separated-item:last-child { - padding-bottom: 0 -} - -.list-separated-item+.list-separated-item { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.list-inline-item:not(:last-child) { - margin-right: auto; - -webkit-margin-end: .5rem; - margin-inline-end: .5rem -} - -.list-inline-dots .list-inline-item+.list-inline-item:before { - content: " · "; - -webkit-margin-end: .5rem; - margin-inline-end: .5rem -} - -.loader { - position: relative; - display: block; - width: 2.5rem; - height: 2.5rem; - color: #206bc4; - vertical-align: middle -} - -.loader:after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - content: ""; - border: 1px var(--tblr-border-style); - border-color: transparent; - border-top-color: currentColor; - border-left-color: currentColor; - border-radius: 100rem; - animation: rotate-360 .6s linear; - animation-iteration-count: infinite -} - -.dimmer { - position: relative -} - -.dimmer .loader { - position: absolute; - top: 50%; - right: 0; - left: 0; - display: none; - margin: 0 auto; - transform: translateY(-50%) -} - -.dimmer.active .loader { - display: block -} - -.dimmer.active .dimmer-content { - pointer-events: none; - opacity: .1 -} - -@keyframes animated-dots { - 0% { - transform: translateX(-100%) - } -} - -.animated-dots { - display: inline-block; - overflow: hidden; - vertical-align: bottom -} - -.animated-dots:after { - display: inline-block; - content: "..."; - animation: animated-dots 1.2s steps(4, jump-none) infinite -} - -.modal-content .btn-close { - position: absolute; - top: 0; - right: 0; - width: 3.5rem; - height: 3.5rem; - margin: 0; - padding: 0; - z-index: 10 -} - -.modal-body { - scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .16) transparent -} - -.modal-body::-webkit-scrollbar { - width: 1rem; - height: 1rem; - -webkit-transition: background .3s; - transition: background .3s -} - -@media (prefers-reduced-motion:reduce) { - .modal-body::-webkit-scrollbar { - -webkit-transition: none; - transition: none - } -} - -.modal-body::-webkit-scrollbar-thumb { - border-radius: 1rem; - border: 5px solid transparent; - box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .16) -} - -.modal-body::-webkit-scrollbar-track { - background: 0 0 -} - -.modal-body:hover::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), .32) -} - -.modal-body::-webkit-scrollbar-corner { - background: 0 0 -} - -.modal-body .modal-title { - margin-bottom: 1rem -} - -.modal-body+.modal-body { - border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.modal-status { - position: absolute; - top: 0; - left: 0; - right: 0; - height: 2px; - background: var(--tblr-muted); - border-radius: var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0 -} - -.modal-header { - align-items: center; - min-height: 3.5rem; - background: 0 0; - padding: 0 3.5rem 0 1.5rem -} - -.modal-title { - font-size: 1rem; - font-weight: var(--tblr-font-weight-bold); - line-height: 1.4285714286 -} - -.modal-footer { - padding-top: .75rem; - padding-bottom: .75rem -} - -.modal-blur { - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px) -} - -.modal-full-width { - max-width: none; - margin: 0 .5rem -} - -.nav-vertical, -.nav-vertical .nav { - flex-direction: column; - flex-wrap: nowrap -} - -.nav-vertical .nav { - margin-left: 1.25rem; - border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - padding-left: .5rem -} - -.nav-vertical .nav-item.show .nav-link, -.nav-vertical .nav-link.active { - font-weight: var(--tblr-font-weight-bold) -} - -.nav-vertical.nav-pills { - margin: 0 -.75rem -} - -.nav-bordered { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) -} - -.nav-bordered .nav-item+.nav-item { - margin-left: 1.25rem -} - -.nav-bordered .nav-link { - padding-left: 0; - padding-right: 0; - margin: 0 0 -var(--tblr-border-width); - border: 0; - border-bottom: 2px var(--tblr-border-style) transparent; - color: var(--tblr-muted) -} - -.nav-bordered .nav-item.show .nav-link, -.nav-bordered .nav-link.active { - color: var(--tblr-primary); - border-color: var(--tblr-primary) -} - -.nav-link { - display: flex; - transition: color .3s; - align-items: center -} - -@media (prefers-reduced-motion:reduce) { - .nav-link { - transition: none - } -} - -.nav-link-toggle { - margin-left: auto; - padding: 0 .25rem; - transition: transform .3s -} - -@media (prefers-reduced-motion:reduce) { - .nav-link-toggle { - transition: none - } -} - -.nav-link-toggle:after { - content: ""; - display: inline-block; - vertical-align: .306em; - width: .36em; - height: .36em; - border-bottom: 1px var(--tblr-border-style); - border-left: 1px var(--tblr-border-style); - margin-right: .1em; - margin-left: .4em; - transform: rotate(-45deg) -} - -.nav-link-toggle:after { - margin: 0 -} - -.nav-link[aria-expanded=true] .nav-link-toggle { - transform: rotate(180deg) -} - -.nav-link-icon { - width: 1.25rem; - height: 1.25rem; - margin-right: .5rem; - color: var(--tblr-icon-color) -} - -.nav-link-icon svg { - display: block; - height: 100% -} - -.nav-fill .nav-item .nav-link { - justify-content: center -} - -.stars { - display: inline-flex; - color: #bbc3cd; - font-size: .75rem -} - -.stars .star:not(:first-child) { - margin-left: .25rem -} - -.pagination { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.page-link { - min-width: 1.75rem; - border-radius: var(--tblr-border-radius) -} - -.page-item { - text-align: center -} - -.page-item:not(.active) .page-link:hover { - background: 0 0 -} - -.page-item.page-next, -.page-item.page-prev { - flex: 0 0 50%; - text-align: left -} - -.page-item.page-next { - margin-left: auto; - text-align: right -} - -.page-item-subtitle { - margin-bottom: 2px; - font-size: 12px; - color: var(--tblr-muted); - text-transform: uppercase -} - -.page-item.disabled .page-item-subtitle { - color: var(--tblr-disabled-color) -} - -.page-item-title { - font-size: 1rem; - font-weight: var(--tblr-font-weight-normal); - color: var(--tblr-body-color) -} - -.page-link:hover .page-item-title { - color: #206bc4 -} - -.page-item.disabled .page-item-title { - color: var(--tblr-disabled-color) -} - -@keyframes progress-indeterminate { - 0% { - right: 100%; - left: -35% - } - - 100%, - 60% { - right: -90%; - left: 100% - } -} - -.progress { - position: relative; - width: 100%; - line-height: .5rem; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.progress::-webkit-progress-bar { - background: var(--tblr-progress-bg) -} - -.progress::-webkit-progress-value { - background-color: var(--tblr-primary) -} - -.progress::-moz-progress-bar { - background-color: var(--tblr-primary) -} - -.progress::-ms-fill { - background-color: var(--tblr-primary); - border: none -} - -.progress-sm { - height: .25rem -} - -.progress-bar { - height: 100% -} - -.progress-bar-indeterminate:after, -.progress-bar-indeterminate:before { - position: absolute; - top: 0; - bottom: 0; - left: 0; - content: ""; - background-color: inherit; - will-change: left, right -} - -.progress-bar-indeterminate:before { - animation: progress-indeterminate 1.5s cubic-bezier(.65, .815, .735, .395) infinite -} - -.progress-separated .progress-bar { - box-shadow: 0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface)) -} - -.progressbg { - position: relative; - padding: .25rem .5rem; - display: flex -} - -.progressbg-text { - position: relative; - z-index: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap -} - -.progressbg-progress { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 0; - height: 100%; - background: 0 0; - pointer-events: none -} - -.progressbg-value { - font-weight: var(--tblr-font-weight-medium); - margin-left: auto; - padding-left: 2rem -} - -.ribbon { - --tblr-ribbon-margin: 0.25rem; - --tblr-ribbon-border-radius: var(--tblr-border-radius); - position: absolute; - top: .75rem; - right: calc(-1 * var(--tblr-ribbon-margin)); - z-index: 1; - padding: .25rem .75rem; - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - line-height: 1; - color: #fff; - text-align: center; - text-transform: uppercase; - background: var(--tblr-primary); - border-color: var(--tblr-primary); - border-radius: var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 2rem; - min-width: 2rem -} - -.ribbon:before { - position: absolute; - right: 0; - bottom: 100%; - width: 0; - height: 0; - content: ""; - filter: brightness(70%); - border: calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style); - border-color: inherit; - border-top-color: transparent; - border-right-color: transparent -} - -.ribbon.bg-blue { - border-color: var(--tblr-blue) -} - -.ribbon.bg-blue-lt { - border-color: rgba(var(--tblr-blue-rgb), .1) !important -} - -.ribbon.bg-azure { - border-color: var(--tblr-azure) -} - -.ribbon.bg-azure-lt { - border-color: rgba(var(--tblr-azure-rgb), .1) !important -} - -.ribbon.bg-indigo { - border-color: var(--tblr-indigo) -} - -.ribbon.bg-indigo-lt { - border-color: rgba(var(--tblr-indigo-rgb), .1) !important -} - -.ribbon.bg-purple { - border-color: var(--tblr-purple) -} - -.ribbon.bg-purple-lt { - border-color: rgba(var(--tblr-purple-rgb), .1) !important -} - -.ribbon.bg-pink { - border-color: var(--tblr-pink) -} - -.ribbon.bg-pink-lt { - border-color: rgba(var(--tblr-pink-rgb), .1) !important -} - -.ribbon.bg-red { - border-color: var(--tblr-red) -} - -.ribbon.bg-red-lt { - border-color: rgba(var(--tblr-red-rgb), .1) !important -} - -.ribbon.bg-orange { - border-color: var(--tblr-orange) -} - -.ribbon.bg-orange-lt { - border-color: rgba(var(--tblr-orange-rgb), .1) !important -} - -.ribbon.bg-yellow { - border-color: var(--tblr-yellow) -} - -.ribbon.bg-yellow-lt { - border-color: rgba(var(--tblr-yellow-rgb), .1) !important -} - -.ribbon.bg-lime { - border-color: var(--tblr-lime) -} - -.ribbon.bg-lime-lt { - border-color: rgba(var(--tblr-lime-rgb), .1) !important -} - -.ribbon.bg-green { - border-color: var(--tblr-green) -} - -.ribbon.bg-green-lt { - border-color: rgba(var(--tblr-green-rgb), .1) !important -} - -.ribbon.bg-teal { - border-color: var(--tblr-teal) -} - -.ribbon.bg-teal-lt { - border-color: rgba(var(--tblr-teal-rgb), .1) !important -} - -.ribbon.bg-cyan { - border-color: var(--tblr-cyan) -} - -.ribbon.bg-cyan-lt { - border-color: rgba(var(--tblr-cyan-rgb), .1) !important -} - -.ribbon .icon { - width: 1.25rem; - height: 1.25rem; - font-size: 1.25rem -} - -.ribbon-top { - top: calc(-1 * var(--tblr-ribbon-margin)); - right: .75rem; - width: 2rem; - padding: .5rem 0; - border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) -} - -.ribbon-top:before { - top: 0; - right: 100%; - bottom: auto; - border-color: inherit; - border-top-color: transparent; - border-left-color: transparent -} - -.ribbon-top.ribbon-start { - right: auto; - left: .75rem -} - -.ribbon-top.ribbon-start:before { - top: 0; - right: 100%; - left: auto -} - -.ribbon-start { - right: auto; - left: calc(-1 * var(--tblr-ribbon-margin)) -} - -.ribbon-start:before { - top: auto; - bottom: 100%; - left: 0; - border-color: inherit; - border-top-color: transparent; - border-left-color: transparent -} - -.ribbon-bottom { - top: auto; - bottom: .75rem -} - -.ribbon-bookmark { - padding-left: .25rem; - border-radius: 0 0 var(--tblr-ribbon-border-radius) 0 -} - -.ribbon-bookmark:after { - position: absolute; - top: 0; - right: 100%; - display: block; - width: 0; - height: 0; - content: ""; - border: 1rem var(--tblr-border-style); - border-color: inherit; - border-right-width: 0; - border-left-color: transparent; - border-left-width: .5rem -} - -.ribbon-bookmark.ribbon-left { - padding-right: .5rem -} - -.ribbon-bookmark.ribbon-left:after { - right: auto; - left: 100%; - border-right-color: transparent; - border-right-width: .5rem; - border-left-width: 0 -} - -.ribbon-bookmark.ribbon-top { - padding-right: 0; - padding-bottom: .25rem; - padding-left: 0; - border-radius: 0 var(--tblr-ribbon-border-radius) 0 0 -} - -.ribbon-bookmark.ribbon-top:after { - top: 100%; - right: 0; - left: 0; - border-color: inherit; - border-width: 1rem; - border-top-width: 0; - border-bottom-color: transparent; - border-bottom-width: .5rem -} - -.markdown { - line-height: 1.7142857143 -} - -.markdown>:first-child { - margin-top: 0 -} - -.markdown>:last-child, -.markdown>:last-child .highlight { - margin-bottom: 0 -} - -@media (min-width:768px) { - - .markdown>.hr, - .markdown>hr { - margin-top: 3em; - margin-bottom: 3em - } -} - -.markdown>.h1, -.markdown>.h2, -.markdown>.h3, -.markdown>.h4, -.markdown>.h5, -.markdown>.h6, -.markdown>h1, -.markdown>h2, -.markdown>h3, -.markdown>h4, -.markdown>h5, -.markdown>h6 { - font-weight: var(--tblr-font-weight-bold) -} - -.markdown>blockquote { - font-size: 1rem; - margin: 1.5rem 0; - padding: .5rem 1.5rem -} - -.markdown>img { - border-radius: var(--tblr-border-radius) -} - -.placeholder:not(.btn):not([class*=bg-]) { - background-color: currentColor !important -} - -.placeholder:not(.avatar):not([class*=card-img-]) { - border-radius: var(--tblr-border-radius) -} - -.steps { - --tblr-steps-color: var(--tblr-primary); - --tblr-steps-inactive-color: var(--tblr-border-color); - --tblr-steps-dot-size: .5rem; - --tblr-steps-border-width: 2px; - display: flex; - flex-wrap: nowrap; - width: 100%; - padding: 0; - margin: 0; - list-style: none -} - -.steps-blue { - --tblr-steps-color: var(--tblr-blue) -} - -.steps-azure { - --tblr-steps-color: var(--tblr-azure) -} - -.steps-indigo { - --tblr-steps-color: var(--tblr-indigo) -} - -.steps-purple { - --tblr-steps-color: var(--tblr-purple) -} - -.steps-pink { - --tblr-steps-color: var(--tblr-pink) -} - -.steps-red { - --tblr-steps-color: var(--tblr-red) -} - -.steps-orange { - --tblr-steps-color: var(--tblr-orange) -} - -.steps-yellow { - --tblr-steps-color: var(--tblr-yellow) -} - -.steps-lime { - --tblr-steps-color: var(--tblr-lime) -} - -.steps-green { - --tblr-steps-color: var(--tblr-green) -} - -.steps-teal { - --tblr-steps-color: var(--tblr-teal) -} - -.steps-cyan { - --tblr-steps-color: var(--tblr-cyan) -} - -.step-item { - position: relative; - flex: 1 1 0; - min-height: 1rem; - margin-top: 0; - color: inherit; - text-align: center; - cursor: default; - padding-top: calc(var(--tblr-steps-dot-size)) -} - -a.step-item { - cursor: pointer -} - -a.step-item:hover { - color: inherit -} - -.step-item:after, -.step-item:before { - background: var(--tblr-steps-color) -} - -.step-item:not(:last-child):after { - position: absolute; - left: 50%; - width: 100%; - content: ""; - transform: translateY(-50%) -} - -.step-item:after { - top: calc(var(--tblr-steps-dot-size) * .5); - height: var(--tblr-steps-border-width) -} - -.step-item:before { - content: ""; - position: absolute; - top: 0; - left: 50%; - z-index: 1; - box-sizing: content-box; - display: flex; - align-items: center; - justify-content: center; - border-radius: 100rem; - transform: translateX(-50%); - color: var(--tblr-white); - width: var(--tblr-steps-dot-size); - height: var(--tblr-steps-dot-size) -} - -.step-item.active { - font-weight: var(--tblr-font-weight-bold) -} - -.step-item.active:after { - background: var(--tblr-steps-inactive-color) -} - -.step-item.active~.step-item { - color: var(--tblr-disabled-color) -} - -.step-item.active~.step-item:after, -.step-item.active~.step-item:before { - background: var(--tblr-steps-inactive-color) -} - -.steps-counter { - --tblr-steps-dot-size: 1.5rem; - counter-reset: steps -} - -.steps-counter .step-item { - counter-increment: steps -} - -.steps-counter .step-item:before { - content: counter(steps) -} - -.steps-vertical { - --tblr-steps-dot-offset: 6px; - flex-direction: column -} - -.steps-vertical.steps-counter { - --tblr-steps-dot-offset: -2px -} - -.steps-vertical .step-item { - text-align: left; - padding-top: 0; - padding-left: calc(var(--tblr-steps-dot-size) + 1rem); - min-height: auto -} - -.steps-vertical .step-item:not(:first-child) { - margin-top: 1rem -} - -.steps-vertical .step-item:before { - top: var(--tblr-steps-dot-offset); - left: 0; - transform: translate(0, 0) -} - -.steps-vertical .step-item:not(:last-child):after { - position: absolute; - content: ""; - transform: translateX(-50%); - top: var(--tblr-steps-dot-offset); - left: calc(var(--tblr-steps-dot-size) * .5); - width: var(--tblr-steps-border-width); - height: calc(100% + 1rem) -} - -@keyframes status-pulsate-main { - 40% { - transform: scale(1.25, 1.25) - } - - 60% { - transform: scale(1.25, 1.25) - } -} - -@keyframes status-pulsate-secondary { - 10% { - transform: scale(1, 1) - } - - 30% { - transform: scale(3, 3) - } - - 80% { - transform: scale(3, 3) - } - - 100% { - transform: scale(1, 1) - } -} - -@keyframes status-pulsate-tertiary { - 25% { - transform: scale(1, 1) - } - - 80% { - transform: scale(3, 3); - opacity: 0 - } - - 100% { - transform: scale(3, 3); - opacity: 0 - } -} - -.status { - --tblr-status-height: 1.5rem; - --tblr-status-color: #667382; - --tblr-status-color-rgb: 102, 115, 130; - display: inline-flex; - align-items: center; - height: var(--tblr-status-height); - padding: .25rem .75rem; - gap: .5rem; - color: var(--tblr-status-color); - background: rgba(var(--tblr-status-color-rgb), .1); - font-size: .875rem; - text-transform: none; - letter-spacing: normal; - border-radius: 100rem; - font-weight: var(--tblr-font-weight-medium); - line-height: 1; - margin: 0 -} - -.status .status-dot { - background: var(--tblr-status-color) -} - -.status .icon { - font-size: 1.25rem -} - -.status-lite { - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; - background: 0 0 !important; - color: var(--tblr-body-color) !important -} - -.status-primary { - --tblr-status-color: #206bc4; - --tblr-status-color-rgb: 32, 107, 196 -} - -.status-secondary { - --tblr-status-color: #667382; - --tblr-status-color-rgb: 102, 115, 130 -} - -.status-success { - --tblr-status-color: #2fb344; - --tblr-status-color-rgb: 47, 179, 68 -} - -.status-info { - --tblr-status-color: #4299e1; - --tblr-status-color-rgb: 66, 153, 225 -} - -.status-warning { - --tblr-status-color: #f76707; - --tblr-status-color-rgb: 247, 103, 7 -} - -.status-danger { - --tblr-status-color: #d63939; - --tblr-status-color-rgb: 214, 57, 57 -} - -.status-light { - --tblr-status-color: #fcfdfe; - --tblr-status-color-rgb: 252, 253, 254 -} - -.status-dark { - --tblr-status-color: #182433; - --tblr-status-color-rgb: 24, 36, 51 -} - -.status-muted { - --tblr-status-color: #667382; - --tblr-status-color-rgb: 102, 115, 130 -} - -.status-blue { - --tblr-status-color: #206bc4; - --tblr-status-color-rgb: 32, 107, 196 -} - -.status-azure { - --tblr-status-color: #4299e1; - --tblr-status-color-rgb: 66, 153, 225 -} - -.status-indigo { - --tblr-status-color: #4263eb; - --tblr-status-color-rgb: 66, 99, 235 -} - -.status-purple { - --tblr-status-color: #ae3ec9; - --tblr-status-color-rgb: 174, 62, 201 -} - -.status-pink { - --tblr-status-color: #d6336c; - --tblr-status-color-rgb: 214, 51, 108 -} - -.status-red { - --tblr-status-color: #d63939; - --tblr-status-color-rgb: 214, 57, 57 -} - -.status-orange { - --tblr-status-color: #f76707; - --tblr-status-color-rgb: 247, 103, 7 -} - -.status-yellow { - --tblr-status-color: #f59f00; - --tblr-status-color-rgb: 245, 159, 0 -} - -.status-lime { - --tblr-status-color: #74b816; - --tblr-status-color-rgb: 116, 184, 22 -} - -.status-green { - --tblr-status-color: #2fb344; - --tblr-status-color-rgb: 47, 179, 68 -} - -.status-teal { - --tblr-status-color: #0ca678; - --tblr-status-color-rgb: 12, 166, 120 -} - -.status-cyan { - --tblr-status-color: #17a2b8; - --tblr-status-color-rgb: 23, 162, 184 -} - -.status-facebook { - --tblr-status-color: #1877f2; - --tblr-status-color-rgb: 24, 119, 242 -} - -.status-twitter { - --tblr-status-color: #1da1f2; - --tblr-status-color-rgb: 29, 161, 242 -} - -.status-linkedin { - --tblr-status-color: #0a66c2; - --tblr-status-color-rgb: 10, 102, 194 -} - -.status-google { - --tblr-status-color: #dc4e41; - --tblr-status-color-rgb: 220, 78, 65 -} - -.status-youtube { - --tblr-status-color: #ff0000; - --tblr-status-color-rgb: 255, 0, 0 -} - -.status-vimeo { - --tblr-status-color: #1ab7ea; - --tblr-status-color-rgb: 26, 183, 234 -} - -.status-dribbble { - --tblr-status-color: #ea4c89; - --tblr-status-color-rgb: 234, 76, 137 -} - -.status-github { - --tblr-status-color: #181717; - --tblr-status-color-rgb: 24, 23, 23 -} - -.status-instagram { - --tblr-status-color: #e4405f; - --tblr-status-color-rgb: 228, 64, 95 -} - -.status-pinterest { - --tblr-status-color: #bd081c; - --tblr-status-color-rgb: 189, 8, 28 -} - -.status-vk { - --tblr-status-color: #6383a8; - --tblr-status-color-rgb: 99, 131, 168 -} - -.status-rss { - --tblr-status-color: #ffa500; - --tblr-status-color-rgb: 255, 165, 0 -} - -.status-flickr { - --tblr-status-color: #0063dc; - --tblr-status-color-rgb: 0, 99, 220 -} - -.status-bitbucket { - --tblr-status-color: #0052cc; - --tblr-status-color-rgb: 0, 82, 204 -} - -.status-tabler { - --tblr-status-color: #206bc4; - --tblr-status-color-rgb: 32, 107, 196 -} - -.status-dot { - --tblr-status-dot-color: var(--tblr-status-color, #667382); - --tblr-status-size: 0.5rem; - position: relative; - display: inline-block; - width: var(--tblr-status-size); - height: var(--tblr-status-size); - background: var(--tblr-status-dot-color); - border-radius: 100rem -} - -.status-dot-animated:before { - content: ""; - position: absolute; - inset: 0; - z-index: 0; - background: inherit; - border-radius: inherit; - opacity: .6; - animation: 1s linear 2s backwards infinite status-pulsate-tertiary -} - -.status-indicator { - --tblr-status-indicator-size: 2.5rem; - --tblr-status-indicator-color: var(--tblr-status-color, #667382); - display: block; - position: relative; - width: var(--tblr-status-indicator-size); - height: var(--tblr-status-indicator-size) -} - -.status-indicator-circle { - --tblr-status-circle-size: .75rem; - position: absolute; - left: 50%; - top: 50%; - margin: calc(var(--tblr-status-circle-size)/ -2) 0 0 calc(var(--tblr-status-circle-size)/ -2); - width: var(--tblr-status-circle-size); - height: var(--tblr-status-circle-size); - border-radius: 100rem; - background: var(--tblr-status-color) -} - -.status-indicator-circle:nth-child(1) { - z-index: 3 -} - -.status-indicator-circle:nth-child(2) { - z-index: 2; - opacity: .1 -} - -.status-indicator-circle:nth-child(3) { - z-index: 1; - opacity: .3 -} - -.status-indicator-animated .status-indicator-circle:nth-child(1) { - animation: 2s linear 1s infinite backwards status-pulsate-main -} - -.status-indicator-animated .status-indicator-circle:nth-child(2) { - animation: 2s linear 1s infinite backwards status-pulsate-secondary -} - -.status-indicator-animated .status-indicator-circle:nth-child(3) { - animation: 2s linear 1s infinite backwards status-pulsate-tertiary -} - -.switch-icon { - display: inline-block; - line-height: 1; - border: 0; - padding: 0; - background: 0 0; - width: 1.25rem; - height: 1.25rem; - vertical-align: bottom; - position: relative; - cursor: pointer -} - -.switch-icon.disabled { - pointer-events: none; - opacity: .4 -} - -.switch-icon:focus { - outline: 0 -} - -.switch-icon svg { - display: block; - width: 100%; - height: 100% -} - -.switch-icon .switch-icon-a, -.switch-icon .switch-icon-b { - display: block; - width: 100%; - height: 100% -} - -.switch-icon .switch-icon-a { - opacity: 1 -} - -.switch-icon .switch-icon-b { - position: absolute; - top: 0; - left: 0; - opacity: 0 -} - -.switch-icon.active .switch-icon-a { - opacity: 0 -} - -.switch-icon.active .switch-icon-b { - opacity: 1 -} - -.switch-icon-fade .switch-icon-a, -.switch-icon-fade .switch-icon-b { - transition: opacity .5s -} - -@media (prefers-reduced-motion:reduce) { - - .switch-icon-fade .switch-icon-a, - .switch-icon-fade .switch-icon-b { - transition: none - } -} - -.switch-icon-scale .switch-icon-a, -.switch-icon-scale .switch-icon-b { - transition: opacity .5s, transform 0s .5s -} - -@media (prefers-reduced-motion:reduce) { - - .switch-icon-scale .switch-icon-a, - .switch-icon-scale .switch-icon-b { - transition: none - } -} - -.switch-icon-scale .switch-icon-b { - transform: scale(1.5) -} - -.switch-icon-scale.active .switch-icon-a, -.switch-icon-scale.active .switch-icon-b { - transition: opacity 0s, transform .5s -} - -@media (prefers-reduced-motion:reduce) { - - .switch-icon-scale.active .switch-icon-a, - .switch-icon-scale.active .switch-icon-b { - transition: none - } -} - -.switch-icon-scale.active .switch-icon-b { - transform: scale(1) -} - -.switch-icon-flip { - perspective: 10em -} - -.switch-icon-flip .switch-icon-a, -.switch-icon-flip .switch-icon-b { - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - transform-style: preserve-3d; - transition: opacity 0s .2s, transform .4s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - - .switch-icon-flip .switch-icon-a, - .switch-icon-flip .switch-icon-b { - transition: none - } -} - -.switch-icon-flip .switch-icon-a { - opacity: 1; - transform: rotateY(0) -} - -.switch-icon-flip .switch-icon-b { - opacity: 1; - transform: rotateY(-180deg) -} - -.switch-icon-flip.active .switch-icon-a { - opacity: 1; - transform: rotateY(180deg) -} - -.switch-icon-flip.active .switch-icon-b { - opacity: 1; - transform: rotateY(0) -} - -.switch-icon-slide-down, -.switch-icon-slide-left, -.switch-icon-slide-right, -.switch-icon-slide-up { - overflow: hidden -} - -.switch-icon-slide-down .switch-icon-a, -.switch-icon-slide-down .switch-icon-b, -.switch-icon-slide-left .switch-icon-a, -.switch-icon-slide-left .switch-icon-b, -.switch-icon-slide-right .switch-icon-a, -.switch-icon-slide-right .switch-icon-b, -.switch-icon-slide-up .switch-icon-a, -.switch-icon-slide-up .switch-icon-b { - transition: opacity .3s, transform .3s -} - -@media (prefers-reduced-motion:reduce) { - - .switch-icon-slide-down .switch-icon-a, - .switch-icon-slide-down .switch-icon-b, - .switch-icon-slide-left .switch-icon-a, - .switch-icon-slide-left .switch-icon-b, - .switch-icon-slide-right .switch-icon-a, - .switch-icon-slide-right .switch-icon-b, - .switch-icon-slide-up .switch-icon-a, - .switch-icon-slide-up .switch-icon-b { - transition: none - } -} - -.switch-icon-slide-down .switch-icon-a, -.switch-icon-slide-left .switch-icon-a, -.switch-icon-slide-right .switch-icon-a, -.switch-icon-slide-up .switch-icon-a { - transform: translateY(0) -} - -.switch-icon-slide-down .switch-icon-b, -.switch-icon-slide-left .switch-icon-b, -.switch-icon-slide-right .switch-icon-b, -.switch-icon-slide-up .switch-icon-b { - transform: translateY(100%) -} - -.switch-icon-slide-down.active .switch-icon-a, -.switch-icon-slide-left.active .switch-icon-a, -.switch-icon-slide-right.active .switch-icon-a, -.switch-icon-slide-up.active .switch-icon-a { - transform: translateY(-100%) -} - -.switch-icon-slide-down.active .switch-icon-b, -.switch-icon-slide-left.active .switch-icon-b, -.switch-icon-slide-right.active .switch-icon-b, -.switch-icon-slide-up.active .switch-icon-b { - transform: translateY(0) -} - -.switch-icon-slide-left .switch-icon-a { - transform: translateX(0) -} - -.switch-icon-slide-left .switch-icon-b { - transform: translateX(100%) -} - -.switch-icon-slide-left.active .switch-icon-a { - transform: translateX(-100%) -} - -.switch-icon-slide-left.active .switch-icon-b { - transform: translateX(0) -} - -.switch-icon-slide-right .switch-icon-a { - transform: translateX(0) -} - -.switch-icon-slide-right .switch-icon-b { - transform: translateX(-100%) -} - -.switch-icon-slide-right.active .switch-icon-a { - transform: translateX(100%) -} - -.switch-icon-slide-right.active .switch-icon-b { - transform: translateX(0) -} - -.switch-icon-slide-down .switch-icon-a { - transform: translateY(0) -} - -.switch-icon-slide-down .switch-icon-b { - transform: translateY(-100%) -} - -.switch-icon-slide-down.active .switch-icon-a { - transform: translateY(100%) -} - -.switch-icon-slide-down.active .switch-icon-b { - transform: translateY(0) -} - -.markdown>table thead th, -.table thead th { - color: var(--tblr-muted); - background: var(--tblr-bg-surface-tertiary); - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - padding-top: .5rem; - padding-bottom: .5rem; - white-space: nowrap -} - -@media print { - - .markdown>table thead th, - .table thead th { - background: 0 0 - } -} - -.table-responsive .markdown>table, -.table-responsive .table { - margin-bottom: 0 -} - -.table-responsive+.card-footer { - border-top: 0 -} - -.table-transparent thead th { - background: 0 0 -} - -.table-nowrap>:not(caption)>*>* { - white-space: nowrap -} - -.table-vcenter>:not(caption)>*>* { - vertical-align: middle -} - -.table-center>:not(caption)>*>* { - text-align: center -} - -.td-truncate { - max-width: 1px; - width: 100% -} - -.table-mobile { - display: block -} - -.table-mobile thead { - display: none -} - -.table-mobile tbody, -.table-mobile tr { - display: flex; - flex-direction: column -} - -.table-mobile td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important -} - -.table-mobile td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block -} - -.table-mobile tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) -} - -.table-mobile .btn { - display: block -} - -@media (max-width:575.98px) { - .table-mobile-sm { - display: block - } - - .table-mobile-sm thead { - display: none - } - - .table-mobile-sm tbody, - .table-mobile-sm tr { - display: flex; - flex-direction: column - } - - .table-mobile-sm td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important - } - - .table-mobile-sm td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block - } - - .table-mobile-sm tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) - } - - .table-mobile-sm .btn { - display: block - } -} - -@media (max-width:767.98px) { - .table-mobile-md { - display: block - } - - .table-mobile-md thead { - display: none - } - - .table-mobile-md tbody, - .table-mobile-md tr { - display: flex; - flex-direction: column - } - - .table-mobile-md td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important - } - - .table-mobile-md td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block - } - - .table-mobile-md tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) - } - - .table-mobile-md .btn { - display: block - } -} - -@media (max-width:991.98px) { - .table-mobile-lg { - display: block - } - - .table-mobile-lg thead { - display: none - } - - .table-mobile-lg tbody, - .table-mobile-lg tr { - display: flex; - flex-direction: column - } - - .table-mobile-lg td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important - } - - .table-mobile-lg td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block - } - - .table-mobile-lg tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) - } - - .table-mobile-lg .btn { - display: block - } -} - -@media (max-width:1199.98px) { - .table-mobile-xl { - display: block - } - - .table-mobile-xl thead { - display: none - } - - .table-mobile-xl tbody, - .table-mobile-xl tr { - display: flex; - flex-direction: column - } - - .table-mobile-xl td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important - } - - .table-mobile-xl td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block - } - - .table-mobile-xl tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) - } - - .table-mobile-xl .btn { - display: block - } -} - -@media (max-width:1399.98px) { - .table-mobile-xxl { - display: block - } - - .table-mobile-xxl thead { - display: none - } - - .table-mobile-xxl tbody, - .table-mobile-xxl tr { - display: flex; - flex-direction: column - } - - .table-mobile-xxl td { - display: block; - padding: .75rem .75rem !important; - border: none; - color: var(--tblr-body-color) !important - } - - .table-mobile-xxl td[data-label]:before { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - content: attr(data-label); - display: block - } - - .table-mobile-xxl tr { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) - } - - .table-mobile-xxl .btn { - display: block - } -} - -.table-sort { - font: inherit; - color: inherit; - text-transform: inherit; - letter-spacing: inherit; - border: 0; - background: inherit; - display: block; - width: 100%; - text-align: inherit; - transition: color .3s; - margin: -.5rem -.75rem; - padding: .5rem .75rem -} - -@media (prefers-reduced-motion:reduce) { - .table-sort { - transition: none - } -} - -.table-sort.asc, -.table-sort.desc, -.table-sort:hover { - color: var(--tblr-body-color) -} - -.table-sort:after { - content: ""; - display: inline-flex; - width: 1rem; - height: 1rem; - vertical-align: bottom; - -webkit-mask-image: url("data:image/svg+xml,"); - mask-image: url("data:image/svg+xml,"); - background: currentColor; - margin-left: .25rem -} - -.table-sort.asc:after { - -webkit-mask-image: url("data:image/svg+xml,"); - mask-image: url("data:image/svg+xml,") -} - -.table-sort.desc:after { - -webkit-mask-image: url("data:image/svg+xml,"); - mask-image: url("data:image/svg+xml,") -} - -.table-borderless thead th { - background: 0 0 -} - -.toast { - background: #fff; - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); - box-shadow: rgba(24, 36, 51, .04) 0 2px 4px 0 -} - -.toast .toast-header { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.toast button[data-bs-dismiss=toast] { - outline: 0 -} - -.toast-primary { - --tblr-toast-color: #206bc4 -} - -.toast-secondary { - --tblr-toast-color: #667382 -} - -.toast-success { - --tblr-toast-color: #2fb344 -} - -.toast-info { - --tblr-toast-color: #4299e1 -} - -.toast-warning { - --tblr-toast-color: #f76707 -} - -.toast-danger { - --tblr-toast-color: #d63939 -} - -.toast-light { - --tblr-toast-color: #fcfdfe -} - -.toast-dark { - --tblr-toast-color: #182433 -} - -.toast-muted { - --tblr-toast-color: #667382 -} - -.toast-blue { - --tblr-toast-color: #206bc4 -} - -.toast-azure { - --tblr-toast-color: #4299e1 -} - -.toast-indigo { - --tblr-toast-color: #4263eb -} - -.toast-purple { - --tblr-toast-color: #ae3ec9 -} - -.toast-pink { - --tblr-toast-color: #d6336c -} - -.toast-red { - --tblr-toast-color: #d63939 -} - -.toast-orange { - --tblr-toast-color: #f76707 -} - -.toast-yellow { - --tblr-toast-color: #f59f00 -} - -.toast-lime { - --tblr-toast-color: #74b816 -} - -.toast-green { - --tblr-toast-color: #2fb344 -} - -.toast-teal { - --tblr-toast-color: #0ca678 -} - -.toast-cyan { - --tblr-toast-color: #17a2b8 -} - -.toast-facebook { - --tblr-toast-color: #1877f2 -} - -.toast-twitter { - --tblr-toast-color: #1da1f2 -} - -.toast-linkedin { - --tblr-toast-color: #0a66c2 -} - -.toast-google { - --tblr-toast-color: #dc4e41 -} - -.toast-youtube { - --tblr-toast-color: #ff0000 -} - -.toast-vimeo { - --tblr-toast-color: #1ab7ea -} - -.toast-dribbble { - --tblr-toast-color: #ea4c89 -} - -.toast-github { - --tblr-toast-color: #181717 -} - -.toast-instagram { - --tblr-toast-color: #e4405f -} - -.toast-pinterest { - --tblr-toast-color: #bd081c -} - -.toast-vk { - --tblr-toast-color: #6383a8 -} - -.toast-rss { - --tblr-toast-color: #ffa500 -} - -.toast-flickr { - --tblr-toast-color: #0063dc -} - -.toast-bitbucket { - --tblr-toast-color: #0052cc -} - -.toast-tabler { - --tblr-toast-color: #206bc4 -} - -.toolbar { - display: flex; - flex-wrap: nowrap; - flex-shrink: 0; - margin: 0 -.5rem -} - -.toolbar>* { - margin: 0 .5rem -} - -.tracking { - --tblr-tracking-height: 1.5rem; - --tblr-tracking-gap-width: 0.125rem; - --tblr-tracking-block-border-radius: var(--tblr-border-radius); - display: flex; - gap: var(--tblr-tracking-gap-width) -} - -.tracking-squares { - --tblr-tracking-block-border-radius: var(--tblr-border-radius-sm) -} - -.tracking-squares .tracking-block { - height: auto -} - -.tracking-squares .tracking-block:before { - content: ""; - display: block; - padding-top: 100% -} - -.tracking-block { - flex: 1; - border-radius: var(--tblr-tracking-block-border-radius); - height: var(--tblr-tracking-height); - min-width: .25rem; - background: var(--tblr-border-color) -} - -.timeline { - --tblr-timeline-icon-size: 2.5rem; - position: relative; - list-style: none; - padding: 0 -} - -.timeline-event { - position: relative -} - -.timeline-event:not(:last-child) { - margin-bottom: var(--tblr-page-padding) -} - -.timeline-event:not(:last-child):before { - content: ""; - position: absolute; - top: var(--tblr-timeline-icon-size); - left: calc(var(--tblr-timeline-icon-size)/ 2); - bottom: calc(-1 * var(--tblr-page-padding)); - width: var(--tblr-border-width); - background-color: var(--tblr-border-color); - border-radius: var(--tblr-border-radius) -} - -.timeline-event-icon { - position: absolute; - display: flex; - align-items: center; - justify-content: center; - width: var(--tblr-timeline-icon-size, 2.5rem); - height: var(--tblr-timeline-icon-size, 2.5rem); - background: var(--tblr-gray-200); - color: var(--tblr-muted); - border-radius: var(--tblr-border-radius); - z-index: 5 -} - -.timeline-event-card { - margin-left: calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding)) -} - -.timeline-simple .timeline-event-icon { - display: none -} - -.timeline-simple .timeline-event-card { - margin-left: 0 -} - -.hr-text { - display: flex; - align-items: center; - margin: 2rem 0; - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted); - height: 1px -} - -.hr-text:after, -.hr-text:before { - flex: 1 1 auto; - height: 1px; - background-color: var(--tblr-border-color) -} - -.hr-text:before { - content: ""; - margin-right: .5rem -} - -.hr-text:after { - content: ""; - margin-left: .5rem -} - -.hr-text>:first-child { - padding-right: .5rem; - padding-left: 0; - color: var(--tblr-muted) -} - -.hr-text.hr-text-left:before { - content: none -} - -.hr-text.hr-text-left>:first-child { - padding-right: .5rem; - padding-left: .5rem -} - -.hr-text.hr-text-right:before { - content: "" -} - -.hr-text.hr-text-right:after { - content: none -} - -.hr-text.hr-text-right>:first-child { - padding-right: 0; - padding-left: .5rem -} - -.card>.hr-text { - margin: 0 -} - -.hr-text-spaceless { - margin: -.5rem 0 -} - -.lead { - line-height: 1.4 -} - -a { - -webkit-text-decoration-skip: ink; - text-decoration-skip-ink: auto -} - -.h1 a, -.h2 a, -.h3 a, -.h4 a, -.h5 a, -.h6 a, -h1 a, -h2 a, -h3 a, -h4 a, -h5 a, -h6 a { - color: inherit -} - -.h1 a:hover, -.h2 a:hover, -.h3 a:hover, -.h4 a:hover, -.h5 a:hover, -.h6 a:hover, -h1 a:hover, -h2 a:hover, -h3 a:hover, -h4 a:hover, -h5 a:hover, -h6 a:hover { - color: inherit -} - -.h1, -h1 { - font-size: var(--tblr-font-size-h1); - line-height: var(--tblr-line-height-h1) -} - -.h2, -h2 { - font-size: var(--tblr-font-size-h2); - line-height: var(--tblr-line-height-h2) -} - -.h3, -h3 { - font-size: var(--tblr-font-size-h3); - line-height: var(--tblr-line-height-h3) -} - -.h4, -h4 { - font-size: var(--tblr-font-size-h4); - line-height: var(--tblr-line-height-h4) -} - -.h5, -h5 { - font-size: var(--tblr-font-size-h5); - line-height: var(--tblr-line-height-h5) -} - -.h6, -h6 { - font-size: var(--tblr-font-size-h6); - line-height: var(--tblr-line-height-h6) -} - -.strong, -b, -strong { - font-weight: var(--tblr-font-weight-bold) -} - -blockquote { - padding-left: 1rem; - border-left: 2px var(--tblr-border-style) var(--tblr-border-color) -} - -blockquote p { - margin-bottom: 1rem -} - -blockquote cite { - display: block; - text-align: right -} - -blockquote cite:before { - content: "— " -} - -ol, -ul { - padding-left: 1.5rem -} - -.hr, -hr { - margin: 2rem 0 -} - -dl dd:last-child { - margin-bottom: 0 -} - -pre { - padding: 1rem; - background: var(--tblr-bg-surface-dark); - color: var(--tblr-light); - border-radius: var(--tblr-border-radius) -} - -pre code { - background: 0 0 -} - -code { - background: var(--tblr-code-bg); - padding: 2px 4px; - border-radius: var(--tblr-border-radius) -} - -.kbd, -kbd { - border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); - display: inline-block; - box-sizing: border-box; - max-width: 100%; - font-size: var(--tblr-font-size-h5); - font-weight: var(--tblr-font-weight-medium); - line-height: 1; - vertical-align: baseline; - border-radius: var(--tblr-border-radius) -} - -img { - max-width: 100% -} - -.list-unstyled { - margin-left: 0 -} - -::-moz-selection { - background-color: rgba(var(--tblr-primary-rgb), .16) -} - -::selection { - background-color: rgba(var(--tblr-primary-rgb), .16) -} - -[class*=" link-"].disabled, -[class^=link-].disabled { - color: var(--tblr-disabled-color); - pointer-events: none -} - -.subheader { - font-size: .625rem; - font-weight: var(--tblr-font-weight-bold); - text-transform: uppercase; - letter-spacing: .04em; - line-height: 1rem; - color: var(--tblr-muted) -} - -.chart { - display: block; - min-height: 10rem -} - -.chart text { - font-family: inherit -} - -.chart-sm { - height: 2.5rem -} - -.chart-lg { - height: 15rem -} - -.chart-square { - height: 5.75rem -} - -.chart-sparkline { - position: relative; - width: 4rem; - height: 2.5rem; - line-height: 1; - min-height: 0 !important -} - -.chart-sparkline-sm { - height: 1.5rem -} - -.chart-sparkline-square { - width: 2.5rem -} - -.chart-sparkline-wide { - width: 6rem -} - -.chart-sparkline-label { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: flex; - align-items: center; - justify-content: center; - font-size: .625rem -} - -.chart-sparkline-label .icon { - width: 1rem; - height: 1rem; - font-size: 1rem -} - -.offcanvas-header { - border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, .14) -} - -.offcanvas-footer { - padding: 1.5rem 1.5rem -} - -.offcanvas-title { - font-size: 1rem; - font-weight: var(--tblr-font-weight-medium); - line-height: 1.5rem -} - -.offcanvas-narrow { - width: 20rem -} - -.bg-white-overlay { - color: #fff; - background-color: rgba(252, 253, 254, .24) -} - -.bg-dark-overlay { - color: #fff; - background-color: rgba(24, 36, 51, .24) -} - -.bg-cover { - background-repeat: no-repeat; - background-size: cover; - background-position: center -} - -.bg-primary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-primary-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-primary-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-primary { - border-color: #206bc4 !important -} - -.bg-secondary { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-secondary-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-secondary-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-secondary { - border-color: #667382 !important -} - -.bg-success { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-success-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-success-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-success { - border-color: #2fb344 !important -} - -.bg-info { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-info-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-info-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-info { - border-color: #4299e1 !important -} - -.bg-warning { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-warning-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-warning-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-warning { - border-color: #f76707 !important -} - -.bg-danger { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-danger-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-danger-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-danger { - border-color: #d63939 !important -} - -.bg-light { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-light-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-light-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-light { - border-color: #fcfdfe !important -} - -.bg-dark { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-dark-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-dark-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-dark { - border-color: #182433 !important -} - -.bg-muted { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-muted-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-muted-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-muted { - border-color: #667382 !important -} - -.bg-blue { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-blue-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-blue-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-blue { - border-color: #206bc4 !important -} - -.bg-azure { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-azure-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-azure-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-azure { - border-color: #4299e1 !important -} - -.bg-indigo { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-indigo-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-indigo-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-indigo { - border-color: #4263eb !important -} - -.bg-purple { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-purple-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-purple-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-purple { - border-color: #ae3ec9 !important -} - -.bg-pink { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-pink-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-pink-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-pink { - border-color: #d6336c !important -} - -.bg-red { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-red-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-red-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-red { - border-color: #d63939 !important -} - -.bg-orange { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-orange-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-orange-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-orange { - border-color: #f76707 !important -} - -.bg-yellow { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-yellow-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-yellow-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-yellow { - border-color: #f59f00 !important -} - -.bg-lime { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-lime-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-lime-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-lime { - border-color: #74b816 !important -} - -.bg-green { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-green-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-green-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-green { - border-color: #2fb344 !important -} - -.bg-teal { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-teal-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-teal-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-teal { - border-color: #0ca678 !important -} - -.bg-cyan { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-cyan-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-cyan-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-cyan { - border-color: #17a2b8 !important -} - -.bg-facebook { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-facebook-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-facebook-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-facebook { - border-color: #1877f2 !important -} - -.bg-twitter { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-twitter-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-twitter-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-twitter { - border-color: #1da1f2 !important -} - -.bg-linkedin { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-linkedin-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-linkedin-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-linkedin { - border-color: #0a66c2 !important -} - -.bg-google { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-google-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-google-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-google { - border-color: #dc4e41 !important -} - -.bg-youtube { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-youtube-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-youtube-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-youtube { - border-color: red !important -} - -.bg-vimeo { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-vimeo-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-vimeo-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-vimeo { - border-color: #1ab7ea !important -} - -.bg-dribbble { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-dribbble-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-dribbble-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-dribbble { - border-color: #ea4c89 !important -} - -.bg-github { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-github-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-github-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-github { - border-color: #181717 !important -} - -.bg-instagram { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-instagram-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-instagram-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-instagram { - border-color: #e4405f !important -} - -.bg-pinterest { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-pinterest-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-pinterest-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-pinterest { - border-color: #bd081c !important -} - -.bg-vk { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-vk-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-vk-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-vk { - border-color: #6383a8 !important -} - -.bg-rss { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-rss-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-rss-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-rss { - border-color: orange !important -} - -.bg-flickr { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-flickr-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-flickr-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-flickr { - border-color: #0063dc !important -} - -.bg-bitbucket { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-bitbucket-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-bitbucket-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-bitbucket { - border-color: #0052cc !important -} - -.bg-tabler { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-tabler-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-tabler-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-tabler { - border-color: #206bc4 !important -} - -.bg-white { - --tblr-bg-opacity: 1; - background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important -} - -.bg-white-lt { - --tblr-bg-opacity: 1; - --tblr-text-opacity: 1; - color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; - background-color: rgba(var(--tblr-white-lt-rgb), var(--tblr-bg-opacity)) !important -} - -.border-white { - border-color: #fff !important -} - -.text-primary { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important -} - -.text-primary-fg { - color: var(--tblr-primary-fg) !important -} - -.text-secondary { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important -} - -.text-secondary-fg { - color: var(--tblr-secondary-fg) !important -} - -.text-success { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important -} - -.text-success-fg { - color: var(--tblr-success-fg) !important -} - -.text-info { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important -} - -.text-info-fg { - color: var(--tblr-info-fg) !important -} - -.text-warning { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important -} - -.text-warning-fg { - color: var(--tblr-warning-fg) !important -} - -.text-danger { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important -} - -.text-danger-fg { - color: var(--tblr-danger-fg) !important -} - -.text-light { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important -} - -.text-light-fg { - color: var(--tblr-light-fg) !important -} - -.text-dark { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important -} - -.text-dark-fg { - color: var(--tblr-dark-fg) !important -} - -.text-muted { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important -} - -.text-muted-fg { - color: var(--tblr-muted-fg) !important -} - -.text-blue { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important -} - -.text-blue-fg { - color: var(--tblr-blue-fg) !important -} - -.text-azure { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important -} - -.text-azure-fg { - color: var(--tblr-azure-fg) !important -} - -.text-indigo { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important -} - -.text-indigo-fg { - color: var(--tblr-indigo-fg) !important -} - -.text-purple { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important -} - -.text-purple-fg { - color: var(--tblr-purple-fg) !important -} - -.text-pink { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important -} - -.text-pink-fg { - color: var(--tblr-pink-fg) !important -} - -.text-red { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important -} - -.text-red-fg { - color: var(--tblr-red-fg) !important -} - -.text-orange { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important -} - -.text-orange-fg { - color: var(--tblr-orange-fg) !important -} - -.text-yellow { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important -} - -.text-yellow-fg { - color: var(--tblr-yellow-fg) !important -} - -.text-lime { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important -} - -.text-lime-fg { - color: var(--tblr-lime-fg) !important -} - -.text-green { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important -} - -.text-green-fg { - color: var(--tblr-green-fg) !important -} - -.text-teal { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important -} - -.text-teal-fg { - color: var(--tblr-teal-fg) !important -} - -.text-cyan { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important -} - -.text-cyan-fg { - color: var(--tblr-cyan-fg) !important -} - -.text-facebook { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important -} - -.text-facebook-fg { - color: var(--tblr-facebook-fg) !important -} - -.text-twitter { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important -} - -.text-twitter-fg { - color: var(--tblr-twitter-fg) !important -} - -.text-linkedin { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important -} - -.text-linkedin-fg { - color: var(--tblr-linkedin-fg) !important -} - -.text-google { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important -} - -.text-google-fg { - color: var(--tblr-google-fg) !important -} - -.text-youtube { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important -} - -.text-youtube-fg { - color: var(--tblr-youtube-fg) !important -} - -.text-vimeo { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important -} - -.text-vimeo-fg { - color: var(--tblr-vimeo-fg) !important -} - -.text-dribbble { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important -} - -.text-dribbble-fg { - color: var(--tblr-dribbble-fg) !important -} - -.text-github { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important -} - -.text-github-fg { - color: var(--tblr-github-fg) !important -} - -.text-instagram { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important -} - -.text-instagram-fg { - color: var(--tblr-instagram-fg) !important -} - -.text-pinterest { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important -} - -.text-pinterest-fg { - color: var(--tblr-pinterest-fg) !important -} - -.text-vk { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important -} - -.text-vk-fg { - color: var(--tblr-vk-fg) !important -} - -.text-rss { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important -} - -.text-rss-fg { - color: var(--tblr-rss-fg) !important -} - -.text-flickr { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important -} - -.text-flickr-fg { - color: var(--tblr-flickr-fg) !important -} - -.text-bitbucket { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important -} - -.text-bitbucket-fg { - color: var(--tblr-bitbucket-fg) !important -} - -.text-tabler { - --tblr-text-opacity: 1; - color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important -} - -.text-tabler-fg { - color: var(--tblr-tabler-fg) !important -} - -.bg-gray-50 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-50-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-50-fg { - color: #182433 !important -} - -.bg-gray-100 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-100-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-100-fg { - color: #182433 !important -} - -.bg-gray-200 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-200-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-200-fg { - color: #182433 !important -} - -.bg-gray-300 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-300-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-300-fg { - color: #182433 !important -} - -.bg-gray-400 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-400-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-400-fg { - color: #fcfdfe !important -} - -.bg-gray-500 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-500-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-500-fg { - color: #fcfdfe !important -} - -.bg-gray-600 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-600-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-600-fg { - color: #fcfdfe !important -} - -.bg-gray-700 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-700-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-700-fg { - color: #fcfdfe !important -} - -.bg-gray-800 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-800-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-800-fg { - color: #fcfdfe !important -} - -.bg-gray-900 { - --tblr-bg-opacity: .1; - background-color: rgba(var(--tblr-gray-900-rgb), var(--tblr-bg-opacity)) !important -} - -.text-gray-900-fg { - color: #fcfdfe !important -} - -.scrollable { - overflow-x: hidden; - overflow-y: auto; - -webkit-overflow-scrolling: touch -} - -.scrollable.hover { - overflow-y: hidden -} - -.scrollable.hover>* { - margin-top: -1px -} - -.scrollable.hover:active, -.scrollable.hover:focus, -.scrollable.hover:hover { - overflow: visible; - overflow-y: auto -} - -.touch .scrollable { - overflow-y: auto !important -} - -.scroll-x, -.scroll-y { - overflow: hidden; - -webkit-overflow-scrolling: touch -} - -.scroll-y { - overflow-y: auto -} - -.scroll-x { - overflow-x: auto -} - -.no-scroll { - overflow: hidden -} - -.w-0 { - width: 0 !important -} - -.h-0 { - height: 0 !important -} - -.w-1 { - width: .25rem !important -} - -.h-1 { - height: .25rem !important -} - -.w-2 { - width: .5rem !important -} - -.h-2 { - height: .5rem !important -} - -.w-3 { - width: 1rem !important -} - -.h-3 { - height: 1rem !important -} - -.w-4 { - width: 1.5rem !important -} - -.h-4 { - height: 1.5rem !important -} - -.w-5 { - width: 2rem !important -} - -.h-5 { - height: 2rem !important -} - -.w-6 { - width: 3rem !important -} - -.h-6 { - height: 3rem !important -} - -.w-7 { - width: 5rem !important -} - -.h-7 { - height: 5rem !important -} - -.w-8 { - width: 8rem !important -} - -.h-8 { - height: 8rem !important -} - -.w-auto { - width: auto !important -} - -.h-auto { - height: auto !important -} - -.w-px { - width: 1px !important -} - -.h-px { - height: 1px !important -} - -.w-full { - width: 100% !important -} - -.h-full { - height: 100% !important -} - -.opacity-0 { - opacity: 0 !important -} - -.opacity-5 { - opacity: .05 !important -} - -.opacity-10 { - opacity: .1 !important -} - -.opacity-15 { - opacity: .15 !important -} - -.opacity-20 { - opacity: .2 !important -} - -.opacity-25 { - opacity: .25 !important -} - -.opacity-30 { - opacity: .3 !important -} - -.opacity-35 { - opacity: .35 !important -} - -.opacity-40 { - opacity: .4 !important -} - -.opacity-45 { - opacity: .45 !important -} - -.opacity-50 { - opacity: .5 !important -} - -.opacity-55 { - opacity: .55 !important -} - -.opacity-60 { - opacity: .6 !important -} - -.opacity-65 { - opacity: .65 !important -} - -.opacity-70 { - opacity: .7 !important -} - -.opacity-75 { - opacity: .75 !important -} - -.opacity-80 { - opacity: .8 !important -} - -.opacity-85 { - opacity: .85 !important -} - -.opacity-90 { - opacity: .9 !important -} - -.opacity-95 { - opacity: .95 !important -} - -.opacity-100 { - opacity: 1 !important -} - -.hover-shadow-sm:hover { - box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important -} - -.hover-shadow:hover { - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important -} - -.hover-shadow-lg:hover { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important -} - -.hover-shadow-none:hover { - box-shadow: none !important -} - -.antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -.subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto -} \ No newline at end of file +@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-blue:#0054a6;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#667382;--tblr-gray-dark:#182433;--tblr-gray-100:#f6f8fb;--tblr-gray-200:#eef1f4;--tblr-gray-300:#dadfe5;--tblr-gray-400:#bbc3cd;--tblr-gray-500:#929dab;--tblr-gray-600:#667382;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#0054a6;--tblr-secondary:#667382;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#fcfdfe;--tblr-dark:#182433;--tblr-muted:#667382;--tblr-blue:#0054a6;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-secondary-rgb:102,115,130;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:252,253,254;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:102,115,130;--tblr-blue-rgb:0,84,166;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-facebook-rgb:24,119,242;--tblr-twitter-rgb:29,161,242;--tblr-linkedin-rgb:10,102,194;--tblr-google-rgb:220,78,65;--tblr-youtube-rgb:255,0,0;--tblr-vimeo-rgb:26,183,234;--tblr-dribbble-rgb:234,76,137;--tblr-github-rgb:24,23,23;--tblr-instagram-rgb:228,64,95;--tblr-pinterest-rgb:189,8,28;--tblr-vk-rgb:99,131,168;--tblr-rss-rgb:255,165,0;--tblr-flickr-rgb:0,99,220;--tblr-bitbucket-rgb:0,82,204;--tblr-tabler-rgb:0,84,166;--tblr-primary-text-emphasis:#002242;--tblr-secondary-text-emphasis:#292e34;--tblr-success-text-emphasis:#13481b;--tblr-info-text-emphasis:#1a3d5a;--tblr-warning-text-emphasis:#632903;--tblr-danger-text-emphasis:#561717;--tblr-light-text-emphasis:#3a4859;--tblr-dark-text-emphasis:#3a4859;--tblr-primary-bg-subtle:#ccdded;--tblr-secondary-bg-subtle:#e0e3e6;--tblr-success-bg-subtle:#d5f0da;--tblr-info-bg-subtle:#d9ebf9;--tblr-warning-bg-subtle:#fde1cd;--tblr-danger-bg-subtle:#f7d7d7;--tblr-light-bg-subtle:#fbfcfd;--tblr-dark-bg-subtle:#bbc3cd;--tblr-primary-border-subtle:#99bbdb;--tblr-secondary-border-subtle:#c2c7cd;--tblr-success-border-subtle:#ace1b4;--tblr-info-border-subtle:#b3d6f3;--tblr-warning-border-subtle:#fcc29c;--tblr-danger-border-subtle:#efb0b0;--tblr-light-border-subtle:#eef1f4;--tblr-dark-border-subtle:#929dab;--tblr-white-rgb:255,255,255;--tblr-black-rgb:0,0,0;--tblr-font-sans-serif:-apple-system,BlinkMacSystemFont,San Francisco,Segoe UI,Roboto,Helvetica Neue,sans-serif;--tblr-font-monospace:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tblr-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--tblr-body-font-family:var(--tblr-font-sans-serif);--tblr-body-font-size:0.875rem;--tblr-body-font-weight:400;--tblr-body-line-height:1.4285714286;--tblr-body-color:#182433;--tblr-body-color-rgb:24,36,51;--tblr-body-bg:#f6f8fb;--tblr-body-bg-rgb:246,248,251;--tblr-emphasis-color:#182433;--tblr-emphasis-color-rgb:24,36,51;--tblr-secondary-color:rgba(24, 36, 51, 0.75);--tblr-secondary-color-rgb:24,36,51;--tblr-secondary-bg:#eef1f4;--tblr-secondary-bg-rgb:238,241,244;--tblr-tertiary-color:rgba(24, 36, 51, 0.5);--tblr-tertiary-color-rgb:24,36,51;--tblr-tertiary-bg:#f6f8fb;--tblr-tertiary-bg-rgb:246,248,251;--tblr-heading-color:inherit;--tblr-link-color:#0054a6;--tblr-link-color-rgb:0,84,166;--tblr-link-decoration:none;--tblr-link-hover-color:#004385;--tblr-link-hover-color-rgb:0,67,133;--tblr-link-hover-decoration:underline;--tblr-code-color:var(--tblr-gray-600);--tblr-highlight-bg:#fdeccc;--tblr-border-width:1px;--tblr-border-style:solid;--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-radius:4px;--tblr-border-radius-sm:2px;--tblr-border-radius-lg:8px;--tblr-border-radius-xl:1rem;--tblr-border-radius-xxl:2rem;--tblr-border-radius-2xl:var(--tblr-border-radius-xxl);--tblr-border-radius-pill:100rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--tblr-box-shadow-inset:0 0 transparent;--tblr-focus-ring-width:0.25rem;--tblr-focus-ring-opacity:0.25;--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), 0.25);--tblr-form-valid-color:#2fb344;--tblr-form-valid-border-color:#2fb344;--tblr-form-invalid-color:#d63939;--tblr-form-invalid-border-color:#d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-body-bg:#040a11;--tblr-body-bg-rgb:4,10,17;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-secondary-color:rgba(252, 253, 254, 0.75);--tblr-secondary-color-rgb:252,253,254;--tblr-secondary-bg:#182433;--tblr-secondary-bg-rgb:24,36,51;--tblr-tertiary-color:rgba(252, 253, 254, 0.5);--tblr-tertiary-color-rgb:252,253,254;--tblr-tertiary-bg:#0e1722;--tblr-tertiary-bg-rgb:14,23,34;--tblr-primary-text-emphasis:#6698ca;--tblr-secondary-text-emphasis:#a3abb4;--tblr-success-text-emphasis:#82d18f;--tblr-info-text-emphasis:#8ec2ed;--tblr-warning-text-emphasis:#faa46a;--tblr-danger-text-emphasis:#e68888;--tblr-light-text-emphasis:#f6f8fb;--tblr-dark-text-emphasis:#dadfe5;--tblr-primary-bg-subtle:#001121;--tblr-secondary-bg-subtle:#14171a;--tblr-success-bg-subtle:#09240e;--tblr-info-bg-subtle:#0d1f2d;--tblr-warning-bg-subtle:#311501;--tblr-danger-bg-subtle:#2b0b0b;--tblr-light-bg-subtle:#182433;--tblr-dark-bg-subtle:#0c121a;--tblr-primary-border-subtle:#003264;--tblr-secondary-border-subtle:#3d454e;--tblr-success-border-subtle:#1c6b29;--tblr-info-border-subtle:#285c87;--tblr-warning-border-subtle:#943e04;--tblr-danger-border-subtle:#802222;--tblr-light-border-subtle:#3a4859;--tblr-dark-border-subtle:#182433;--tblr-heading-color:inherit;--tblr-link-color:#6698ca;--tblr-link-hover-color:#85add5;--tblr-link-color-rgb:102,152,202;--tblr-link-hover-color-rgb:133,173,213;--tblr-code-color:var(--tblr-gray-300);--tblr-border-color:#1f2e41;--tblr-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-form-valid-color:#82d18f;--tblr-form-valid-border-color:#82d18f;--tblr-form-invalid-color:#e68888;--tblr-form-invalid-border-color:#e68888}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.hr,hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}.h1,h1{font-size:1.5rem}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1rem}.h4,h4{font-size:.875rem}.h5,h5{font-size:.75rem}.h6,h6{font-size:.625rem}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:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:85.714285%}.mark,mark{padding:.1875em;background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,1));text-decoration:none}a:hover{--tblr-link-color-rgb:var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:85.714285%;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:85.714285%;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:2px}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:.75rem;padding-bottom:.75rem;color:var(--tblr-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}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:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2rem;font-weight:300;line-height:1.2}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:85.714285%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:85.714285%;color:#667382}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:85.714285%;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--tblr-breakpoint-xs:0;--tblr-breakpoint-sm:576px;--tblr-breakpoint-md:768px;--tblr-breakpoint-lg:992px;--tblr-breakpoint-xl:1200px;--tblr-breakpoint-xxl:1400px}.row{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-right:calc(-.5 * var(--tblr-gutter-x));margin-left:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows,1),1fr);grid-template-columns:repeat(var(--tblr-columns,12),1fr);gap:var(--tblr-gap,var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-0,.gy-0{--tblr-gutter-y:0}.g-1,.gx-1{--tblr-gutter-x:0.25rem}.g-1,.gy-1{--tblr-gutter-y:0.25rem}.g-2,.gx-2{--tblr-gutter-x:0.5rem}.g-2,.gy-2{--tblr-gutter-y:0.5rem}.g-3,.gx-3{--tblr-gutter-x:1rem}.g-3,.gy-3{--tblr-gutter-y:1rem}.g-4,.gx-4{--tblr-gutter-x:1.5rem}.g-4,.gy-4{--tblr-gutter-y:1.5rem}.g-5,.gx-5{--tblr-gutter-x:2rem}.g-5,.gy-5{--tblr-gutter-y:2rem}.g-6,.gx-6{--tblr-gutter-x:3rem}.g-6,.gy-6{--tblr-gutter-y:3rem}.g-7,.gx-7{--tblr-gutter-x:5rem}.g-7,.gy-7{--tblr-gutter-y:5rem}.g-8,.gx-8{--tblr-gutter-x:8rem}.g-8,.gy-8{--tblr-gutter-y:8rem}@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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-sm-0,.gy-sm-0{--tblr-gutter-y:0}.g-sm-1,.gx-sm-1{--tblr-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x:1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y:1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x:2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y:2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x:3rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y:3rem}.g-sm-7,.gx-sm-7{--tblr-gutter-x:5rem}.g-sm-7,.gy-sm-7{--tblr-gutter-y:5rem}.g-sm-8,.gx-sm-8{--tblr-gutter-x:8rem}.g-sm-8,.gy-sm-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-md-0,.gy-md-0{--tblr-gutter-y:0}.g-md-1,.gx-md-1{--tblr-gutter-x:0.25rem}.g-md-1,.gy-md-1{--tblr-gutter-y:0.25rem}.g-md-2,.gx-md-2{--tblr-gutter-x:0.5rem}.g-md-2,.gy-md-2{--tblr-gutter-y:0.5rem}.g-md-3,.gx-md-3{--tblr-gutter-x:1rem}.g-md-3,.gy-md-3{--tblr-gutter-y:1rem}.g-md-4,.gx-md-4{--tblr-gutter-x:1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y:1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x:2rem}.g-md-5,.gy-md-5{--tblr-gutter-y:2rem}.g-md-6,.gx-md-6{--tblr-gutter-x:3rem}.g-md-6,.gy-md-6{--tblr-gutter-y:3rem}.g-md-7,.gx-md-7{--tblr-gutter-x:5rem}.g-md-7,.gy-md-7{--tblr-gutter-y:5rem}.g-md-8,.gx-md-8{--tblr-gutter-x:8rem}.g-md-8,.gy-md-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-lg-0,.gy-lg-0{--tblr-gutter-y:0}.g-lg-1,.gx-lg-1{--tblr-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x:1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y:1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x:2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y:2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x:3rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y:3rem}.g-lg-7,.gx-lg-7{--tblr-gutter-x:5rem}.g-lg-7,.gy-lg-7{--tblr-gutter-y:5rem}.g-lg-8,.gx-lg-8{--tblr-gutter-x:8rem}.g-lg-8,.gy-lg-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-xl-0,.gy-xl-0{--tblr-gutter-y:0}.g-xl-1,.gx-xl-1{--tblr-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x:1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y:1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x:2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y:2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x:3rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y:3rem}.g-xl-7,.gx-xl-7{--tblr-gutter-x:5rem}.g-xl-7,.gy-xl-7{--tblr-gutter-y:5rem}.g-xl-8,.gx-xl-8{--tblr-gutter-x:8rem}.g-xl-8,.gy-xl-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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{--tblr-gutter-x:0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y:0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x:2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y:2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x:3rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y:3rem}.g-xxl-7,.gx-xxl-7{--tblr-gutter-x:5rem}.g-xxl-7,.gy-xxl-7{--tblr-gutter-y:5rem}.g-xxl-8,.gx-xxl-8{--tblr-gutter-x:8rem}.g-xxl-8,.gy-xxl-8{--tblr-gutter-y:8rem}}.markdown>table,.table{--tblr-table-color-type:initial;--tblr-table-bg-type:initial;--tblr-table-color-state:initial;--tblr-table-bg-state:initial;--tblr-table-color:inherit;--tblr-table-bg:transparent;--tblr-table-border-color:var(--tblr-border-color-translucent);--tblr-table-accent-bg:transparent;--tblr-table-striped-color:inherit;--tblr-table-striped-bg:var(--tblr-bg-surface-tertiary);--tblr-table-active-color:inherit;--tblr-table-active-bg:rgba(0, 0, 0, 0.1);--tblr-table-hover-color:inherit;--tblr-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.markdown>table>:not(caption)>*>*,.table>:not(caption)>*>*{padding:.75rem .75rem;color:var(--tblr-table-color-state,var(--tblr-table-color-type,var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state,var(--tblr-table-bg-type,var(--tblr-table-accent-bg)))}.markdown>table>tbody,.table>tbody{vertical-align:inherit}.markdown>table>thead,.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.markdown>table>:not(caption)>*,.table-bordered>:not(caption)>*{border-width:var(--tblr-border-width) 0}.markdown>table>:not(caption)>*>*,.table-bordered>:not(caption)>*>*{border-width:0 var(--tblr-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(even)>*{--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state:var(--tblr-table-active-color);--tblr-table-bg-state:var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state:var(--tblr-table-hover-color);--tblr-table-bg-state:var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color:#182433;--tblr-table-bg:#ccdded;--tblr-table-border-color:#bacbda;--tblr-table-striped-bg:#c3d4e4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#bacbda;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#bfcfdf;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color:#182433;--tblr-table-bg:#e0e3e6;--tblr-table-border-color:#ccd0d4;--tblr-table-striped-bg:#d6d9dd;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#ccd0d4;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#d1d5d9;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color:#182433;--tblr-table-bg:#d5f0da;--tblr-table-border-color:#c2dcc9;--tblr-table-striped-bg:#cce6d2;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c2dcc9;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#c7e1cd;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color:#182433;--tblr-table-bg:#d9ebf9;--tblr-table-border-color:#c6d7e5;--tblr-table-striped-bg:#cfe1ef;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c6d7e5;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#cbdcea;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color:#182433;--tblr-table-bg:#fde1cd;--tblr-table-border-color:#e6cebe;--tblr-table-striped-bg:#f2d8c5;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e6cebe;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ecd3c1;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color:#182433;--tblr-table-bg:#f7d7d7;--tblr-table-border-color:#e1c5c7;--tblr-table-striped-bg:#eccecf;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e1c5c7;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#e6cacb;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color:#182433;--tblr-table-bg:#fcfdfe;--tblr-table-border-color:#e5e7ea;--tblr-table-striped-bg:#f1f2f4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e5e7ea;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ebedef;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color:#fcfdfe;--tblr-table-bg:#182433;--tblr-table-border-color:#2f3a47;--tblr-table-striped-bg:#232f3d;--tblr-table-striped-color:#fcfdfe;--tblr-table-active-bg:#2f3a47;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#293442;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.4285714286}.col-form-label-lg{padding-top:calc(.5rem + var(--tblr-border-width));padding-bottom:calc(.5rem + var(--tblr-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.125rem + var(--tblr-border-width));padding-bottom:calc(.125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:85.714285%;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.4285714286em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-webkit-input-placeholder{color:#929dab;opacity:1}.form-control:-ms-input-placeholder{color:#929dab;opacity:1}.form-control::-ms-input-placeholder{color:#929dab;opacity:1}.form-control::placeholder{color:#929dab;opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::-webkit-file-upload-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.4285714286;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-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.4285714286em + .25rem + calc(var(--tblr-border-width) * 2));padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-sm::file-selector-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2));padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}.form-control-lg::file-selector-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}textarea.form-control{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-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='%23929dab' 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:.5625rem 2.25rem .5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.125rem;padding-bottom:.125rem;padding-left:.25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-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='%23fcfdfe' 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.25rem;padding-left:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:left;margin-left:-2rem}.form-check-reverse{padding-right:2rem;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-2rem;margin-left:0}.form-check-input{--tblr-form-check-bg:var(--tblr-bg-forms);width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80aad3;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-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='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-left:2.5rem}.form-switch .form-check-input{--tblr-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='%23dadfe5'/%3e%3c/svg%3e");width:2rem;margin-left:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:left center;border-radius:2rem;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--tblr-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='%2380aad3'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--tblr-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='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5rem;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5rem;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:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-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.25rem;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 #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;-webkit-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3cce4}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3cce4}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-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(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-ms-input-placeholder)~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-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 .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#667382}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--tblr-bg-surface-secondary)}.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:.5625rem .75rem;font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-secondary);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-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(--tblr-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-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(--tblr-form-valid-border-color);padding-right:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) right calc(.3571428572em + .28125rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--tblr-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"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--tblr-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--tblr-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-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(--tblr-form-invalid-border-color);padding-right:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) right calc(.3571428572em + .28125rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--tblr-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"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--tblr-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--tblr-btn-padding-x:1rem;--tblr-btn-padding-y:0.5625rem;--tblr-btn-font-family:var(--tblr-font-sans-serif);--tblr-btn-font-size:0.875rem;--tblr-btn-font-weight:var(--tblr-font-weight-medium);--tblr-btn-line-height:1.4285714286;--tblr-btn-color:var(--tblr-body-color);--tblr-btn-bg:transparent;--tblr-btn-border-width:var(--tblr-border-width);--tblr-btn-border-color:transparent;--tblr-btn-border-radius:var(--tblr-border-radius);--tblr-btn-hover-border-color:transparent;--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-disabled-opacity:0.4;--tblr-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.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(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight:400;--tblr-btn-color:var(--tblr-link-color);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-link-hover-color);--tblr-btn-hover-border-color:transparent;--tblr-btn-active-color:var(--tblr-link-hover-color);--tblr-btn-active-border-color:transparent;--tblr-btn-disabled-color:#667382;--tblr-btn-disabled-border-color:transparent;--tblr-btn-box-shadow:0 0 0 #000;--tblr-btn-focus-shadow-rgb:38,109,179;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--tblr-btn-padding-y:0.5rem;--tblr-btn-padding-x:0.75rem;--tblr-btn-font-size:1.25rem;--tblr-btn-border-radius:var(--tblr-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--tblr-btn-padding-y:0.125rem;--tblr-btn-padding-x:0.25rem;--tblr-btn-font-size:0.75rem;--tblr-btn-border-radius:var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.dropdown-menu{--tblr-dropdown-zindex:1000;--tblr-dropdown-min-width:11rem;--tblr-dropdown-padding-x:0;--tblr-dropdown-padding-y:0.25rem;--tblr-dropdown-spacer:1px;--tblr-dropdown-font-size:0.875rem;--tblr-dropdown-color:var(--tblr-body-color);--tblr-dropdown-bg:var(--tblr-bg-surface);--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-border-radius:var(--tblr-border-radius);--tblr-dropdown-border-width:var(--tblr-border-width);--tblr-dropdown-inner-border-radius:calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y:var(--tblr-spacer);--tblr-dropdown-box-shadow:var(--tblr-box-shadow-dropdown);--tblr-dropdown-link-color:inherit;--tblr-dropdown-link-hover-color:inherit;--tblr-dropdown-link-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x:0.75rem;--tblr-dropdown-item-padding-y:0.5rem;--tblr-dropdown-header-color:#667382;--tblr-dropdown-header-padding-x:0.75rem;--tblr-dropdown-header-padding-y:0.25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:left;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--tblr-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(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-135deg)}.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(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(45deg)}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color:#dadfe5;--tblr-dropdown-bg:#182433;--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-link-color:#dadfe5;--tblr-dropdown-link-hover-color:#ffffff;--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:#929dab;--tblr-dropdown-header-color:#929dab}.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(--tblr-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--tblr-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:.75rem;padding-left:.75rem}.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:.1875rem;padding-left:.1875rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.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(--tblr-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{--tblr-nav-link-padding-x:0.75rem;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-secondary);--tblr-nav-link-hover-color:var(--tblr-link-hover-color);--tblr-nav-link-disabled-color:var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width:var(--tblr-border-width);--tblr-nav-tabs-border-color:var(--tblr-border-color);--tblr-nav-tabs-border-radius:var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color:var(--tblr-body-color);--tblr-nav-tabs-link-active-bg:var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--tblr-nav-tabs-border-radius);border-top-right-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--tblr-nav-pills-border-radius:var(--tblr-border-radius);--tblr-nav-pills-link-active-color:var(--tblr-primary);--tblr-nav-pills-link-active-bg:var(--tblr-active-bg)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap:1rem;--tblr-nav-underline-border-width:0.125rem;--tblr-nav-underline-link-active-color:var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--tblr-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:600;color:var(--tblr-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{--tblr-navbar-padding-x:0;--tblr-navbar-padding-y:0.25rem;--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-hover-color:rgba(var(--tblr-emphasis-color-rgb), 0.8);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:var(--tblr-body-color) color;--tblr-navbar-brand-padding-y:0.5rem;--tblr-navbar-brand-margin-end:1rem;--tblr-navbar-brand-font-size:1.25rem;--tblr-navbar-brand-color:var(--tblr-body-color);--tblr-navbar-brand-hover-color:var(--tblr-body-color) color;--tblr-navbar-nav-link-padding-x:0.75rem;--tblr-navbar-toggler-padding-y:0;--tblr-navbar-toggler-padding-x:0;--tblr-navbar-toggler-font-size:1rem;--tblr-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%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color:rgba(var(--tblr-emphasis-color-rgb), 0.15);--tblr-navbar-toggler-border-radius:var(--tblr-border-radius);--tblr-navbar-toggler-focus-width:0;--tblr-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(--tblr-navbar-padding-y) var(--tblr-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(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-right:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x:0;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-navbar-color);--tblr-nav-link-hover-color:var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color:var(--tblr-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(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-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(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-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;box-shadow:none;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],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color:rgba(255, 255, 255, 0.7);--tblr-navbar-hover-color:rgba(255, 255, 255, 0.75);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:#ffffff;--tblr-navbar-brand-color:#ffffff;--tblr-navbar-brand-hover-color:#ffffff;--tblr-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--tblr-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.7%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,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-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.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y:1.25rem;--tblr-card-spacer-x:1.25rem;--tblr-card-title-spacer-y:1.25rem;--tblr-card-border-width:var(--tblr-border-width);--tblr-card-border-color:var(--tblr-border-color-translucent);--tblr-card-border-radius:var(--tblr-border-radius);--tblr-card-box-shadow:var(--tblr-shadow-card);--tblr-card-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-card-cap-padding-y:1.25rem;--tblr-card-cap-padding-x:1.25rem;--tblr-card-cap-bg:var(--tblr-bg-surface-tertiary);--tblr-card-cap-color:inherit;--tblr-card-color:inherit;--tblr-card-bg:var(--tblr-bg-surface);--tblr-card-img-overlay-padding:1rem;--tblr-card-group-margin:1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>.hr,.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(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-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(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-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{--tblr-accordion-color:var(--tblr-body-color);--tblr-accordion-bg:transparent;--tblr-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;--tblr-accordion-border-color:var(--tblr-border-color-translucent);--tblr-accordion-border-width:var(--tblr-border-width);--tblr-accordion-border-radius:var(--tblr-border-radius);--tblr-accordion-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-btn-padding-x:1.25rem;--tblr-accordion-btn-padding-y:1rem;--tblr-accordion-btn-color:var(--tblr-body-color);--tblr-accordion-btn-bg:transparent;--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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");--tblr-accordion-btn-icon-width:1rem;--tblr-accordion-btn-icon-transform:rotate(-180deg);--tblr-accordion-btn-icon-transition:transform 0.2s ease-in-out;--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%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");--tblr-accordion-btn-focus-border-color:var(--tblr-border-color-translucent);--tblr-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-accordion-body-padding-x:1.25rem;--tblr-accordion-body-padding-y:1rem;--tblr-accordion-active-color:inherit;--tblr-accordion-active-bg:transparent}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x);font-size:.875rem;color:var(--tblr-accordion-btn-color);text-align:left;background-color:var(--tblr-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--tblr-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--tblr-accordion-active-color);background-color:var(--tblr-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--tblr-accordion-btn-active-icon);transform:var(--tblr-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--tblr-accordion-btn-icon-width);height:var(--tblr-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--tblr-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--tblr-accordion-btn-icon-width);transition:var(--tblr-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(--tblr-accordion-btn-focus-border-color);outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--tblr-accordion-color);background-color:var(--tblr-accordion-bg);border:var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--tblr-accordion-border-radius);border-top-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--tblr-accordion-inner-border-radius);border-top-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--tblr-accordion-inner-border-radius);border-bottom-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-body{padding:var(--tblr-accordion-body-padding-y) var(--tblr-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{--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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");--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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{--tblr-breadcrumb-padding-x:0;--tblr-breadcrumb-padding-y:0;--tblr-breadcrumb-margin-bottom:1rem;--tblr-breadcrumb-divider-color:var(--tblr-secondary);--tblr-breadcrumb-item-padding-x:0.5rem;--tblr-breadcrumb-item-active-color:inherit;display:flex;flex-wrap:wrap;padding:var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x);margin-bottom:var(--tblr-breadcrumb-margin-bottom);font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color)}.pagination{--tblr-pagination-padding-x:0.25rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.875rem;--tblr-pagination-color:var(--tblr-secondary);--tblr-pagination-bg:transparent;--tblr-pagination-border-width:0;--tblr-pagination-border-color:var(--tblr-border-color);--tblr-pagination-border-radius:var(--tblr-border-radius);--tblr-pagination-hover-color:var(--tblr-link-hover-color);--tblr-pagination-hover-bg:var(--tblr-tertiary-bg);--tblr-pagination-hover-border-color:var(--tblr-border-color);--tblr-pagination-focus-color:var(--tblr-link-hover-color);--tblr-pagination-focus-bg:var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-pagination-active-color:#ffffff;--tblr-pagination-active-bg:var(--tblr-primary);--tblr-pagination-active-border-color:var(--tblr-primary);--tblr-pagination-disabled-color:var(--tblr-disabled-color);--tblr-pagination-disabled-bg:transparent;--tblr-pagination-disabled-border-color:var(--tblr-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x:1.5rem;--tblr-pagination-padding-y:0.75rem;--tblr-pagination-font-size:1.09375rem;--tblr-pagination-border-radius:var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x:0.5rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.765625rem;--tblr-pagination-border-radius:var(--tblr-border-radius-sm)}.badge{--tblr-badge-padding-x:0.5em;--tblr-badge-padding-y:0.25em;--tblr-badge-font-size:85.714285%;--tblr-badge-font-weight:var(--tblr-font-weight-medium);--tblr-badge-color:var(--tblr-secondary);--tblr-badge-border-radius:var(--tblr-border-radius);display:inline-block;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-size:var(--tblr-badge-font-size);font-weight:var(--tblr-badge-font-weight);line-height:1;color:var(--tblr-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--tblr-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--tblr-alert-bg:transparent;--tblr-alert-padding-x:1rem;--tblr-alert-padding-y:0.75rem;--tblr-alert-margin-bottom:1rem;--tblr-alert-color:inherit;--tblr-alert-border-color:transparent;--tblr-alert-border:var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius:var(--tblr-border-radius);--tblr-alert-link-color:inherit;position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);color:var(--tblr-alert-color);background-color:var(--tblr-alert-bg);border:var(--tblr-alert-border);border-radius:var(--tblr-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.9375rem 1rem}.alert-primary{--tblr-alert-color:var(--tblr-primary-text-emphasis);--tblr-alert-bg:var(--tblr-primary-bg-subtle);--tblr-alert-border-color:var(--tblr-primary-border-subtle);--tblr-alert-link-color:var(--tblr-primary-text-emphasis)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary-text-emphasis);--tblr-alert-bg:var(--tblr-secondary-bg-subtle);--tblr-alert-border-color:var(--tblr-secondary-border-subtle);--tblr-alert-link-color:var(--tblr-secondary-text-emphasis)}.alert-success{--tblr-alert-color:var(--tblr-success-text-emphasis);--tblr-alert-bg:var(--tblr-success-bg-subtle);--tblr-alert-border-color:var(--tblr-success-border-subtle);--tblr-alert-link-color:var(--tblr-success-text-emphasis)}.alert-info{--tblr-alert-color:var(--tblr-info-text-emphasis);--tblr-alert-bg:var(--tblr-info-bg-subtle);--tblr-alert-border-color:var(--tblr-info-border-subtle);--tblr-alert-link-color:var(--tblr-info-text-emphasis)}.alert-warning{--tblr-alert-color:var(--tblr-warning-text-emphasis);--tblr-alert-bg:var(--tblr-warning-bg-subtle);--tblr-alert-border-color:var(--tblr-warning-border-subtle);--tblr-alert-link-color:var(--tblr-warning-text-emphasis)}.alert-danger{--tblr-alert-color:var(--tblr-danger-text-emphasis);--tblr-alert-bg:var(--tblr-danger-bg-subtle);--tblr-alert-border-color:var(--tblr-danger-border-subtle);--tblr-alert-link-color:var(--tblr-danger-text-emphasis)}.alert-light{--tblr-alert-color:var(--tblr-light-text-emphasis);--tblr-alert-bg:var(--tblr-light-bg-subtle);--tblr-alert-border-color:var(--tblr-light-border-subtle);--tblr-alert-link-color:var(--tblr-light-text-emphasis)}.alert-dark{--tblr-alert-color:var(--tblr-dark-text-emphasis);--tblr-alert-bg:var(--tblr-dark-bg-subtle);--tblr-alert-border-color:var(--tblr-dark-border-subtle);--tblr-alert-link-color:var(--tblr-dark-text-emphasis)}.alert-muted{--tblr-alert-color:var(--tblr-muted-text-emphasis);--tblr-alert-bg:var(--tblr-muted-bg-subtle);--tblr-alert-border-color:var(--tblr-muted-border-subtle);--tblr-alert-link-color:var(--tblr-muted-text-emphasis)}.alert-blue{--tblr-alert-color:var(--tblr-blue-text-emphasis);--tblr-alert-bg:var(--tblr-blue-bg-subtle);--tblr-alert-border-color:var(--tblr-blue-border-subtle);--tblr-alert-link-color:var(--tblr-blue-text-emphasis)}.alert-azure{--tblr-alert-color:var(--tblr-azure-text-emphasis);--tblr-alert-bg:var(--tblr-azure-bg-subtle);--tblr-alert-border-color:var(--tblr-azure-border-subtle);--tblr-alert-link-color:var(--tblr-azure-text-emphasis)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo-text-emphasis);--tblr-alert-bg:var(--tblr-indigo-bg-subtle);--tblr-alert-border-color:var(--tblr-indigo-border-subtle);--tblr-alert-link-color:var(--tblr-indigo-text-emphasis)}.alert-purple{--tblr-alert-color:var(--tblr-purple-text-emphasis);--tblr-alert-bg:var(--tblr-purple-bg-subtle);--tblr-alert-border-color:var(--tblr-purple-border-subtle);--tblr-alert-link-color:var(--tblr-purple-text-emphasis)}.alert-pink{--tblr-alert-color:var(--tblr-pink-text-emphasis);--tblr-alert-bg:var(--tblr-pink-bg-subtle);--tblr-alert-border-color:var(--tblr-pink-border-subtle);--tblr-alert-link-color:var(--tblr-pink-text-emphasis)}.alert-red{--tblr-alert-color:var(--tblr-red-text-emphasis);--tblr-alert-bg:var(--tblr-red-bg-subtle);--tblr-alert-border-color:var(--tblr-red-border-subtle);--tblr-alert-link-color:var(--tblr-red-text-emphasis)}.alert-orange{--tblr-alert-color:var(--tblr-orange-text-emphasis);--tblr-alert-bg:var(--tblr-orange-bg-subtle);--tblr-alert-border-color:var(--tblr-orange-border-subtle);--tblr-alert-link-color:var(--tblr-orange-text-emphasis)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow-text-emphasis);--tblr-alert-bg:var(--tblr-yellow-bg-subtle);--tblr-alert-border-color:var(--tblr-yellow-border-subtle);--tblr-alert-link-color:var(--tblr-yellow-text-emphasis)}.alert-lime{--tblr-alert-color:var(--tblr-lime-text-emphasis);--tblr-alert-bg:var(--tblr-lime-bg-subtle);--tblr-alert-border-color:var(--tblr-lime-border-subtle);--tblr-alert-link-color:var(--tblr-lime-text-emphasis)}.alert-green{--tblr-alert-color:var(--tblr-green-text-emphasis);--tblr-alert-bg:var(--tblr-green-bg-subtle);--tblr-alert-border-color:var(--tblr-green-border-subtle);--tblr-alert-link-color:var(--tblr-green-text-emphasis)}.alert-teal{--tblr-alert-color:var(--tblr-teal-text-emphasis);--tblr-alert-bg:var(--tblr-teal-bg-subtle);--tblr-alert-border-color:var(--tblr-teal-border-subtle);--tblr-alert-link-color:var(--tblr-teal-text-emphasis)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan-text-emphasis);--tblr-alert-bg:var(--tblr-cyan-bg-subtle);--tblr-alert-border-color:var(--tblr-cyan-border-subtle);--tblr-alert-link-color:var(--tblr-cyan-text-emphasis)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook-text-emphasis);--tblr-alert-bg:var(--tblr-facebook-bg-subtle);--tblr-alert-border-color:var(--tblr-facebook-border-subtle);--tblr-alert-link-color:var(--tblr-facebook-text-emphasis)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter-text-emphasis);--tblr-alert-bg:var(--tblr-twitter-bg-subtle);--tblr-alert-border-color:var(--tblr-twitter-border-subtle);--tblr-alert-link-color:var(--tblr-twitter-text-emphasis)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin-text-emphasis);--tblr-alert-bg:var(--tblr-linkedin-bg-subtle);--tblr-alert-border-color:var(--tblr-linkedin-border-subtle);--tblr-alert-link-color:var(--tblr-linkedin-text-emphasis)}.alert-google{--tblr-alert-color:var(--tblr-google-text-emphasis);--tblr-alert-bg:var(--tblr-google-bg-subtle);--tblr-alert-border-color:var(--tblr-google-border-subtle);--tblr-alert-link-color:var(--tblr-google-text-emphasis)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube-text-emphasis);--tblr-alert-bg:var(--tblr-youtube-bg-subtle);--tblr-alert-border-color:var(--tblr-youtube-border-subtle);--tblr-alert-link-color:var(--tblr-youtube-text-emphasis)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo-text-emphasis);--tblr-alert-bg:var(--tblr-vimeo-bg-subtle);--tblr-alert-border-color:var(--tblr-vimeo-border-subtle);--tblr-alert-link-color:var(--tblr-vimeo-text-emphasis)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble-text-emphasis);--tblr-alert-bg:var(--tblr-dribbble-bg-subtle);--tblr-alert-border-color:var(--tblr-dribbble-border-subtle);--tblr-alert-link-color:var(--tblr-dribbble-text-emphasis)}.alert-github{--tblr-alert-color:var(--tblr-github-text-emphasis);--tblr-alert-bg:var(--tblr-github-bg-subtle);--tblr-alert-border-color:var(--tblr-github-border-subtle);--tblr-alert-link-color:var(--tblr-github-text-emphasis)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram-text-emphasis);--tblr-alert-bg:var(--tblr-instagram-bg-subtle);--tblr-alert-border-color:var(--tblr-instagram-border-subtle);--tblr-alert-link-color:var(--tblr-instagram-text-emphasis)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest-text-emphasis);--tblr-alert-bg:var(--tblr-pinterest-bg-subtle);--tblr-alert-border-color:var(--tblr-pinterest-border-subtle);--tblr-alert-link-color:var(--tblr-pinterest-text-emphasis)}.alert-vk{--tblr-alert-color:var(--tblr-vk-text-emphasis);--tblr-alert-bg:var(--tblr-vk-bg-subtle);--tblr-alert-border-color:var(--tblr-vk-border-subtle);--tblr-alert-link-color:var(--tblr-vk-text-emphasis)}.alert-rss{--tblr-alert-color:var(--tblr-rss-text-emphasis);--tblr-alert-bg:var(--tblr-rss-bg-subtle);--tblr-alert-border-color:var(--tblr-rss-border-subtle);--tblr-alert-link-color:var(--tblr-rss-text-emphasis)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr-text-emphasis);--tblr-alert-bg:var(--tblr-flickr-bg-subtle);--tblr-alert-border-color:var(--tblr-flickr-border-subtle);--tblr-alert-link-color:var(--tblr-flickr-text-emphasis)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket-text-emphasis);--tblr-alert-bg:var(--tblr-bitbucket-bg-subtle);--tblr-alert-border-color:var(--tblr-bitbucket-border-subtle);--tblr-alert-link-color:var(--tblr-bitbucket-text-emphasis)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler-text-emphasis);--tblr-alert-bg:var(--tblr-tabler-bg-subtle);--tblr-alert-border-color:var(--tblr-tabler-border-subtle);--tblr-alert-link-color:var(--tblr-tabler-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--tblr-progress-height:0.5rem;--tblr-progress-font-size:0.65625rem;--tblr-progress-bg:var(--tblr-border-color);--tblr-progress-border-radius:var(--tblr-border-radius);--tblr-progress-box-shadow:var(--tblr-box-shadow-inset);--tblr-progress-bar-color:#ffffff;--tblr-progress-bar-bg:var(--tblr-primary);--tblr-progress-bar-transition:width 0.6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-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{--tblr-list-group-color:var(--tblr-body-color);--tblr-list-group-bg:inherit;--tblr-list-group-border-color:var(--tblr-border-color);--tblr-list-group-border-width:var(--tblr-border-width);--tblr-list-group-border-radius:var(--tblr-border-radius);--tblr-list-group-item-padding-x:1.25rem;--tblr-list-group-item-padding-y:1.25rem;--tblr-list-group-action-color:inherit;--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-list-group-action-active-color:var(--tblr-body-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-bg);--tblr-list-group-disabled-color:var(--tblr-secondary-color);--tblr-list-group-disabled-bg:inherit;--tblr-list-group-active-color:inherit;--tblr-list-group-active-bg:var(--tblr-active-bg);--tblr-list-group-active-border-color:var(--tblr-border-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--tblr-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(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-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(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-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(--tblr-list-group-border-width));border-top-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-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(--tblr-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(--tblr-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(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color:var(--tblr-primary-text-emphasis);--tblr-list-group-bg:var(--tblr-primary-bg-subtle);--tblr-list-group-border-color:var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-primary-border-subtle);--tblr-list-group-active-color:var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color:var(--tblr-secondary-text-emphasis);--tblr-list-group-bg:var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color:var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-active-color:var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color:var(--tblr-success-text-emphasis);--tblr-list-group-bg:var(--tblr-success-bg-subtle);--tblr-list-group-border-color:var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-success-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-success-border-subtle);--tblr-list-group-active-color:var(--tblr-success-bg-subtle);--tblr-list-group-active-bg:var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color:var(--tblr-info-text-emphasis);--tblr-list-group-bg:var(--tblr-info-bg-subtle);--tblr-list-group-border-color:var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-info-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-info-border-subtle);--tblr-list-group-active-color:var(--tblr-info-bg-subtle);--tblr-list-group-active-bg:var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color:var(--tblr-warning-text-emphasis);--tblr-list-group-bg:var(--tblr-warning-bg-subtle);--tblr-list-group-border-color:var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-warning-border-subtle);--tblr-list-group-active-color:var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg:var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color:var(--tblr-danger-text-emphasis);--tblr-list-group-bg:var(--tblr-danger-bg-subtle);--tblr-list-group-border-color:var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-danger-border-subtle);--tblr-list-group-active-color:var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg:var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color:var(--tblr-light-text-emphasis);--tblr-list-group-bg:var(--tblr-light-bg-subtle);--tblr-list-group-border-color:var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-light-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-light-border-subtle);--tblr-list-group-active-color:var(--tblr-light-bg-subtle);--tblr-list-group-active-bg:var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color:var(--tblr-dark-text-emphasis);--tblr-list-group-bg:var(--tblr-dark-bg-subtle);--tblr-list-group-border-color:var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dark-border-subtle);--tblr-list-group-active-color:var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color:var(--tblr-muted-text-emphasis);--tblr-list-group-bg:var(--tblr-muted-bg-subtle);--tblr-list-group-border-color:var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-muted-border-subtle);--tblr-list-group-active-color:var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg:var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color:var(--tblr-blue-text-emphasis);--tblr-list-group-bg:var(--tblr-blue-bg-subtle);--tblr-list-group-border-color:var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-blue-border-subtle);--tblr-list-group-active-color:var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg:var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color:var(--tblr-azure-text-emphasis);--tblr-list-group-bg:var(--tblr-azure-bg-subtle);--tblr-list-group-border-color:var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-azure-border-subtle);--tblr-list-group-active-color:var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg:var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color:var(--tblr-indigo-text-emphasis);--tblr-list-group-bg:var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color:var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-active-color:var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color:var(--tblr-purple-text-emphasis);--tblr-list-group-bg:var(--tblr-purple-bg-subtle);--tblr-list-group-border-color:var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-purple-border-subtle);--tblr-list-group-active-color:var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg:var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color:var(--tblr-pink-text-emphasis);--tblr-list-group-bg:var(--tblr-pink-bg-subtle);--tblr-list-group-border-color:var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pink-border-subtle);--tblr-list-group-active-color:var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color:var(--tblr-red-text-emphasis);--tblr-list-group-bg:var(--tblr-red-bg-subtle);--tblr-list-group-border-color:var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-red-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-red-border-subtle);--tblr-list-group-active-color:var(--tblr-red-bg-subtle);--tblr-list-group-active-bg:var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color:var(--tblr-orange-text-emphasis);--tblr-list-group-bg:var(--tblr-orange-bg-subtle);--tblr-list-group-border-color:var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-orange-border-subtle);--tblr-list-group-active-color:var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg:var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color:var(--tblr-yellow-text-emphasis);--tblr-list-group-bg:var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color:var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-active-color:var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg:var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color:var(--tblr-lime-text-emphasis);--tblr-list-group-bg:var(--tblr-lime-bg-subtle);--tblr-list-group-border-color:var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-lime-border-subtle);--tblr-list-group-active-color:var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg:var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color:var(--tblr-green-text-emphasis);--tblr-list-group-bg:var(--tblr-green-bg-subtle);--tblr-list-group-border-color:var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-green-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-green-border-subtle);--tblr-list-group-active-color:var(--tblr-green-bg-subtle);--tblr-list-group-active-bg:var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color:var(--tblr-teal-text-emphasis);--tblr-list-group-bg:var(--tblr-teal-bg-subtle);--tblr-list-group-border-color:var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-teal-border-subtle);--tblr-list-group-active-color:var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg:var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color:var(--tblr-cyan-text-emphasis);--tblr-list-group-bg:var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color:var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-active-color:var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg:var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-cyan-text-emphasis)}.list-group-item-facebook{--tblr-list-group-color:var(--tblr-facebook-text-emphasis);--tblr-list-group-bg:var(--tblr-facebook-bg-subtle);--tblr-list-group-border-color:var(--tblr-facebook-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-active-color:var(--tblr-facebook-bg-subtle);--tblr-list-group-active-bg:var(--tblr-facebook-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-facebook-text-emphasis)}.list-group-item-twitter{--tblr-list-group-color:var(--tblr-twitter-text-emphasis);--tblr-list-group-bg:var(--tblr-twitter-bg-subtle);--tblr-list-group-border-color:var(--tblr-twitter-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-active-color:var(--tblr-twitter-bg-subtle);--tblr-list-group-active-bg:var(--tblr-twitter-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-twitter-text-emphasis)}.list-group-item-linkedin{--tblr-list-group-color:var(--tblr-linkedin-text-emphasis);--tblr-list-group-bg:var(--tblr-linkedin-bg-subtle);--tblr-list-group-border-color:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-active-color:var(--tblr-linkedin-bg-subtle);--tblr-list-group-active-bg:var(--tblr-linkedin-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-linkedin-text-emphasis)}.list-group-item-google{--tblr-list-group-color:var(--tblr-google-text-emphasis);--tblr-list-group-bg:var(--tblr-google-bg-subtle);--tblr-list-group-border-color:var(--tblr-google-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-google-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-google-border-subtle);--tblr-list-group-active-color:var(--tblr-google-bg-subtle);--tblr-list-group-active-bg:var(--tblr-google-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-google-text-emphasis)}.list-group-item-youtube{--tblr-list-group-color:var(--tblr-youtube-text-emphasis);--tblr-list-group-bg:var(--tblr-youtube-bg-subtle);--tblr-list-group-border-color:var(--tblr-youtube-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-active-color:var(--tblr-youtube-bg-subtle);--tblr-list-group-active-bg:var(--tblr-youtube-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-youtube-text-emphasis)}.list-group-item-vimeo{--tblr-list-group-color:var(--tblr-vimeo-text-emphasis);--tblr-list-group-bg:var(--tblr-vimeo-bg-subtle);--tblr-list-group-border-color:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-active-color:var(--tblr-vimeo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vimeo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vimeo-text-emphasis)}.list-group-item-dribbble{--tblr-list-group-color:var(--tblr-dribbble-text-emphasis);--tblr-list-group-bg:var(--tblr-dribbble-bg-subtle);--tblr-list-group-border-color:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-active-color:var(--tblr-dribbble-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dribbble-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dribbble-text-emphasis)}.list-group-item-github{--tblr-list-group-color:var(--tblr-github-text-emphasis);--tblr-list-group-bg:var(--tblr-github-bg-subtle);--tblr-list-group-border-color:var(--tblr-github-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-github-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-github-border-subtle);--tblr-list-group-active-color:var(--tblr-github-bg-subtle);--tblr-list-group-active-bg:var(--tblr-github-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-github-text-emphasis)}.list-group-item-instagram{--tblr-list-group-color:var(--tblr-instagram-text-emphasis);--tblr-list-group-bg:var(--tblr-instagram-bg-subtle);--tblr-list-group-border-color:var(--tblr-instagram-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-active-color:var(--tblr-instagram-bg-subtle);--tblr-list-group-active-bg:var(--tblr-instagram-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-instagram-text-emphasis)}.list-group-item-pinterest{--tblr-list-group-color:var(--tblr-pinterest-text-emphasis);--tblr-list-group-bg:var(--tblr-pinterest-bg-subtle);--tblr-list-group-border-color:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-active-color:var(--tblr-pinterest-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pinterest-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pinterest-text-emphasis)}.list-group-item-vk{--tblr-list-group-color:var(--tblr-vk-text-emphasis);--tblr-list-group-bg:var(--tblr-vk-bg-subtle);--tblr-list-group-border-color:var(--tblr-vk-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vk-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vk-border-subtle);--tblr-list-group-active-color:var(--tblr-vk-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vk-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vk-text-emphasis)}.list-group-item-rss{--tblr-list-group-color:var(--tblr-rss-text-emphasis);--tblr-list-group-bg:var(--tblr-rss-bg-subtle);--tblr-list-group-border-color:var(--tblr-rss-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-rss-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-rss-border-subtle);--tblr-list-group-active-color:var(--tblr-rss-bg-subtle);--tblr-list-group-active-bg:var(--tblr-rss-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-rss-text-emphasis)}.list-group-item-flickr{--tblr-list-group-color:var(--tblr-flickr-text-emphasis);--tblr-list-group-bg:var(--tblr-flickr-bg-subtle);--tblr-list-group-border-color:var(--tblr-flickr-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-active-color:var(--tblr-flickr-bg-subtle);--tblr-list-group-active-bg:var(--tblr-flickr-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-flickr-text-emphasis)}.list-group-item-bitbucket{--tblr-list-group-color:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-bg:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-border-color:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-active-color:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-active-bg:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-bitbucket-text-emphasis)}.list-group-item-tabler{--tblr-list-group-color:var(--tblr-tabler-text-emphasis);--tblr-list-group-bg:var(--tblr-tabler-bg-subtle);--tblr-list-group-border-color:var(--tblr-tabler-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-active-color:var(--tblr-tabler-bg-subtle);--tblr-list-group-active-bg:var(--tblr-tabler-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-tabler-text-emphasis)}.btn-close{--tblr-btn-close-color:#182433;--tblr-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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");--tblr-btn-close-opacity:0.4;--tblr-btn-close-hover-opacity:0.75;--tblr-btn-close-focus-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-btn-close-focus-opacity:1;--tblr-btn-close-disabled-opacity:0.25;--tblr-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--tblr-btn-close-color);background:transparent var(--tblr-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:4px;opacity:var(--tblr-btn-close-opacity)}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.btn-close-white{filter:var(--tblr-btn-close-white-filter)}[data-bs-theme=dark] .btn-close,body[data-bs-theme=dark] [data-bs-theme=light] .btn-close{filter:var(--tblr-btn-close-white-filter)}.toast{--tblr-toast-zindex:1090;--tblr-toast-padding-x:0.75rem;--tblr-toast-padding-y:0.5rem;--tblr-toast-spacing:calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width:350px;--tblr-toast-font-size:0.875rem;--tblr-toast-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-border-width:var(--tblr-border-width);--tblr-toast-border-color:var(--tblr-border-color);--tblr-toast-border-radius:var(--tblr-border-radius);--tblr-toast-box-shadow:var(--tblr-box-shadow);--tblr-toast-header-color:var(--tblr-secondary);--tblr-toast-header-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-header-border-color:var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex:1090;position:absolute;z-index:var(--tblr-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(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--tblr-toast-padding-x));margin-left:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex:1055;--tblr-modal-width:540px;--tblr-modal-padding:1.5rem;--tblr-modal-margin:0.5rem;--tblr-modal-bg:var(--tblr-bg-surface);--tblr-modal-border-color:transparent;--tblr-modal-border-width:var(--tblr-border-width);--tblr-modal-border-radius:var(--tblr-border-radius-lg);--tblr-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-modal-inner-border-radius:calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x:1.5rem;--tblr-modal-header-padding-y:1.5rem;--tblr-modal-header-padding:1.5rem;--tblr-modal-header-border-color:var(--tblr-border-color);--tblr-modal-header-border-width:var(--tblr-border-width);--tblr-modal-title-line-height:1.4285714286;--tblr-modal-footer-gap:0.75rem;--tblr-modal-footer-bg:var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color:var(--tblr-border-color);--tblr-modal-footer-border-width:var(--tblr-border-width);position:fixed;top:0;left:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-1rem)}@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(--tblr-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(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex:1050;--tblr-backdrop-bg:#182433;--tblr-backdrop-opacity:0.24;position:fixed;top:0;left:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-left-radius:var(--tblr-modal-inner-border-radius);border-top-right-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin:calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x)) calc(-.5 * var(--tblr-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-right-radius:var(--tblr-modal-inner-border-radius);border-bottom-left-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--tblr-modal-margin:1.75rem;--tblr-modal-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0}.modal-dialog{max-width:var(--tblr-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--tblr-modal-width:380px}}@media (min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width:720px}}@media (min-width:1200px){.modal-xl{--tblr-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{--tblr-tooltip-zindex:1080;--tblr-tooltip-max-width:200px;--tblr-tooltip-padding-x:var(--tblr-spacer-2);--tblr-tooltip-padding-y:var(--tblr-spacer-2);--tblr-tooltip-font-size:0.765625rem;--tblr-tooltip-color:var(--tblr-light);--tblr-tooltip-bg:var(--tblr-bg-surface-dark);--tblr-tooltip-border-radius:var(--tblr-border-radius);--tblr-tooltip-opacity:0.9;--tblr-tooltip-arrow-width:0.8rem;--tblr-tooltip-arrow-height:0.4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;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(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-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(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-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(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex:1070;--tblr-popover-max-width:276px;--tblr-popover-font-size:0.765625rem;--tblr-popover-bg:var(--tblr-bg-surface);--tblr-popover-border-width:var(--tblr-border-width);--tblr-popover-border-color:var(--tblr-border-color);--tblr-popover-border-radius:var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius:calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-popover-header-padding-x:1rem;--tblr-popover-header-padding-y:0.5rem;--tblr-popover-header-font-size:0.875rem;--tblr-popover-header-color:inherit;--tblr-popover-header-bg:transparent;--tblr-popover-body-padding-x:1rem;--tblr-popover-body-padding-y:1rem;--tblr-popover-body-color:inherit;--tblr-popover-arrow-width:1rem;--tblr-popover-arrow-height:0.5rem;--tblr-popover-arrow-border:var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;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(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-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(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-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(--tblr-popover-arrow-width);margin-left:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-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(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-left-radius:var(--tblr-popover-inner-border-radius);border-top-right-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:1.5rem;height:1.5rem;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' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-border-width:2px;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem;--tblr-spinner-border-width:1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--tblr-offcanvas-zindex:1045;--tblr-offcanvas-width:400px;--tblr-offcanvas-height:30vh;--tblr-offcanvas-padding-x:1.5rem;--tblr-offcanvas-padding-y:1.5rem;--tblr-offcanvas-color:var(--tblr-body-color);--tblr-offcanvas-bg:var(--tblr-bg-surface);--tblr-offcanvas-border-width:var(--tblr-border-width);--tblr-offcanvas-border-color:var(--tblr-border-color);--tblr-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-offcanvas-transition:transform 0.3s ease-in-out;--tblr-offcanvas-title-line-height:1.4285714286}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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:#182433}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-right:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 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:#fcfdfe!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-secondary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-success{color:#fcfdfe!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-info{color:#fcfdfe!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-warning{color:#fcfdfe!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-danger{color:#fcfdfe!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-light{color:#182433!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dark{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-muted{color:#fcfdfe!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-blue{color:#fcfdfe!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-azure{color:#fcfdfe!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-indigo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-purple{color:#fcfdfe!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pink{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-red{color:#fcfdfe!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-orange{color:#fcfdfe!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-yellow{color:#fcfdfe!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-lime{color:#fcfdfe!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-green{color:#fcfdfe!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-teal{color:#fcfdfe!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-cyan{color:#fcfdfe!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-facebook{color:#fcfdfe!important;background-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-twitter{color:#fcfdfe!important;background-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-linkedin{color:#fcfdfe!important;background-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-google{color:#fcfdfe!important;background-color:RGBA(var(--tblr-google-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-youtube{color:#fcfdfe!important;background-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vimeo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dribbble{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-github{color:#fcfdfe!important;background-color:RGBA(var(--tblr-github-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-instagram{color:#fcfdfe!important;background-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pinterest{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vk{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vk-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-rss{color:#fcfdfe!important;background-color:RGBA(var(--tblr-rss-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-flickr{color:#fcfdfe!important;background-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-bitbucket{color:#fcfdfe!important;background-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-tabler{color:#fcfdfe!important;background-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-bg-opacity,1))!important}.link-primary{color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--tblr-success-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--tblr-info-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--tblr-light-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(253,253,254,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(19,29,41,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important}.link-muted{color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important}.link-muted:focus,.link-muted:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-blue{color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important}.link-blue:focus,.link-blue:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-azure{color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important}.link-azure:focus,.link-azure:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-indigo{color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-indigo:focus,.link-indigo:hover{color:RGBA(53,79,188,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important}.link-purple{color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important}.link-purple:focus,.link-purple:hover{color:RGBA(139,50,161,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important}.link-pink{color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pink:focus,.link-pink:hover{color:RGBA(171,41,86,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important}.link-red{color:RGBA(var(--tblr-red-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important}.link-red:focus,.link-red:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-orange{color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important}.link-orange:focus,.link-orange:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-yellow{color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important}.link-yellow:focus,.link-yellow:hover{color:RGBA(196,127,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important}.link-lime{color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important}.link-lime:focus,.link-lime:hover{color:RGBA(93,147,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important}.link-green{color:RGBA(var(--tblr-green-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important}.link-green:focus,.link-green:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-teal{color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important}.link-teal:focus,.link-teal:hover{color:RGBA(10,133,96,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important}.link-cyan{color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important}.link-cyan:focus,.link-cyan:hover{color:RGBA(18,130,147,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important}.link-facebook{color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important}.link-facebook:focus,.link-facebook:hover{color:RGBA(19,95,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important}.link-twitter{color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important}.link-twitter:focus,.link-twitter:hover{color:RGBA(23,129,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important}.link-linkedin{color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important}.link-linkedin:focus,.link-linkedin:hover{color:RGBA(8,82,155,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important}.link-google{color:RGBA(var(--tblr-google-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important}.link-google:focus,.link-google:hover{color:RGBA(176,62,52,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important}.link-youtube{color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important}.link-youtube:focus,.link-youtube:hover{color:RGBA(204,0,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important}.link-vimeo{color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vimeo:focus,.link-vimeo:hover{color:RGBA(21,146,187,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important}.link-dribbble{color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dribbble:focus,.link-dribbble:hover{color:RGBA(187,61,110,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important}.link-github{color:RGBA(var(--tblr-github-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important}.link-github:focus,.link-github:hover{color:RGBA(19,18,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important}.link-instagram{color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important}.link-instagram:focus,.link-instagram:hover{color:RGBA(182,51,76,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important}.link-pinterest{color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pinterest:focus,.link-pinterest:hover{color:RGBA(151,6,22,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important}.link-vk{color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vk:focus,.link-vk:hover{color:RGBA(79,105,134,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important}.link-rss{color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important}.link-rss:focus,.link-rss:hover{color:RGBA(204,132,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important}.link-flickr{color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important}.link-flickr:focus,.link-flickr:hover{color:RGBA(0,79,176,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important}.link-bitbucket{color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important}.link-bitbucket:focus,.link-bitbucket:hover{color:RGBA(0,66,163,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important}.link-tabler{color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important}.link-tabler:focus,.link-tabler:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x,0) var(--tblr-focus-ring-y,0) var(--tblr-focus-ring-blur,0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--tblr-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio:100%}.ratio-2x1{--tblr-aspect-ratio:50%}.ratio-1x2{--tblr-aspect-ratio:200%}.ratio-3x1{--tblr-aspect-ratio:33.3333333333%}.ratio-1x3{--tblr-aspect-ratio:300%}.ratio-4x3{--tblr-aspect-ratio:75%}.ratio-3x4{--tblr-aspect-ratio:133.3333333333%}.ratio-16x9{--tblr-aspect-ratio:56.25%}.ratio-9x16{--tblr-aspect-ratio:177.7777777778%}.ratio-21x9{--tblr-aspect-ratio:42.8571428571%}.ratio-9x21{--tblr-aspect-ratio:233.3333333333%}.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(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color:rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color:rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color:rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color:rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color:rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color:rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color:rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color:rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color:rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color:rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color:rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color:rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color:rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color:rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color:rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color:rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color:rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color:rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color:rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color:rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-facebook{--tblr-focus-ring-color:rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-twitter{--tblr-focus-ring-color:rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-linkedin{--tblr-focus-ring-color:rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-google{--tblr-focus-ring-color:rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-youtube{--tblr-focus-ring-color:rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vimeo{--tblr-focus-ring-color:rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dribbble{--tblr-focus-ring-color:rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-github{--tblr-focus-ring-color:rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-instagram{--tblr-focus-ring-color:rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pinterest{--tblr-focus-ring-color:rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vk{--tblr-focus-ring-color:rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-rss{--tblr-focus-ring-color:rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-flickr{--tblr-focus-ring-color:rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-bitbucket{--tblr-focus-ring-color:rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-tabler{--tblr-focus-ring-color:rgba(var(--tblr-tabler-rgb), var(--tblr-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(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-wide{border:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-0{border-left:0!important}.border-primary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-primary-rgb),var(--tblr-border-opacity))!important}.border-secondary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-secondary-rgb),var(--tblr-border-opacity))!important}.border-success{--tblr-border-opacity:1;border-color:rgba(var(--tblr-success-rgb),var(--tblr-border-opacity))!important}.border-info{--tblr-border-opacity:1;border-color:rgba(var(--tblr-info-rgb),var(--tblr-border-opacity))!important}.border-warning{--tblr-border-opacity:1;border-color:rgba(var(--tblr-warning-rgb),var(--tblr-border-opacity))!important}.border-danger{--tblr-border-opacity:1;border-color:rgba(var(--tblr-danger-rgb),var(--tblr-border-opacity))!important}.border-light{--tblr-border-opacity:1;border-color:rgba(var(--tblr-light-rgb),var(--tblr-border-opacity))!important}.border-dark{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dark-rgb),var(--tblr-border-opacity))!important}.border-muted{--tblr-border-opacity:1;border-color:rgba(var(--tblr-muted-rgb),var(--tblr-border-opacity))!important}.border-blue{--tblr-border-opacity:1;border-color:rgba(var(--tblr-blue-rgb),var(--tblr-border-opacity))!important}.border-azure{--tblr-border-opacity:1;border-color:rgba(var(--tblr-azure-rgb),var(--tblr-border-opacity))!important}.border-indigo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-indigo-rgb),var(--tblr-border-opacity))!important}.border-purple{--tblr-border-opacity:1;border-color:rgba(var(--tblr-purple-rgb),var(--tblr-border-opacity))!important}.border-pink{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pink-rgb),var(--tblr-border-opacity))!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-orange{--tblr-border-opacity:1;border-color:rgba(var(--tblr-orange-rgb),var(--tblr-border-opacity))!important}.border-yellow{--tblr-border-opacity:1;border-color:rgba(var(--tblr-yellow-rgb),var(--tblr-border-opacity))!important}.border-lime{--tblr-border-opacity:1;border-color:rgba(var(--tblr-lime-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-teal{--tblr-border-opacity:1;border-color:rgba(var(--tblr-teal-rgb),var(--tblr-border-opacity))!important}.border-cyan{--tblr-border-opacity:1;border-color:rgba(var(--tblr-cyan-rgb),var(--tblr-border-opacity))!important}.border-facebook{--tblr-border-opacity:1;border-color:rgba(var(--tblr-facebook-rgb),var(--tblr-border-opacity))!important}.border-twitter{--tblr-border-opacity:1;border-color:rgba(var(--tblr-twitter-rgb),var(--tblr-border-opacity))!important}.border-linkedin{--tblr-border-opacity:1;border-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-border-opacity))!important}.border-google{--tblr-border-opacity:1;border-color:rgba(var(--tblr-google-rgb),var(--tblr-border-opacity))!important}.border-youtube{--tblr-border-opacity:1;border-color:rgba(var(--tblr-youtube-rgb),var(--tblr-border-opacity))!important}.border-vimeo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-border-opacity))!important}.border-dribbble{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-border-opacity))!important}.border-github{--tblr-border-opacity:1;border-color:rgba(var(--tblr-github-rgb),var(--tblr-border-opacity))!important}.border-instagram{--tblr-border-opacity:1;border-color:rgba(var(--tblr-instagram-rgb),var(--tblr-border-opacity))!important}.border-pinterest{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-border-opacity))!important}.border-vk{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vk-rgb),var(--tblr-border-opacity))!important}.border-rss{--tblr-border-opacity:1;border-color:rgba(var(--tblr-rss-rgb),var(--tblr-border-opacity))!important}.border-flickr{--tblr-border-opacity:1;border-color:rgba(var(--tblr-flickr-rgb),var(--tblr-border-opacity))!important}.border-bitbucket{--tblr-border-opacity:1;border-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-border-opacity))!important}.border-tabler{--tblr-border-opacity:1;border-color:rgba(var(--tblr-tabler-rgb),var(--tblr-border-opacity))!important}.border-black{--tblr-border-opacity:1;border-color:rgba(var(--tblr-black-rgb),var(--tblr-border-opacity))!important}.border-white{--tblr-border-opacity:1;border-color:rgba(var(--tblr-white-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-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{--tblr-border-opacity:0.1}.border-opacity-25{--tblr-border-opacity:0.25}.border-opacity-50{--tblr-border-opacity:0.5}.border-opacity-75{--tblr-border-opacity:0.75}.border-opacity-100{--tblr-border-opacity:1}.w-0{width:0!important}.w-1{width:.25rem!important}.w-2{width:.5rem!important}.w-3{width:1rem!important}.w-4{width:1.5rem!important}.w-5{width:2rem!important}.w-6{width:3rem!important}.w-7{width:5rem!important}.w-8{width:8rem!important}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!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-0{height:0!important}.h-1{height:.25rem!important}.h-2{height:.5rem!important}.h-3{height:1rem!important}.h-4{height:1.5rem!important}.h-5{height:2rem!important}.h-6{height:3rem!important}.h-7{height:5rem!important}.h-8{height:8rem!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:3rem!important}.m-7{margin:5rem!important}.m-8{margin:8rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:2rem!important;margin-left:2rem!important}.mx-6{margin-right:3rem!important;margin-left:3rem!important}.mx-7{margin-right:5rem!important;margin-left:5rem!important}.mx-8{margin-right:8rem!important;margin-left:8rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:3rem!important}.mt-7{margin-top:5rem!important}.mt-8{margin-top:8rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:2rem!important}.me-6{margin-right:3rem!important}.me-7{margin-right:5rem!important}.me-8{margin-right:8rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:3rem!important}.mb-7{margin-bottom:5rem!important}.mb-8{margin-bottom:8rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:2rem!important}.ms-6{margin-left:3rem!important}.ms-7{margin-left:5rem!important}.ms-8{margin-left:8rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:3rem!important}.p-7{padding:5rem!important}.p-8{padding:8rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:2rem!important;padding-left:2rem!important}.px-6{padding-right:3rem!important;padding-left:3rem!important}.px-7{padding-right:5rem!important;padding-left:5rem!important}.px-8{padding-right:8rem!important;padding-left:8rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:3rem!important}.pt-7{padding-top:5rem!important}.pt-8{padding-top:8rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:2rem!important}.pe-6{padding-right:3rem!important}.pe-7{padding-right:5rem!important}.pe-8{padding-right:8rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:3rem!important}.pb-7{padding-bottom:5rem!important}.pb-8{padding-bottom:8rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:2rem!important}.ps-6{padding-left:3rem!important}.ps-7{padding-left:5rem!important}.ps-8{padding-left:8rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:3rem!important}.gap-7{gap:5rem!important}.gap-8{gap:8rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:3rem!important}.row-gap-7{row-gap:5rem!important}.row-gap-8{row-gap:8rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!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:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!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{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity:1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity:1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--tblr-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity:1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity:1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity:1;color:inherit!important}.text-opacity-25{--tblr-text-opacity:0.25}.text-opacity-50{--tblr-text-opacity:0.5}.text-opacity-75{--tblr-text-opacity:0.75}.text-opacity-100{--tblr-text-opacity:1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10{--tblr-link-opacity:0.1}.link-opacity-10-hover:hover{--tblr-link-opacity:0.1}.link-opacity-25{--tblr-link-opacity:0.25}.link-opacity-25-hover:hover{--tblr-link-opacity:0.25}.link-opacity-50{--tblr-link-opacity:0.5}.link-opacity-50-hover:hover{--tblr-link-opacity:0.5}.link-opacity-75{--tblr-link-opacity:0.75}.link-opacity-75-hover:hover{--tblr-link-opacity:0.75}.link-opacity-100{--tblr-link-opacity:1}.link-opacity-100-hover:hover{--tblr-link-opacity:1}.link-offset-1{text-underline-offset:.125em!important}.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2{text-underline-offset:.25em!important}.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3{text-underline-offset:.375em!important}.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-facebook{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-twitter{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-linkedin{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-google{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-youtube{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vimeo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dribbble{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-github{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-instagram{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pinterest{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vk{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-rss{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-flickr{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-bitbucket{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-tabler{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-underline-opacity-0{--tblr-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity:0}.link-underline-opacity-10{--tblr-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity:0.1}.link-underline-opacity-25{--tblr-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity:0.25}.link-underline-opacity-50{--tblr-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity:0.5}.link-underline-opacity-75{--tblr-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity:0.75}.link-underline-opacity-100{--tblr-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity:1}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity:0.1}.bg-opacity-25{--tblr-bg-opacity:0.25}.bg-opacity-50{--tblr-bg-opacity:0.5}.bg-opacity-75{--tblr-bg-opacity:0.75}.bg-opacity-100{--tblr-bg-opacity:1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-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;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-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(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-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(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-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(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-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(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-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(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-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(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-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(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-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(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-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}.object-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-scale-down{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-none{-o-object-fit:none!important;object-fit:none!important}.tracking-tight{letter-spacing:-.05em!important}.tracking-normal{letter-spacing:0!important}.tracking-wide{letter-spacing:.05em!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:-webkit-grab!important;cursor:grab!important}.cursor-grabbing{cursor:-webkit-grabbing!important;cursor:grabbing!important}.border-x{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-0{border-left:0!important;border-right:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{-moz-columns:2!important;columns:2!important}.columns-3{-moz-columns:3!important;columns:3!important}.columns-4{-moz-columns:4!important;columns:4!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:3rem!important}.m-sm-7{margin:5rem!important}.m-sm-8{margin:8rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:2rem!important;margin-left:2rem!important}.mx-sm-6{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-7{margin-right:5rem!important;margin-left:5rem!important}.mx-sm-8{margin-right:8rem!important;margin-left:8rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-sm-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:3rem!important}.mt-sm-7{margin-top:5rem!important}.mt-sm-8{margin-top:8rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:2rem!important}.me-sm-6{margin-right:3rem!important}.me-sm-7{margin-right:5rem!important}.me-sm-8{margin-right:8rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:3rem!important}.mb-sm-7{margin-bottom:5rem!important}.mb-sm-8{margin-bottom:8rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:2rem!important}.ms-sm-6{margin-left:3rem!important}.ms-sm-7{margin-left:5rem!important}.ms-sm-8{margin-left:8rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:3rem!important}.p-sm-7{padding:5rem!important}.p-sm-8{padding:8rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:2rem!important;padding-left:2rem!important}.px-sm-6{padding-right:3rem!important;padding-left:3rem!important}.px-sm-7{padding-right:5rem!important;padding-left:5rem!important}.px-sm-8{padding-right:8rem!important;padding-left:8rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-sm-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-sm-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:3rem!important}.pt-sm-7{padding-top:5rem!important}.pt-sm-8{padding-top:8rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:2rem!important}.pe-sm-6{padding-right:3rem!important}.pe-sm-7{padding-right:5rem!important}.pe-sm-8{padding-right:8rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:3rem!important}.pb-sm-7{padding-bottom:5rem!important}.pb-sm-8{padding-bottom:8rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:2rem!important}.ps-sm-6{padding-left:3rem!important}.ps-sm-7{padding-left:5rem!important}.ps-sm-8{padding-left:8rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:3rem!important}.gap-sm-7{gap:5rem!important}.gap-sm-8{gap:8rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:3rem!important}.row-gap-sm-7{row-gap:5rem!important}.row-gap-sm-8{row-gap:8rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-sm-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-sm-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}.columns-sm-2{-moz-columns:2!important;columns:2!important}.columns-sm-3{-moz-columns:3!important;columns:3!important}.columns-sm-4{-moz-columns:4!important;columns:4!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:3rem!important}.m-md-7{margin:5rem!important}.m-md-8{margin:8rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:2rem!important;margin-left:2rem!important}.mx-md-6{margin-right:3rem!important;margin-left:3rem!important}.mx-md-7{margin-right:5rem!important;margin-left:5rem!important}.mx-md-8{margin-right:8rem!important;margin-left:8rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-md-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:3rem!important}.mt-md-7{margin-top:5rem!important}.mt-md-8{margin-top:8rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:2rem!important}.me-md-6{margin-right:3rem!important}.me-md-7{margin-right:5rem!important}.me-md-8{margin-right:8rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:3rem!important}.mb-md-7{margin-bottom:5rem!important}.mb-md-8{margin-bottom:8rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:2rem!important}.ms-md-6{margin-left:3rem!important}.ms-md-7{margin-left:5rem!important}.ms-md-8{margin-left:8rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:3rem!important}.p-md-7{padding:5rem!important}.p-md-8{padding:8rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:2rem!important;padding-left:2rem!important}.px-md-6{padding-right:3rem!important;padding-left:3rem!important}.px-md-7{padding-right:5rem!important;padding-left:5rem!important}.px-md-8{padding-right:8rem!important;padding-left:8rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-md-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-md-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:3rem!important}.pt-md-7{padding-top:5rem!important}.pt-md-8{padding-top:8rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:2rem!important}.pe-md-6{padding-right:3rem!important}.pe-md-7{padding-right:5rem!important}.pe-md-8{padding-right:8rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:3rem!important}.pb-md-7{padding-bottom:5rem!important}.pb-md-8{padding-bottom:8rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:2rem!important}.ps-md-6{padding-left:3rem!important}.ps-md-7{padding-left:5rem!important}.ps-md-8{padding-left:8rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:3rem!important}.gap-md-7{gap:5rem!important}.gap-md-8{gap:8rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:3rem!important}.row-gap-md-7{row-gap:5rem!important}.row-gap-md-8{row-gap:8rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-md-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-md-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}.columns-md-2{-moz-columns:2!important;columns:2!important}.columns-md-3{-moz-columns:3!important;columns:3!important}.columns-md-4{-moz-columns:4!important;columns:4!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:3rem!important}.m-lg-7{margin:5rem!important}.m-lg-8{margin:8rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:2rem!important;margin-left:2rem!important}.mx-lg-6{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-7{margin-right:5rem!important;margin-left:5rem!important}.mx-lg-8{margin-right:8rem!important;margin-left:8rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-lg-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:3rem!important}.mt-lg-7{margin-top:5rem!important}.mt-lg-8{margin-top:8rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:2rem!important}.me-lg-6{margin-right:3rem!important}.me-lg-7{margin-right:5rem!important}.me-lg-8{margin-right:8rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:3rem!important}.mb-lg-7{margin-bottom:5rem!important}.mb-lg-8{margin-bottom:8rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:2rem!important}.ms-lg-6{margin-left:3rem!important}.ms-lg-7{margin-left:5rem!important}.ms-lg-8{margin-left:8rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:3rem!important}.p-lg-7{padding:5rem!important}.p-lg-8{padding:8rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:2rem!important;padding-left:2rem!important}.px-lg-6{padding-right:3rem!important;padding-left:3rem!important}.px-lg-7{padding-right:5rem!important;padding-left:5rem!important}.px-lg-8{padding-right:8rem!important;padding-left:8rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-lg-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-lg-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:3rem!important}.pt-lg-7{padding-top:5rem!important}.pt-lg-8{padding-top:8rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:2rem!important}.pe-lg-6{padding-right:3rem!important}.pe-lg-7{padding-right:5rem!important}.pe-lg-8{padding-right:8rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:3rem!important}.pb-lg-7{padding-bottom:5rem!important}.pb-lg-8{padding-bottom:8rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:2rem!important}.ps-lg-6{padding-left:3rem!important}.ps-lg-7{padding-left:5rem!important}.ps-lg-8{padding-left:8rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:3rem!important}.gap-lg-7{gap:5rem!important}.gap-lg-8{gap:8rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:3rem!important}.row-gap-lg-7{row-gap:5rem!important}.row-gap-lg-8{row-gap:8rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-lg-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-lg-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}.columns-lg-2{-moz-columns:2!important;columns:2!important}.columns-lg-3{-moz-columns:3!important;columns:3!important}.columns-lg-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:3rem!important}.m-xl-7{margin:5rem!important}.m-xl-8{margin:8rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xl-6{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-7{margin-right:5rem!important;margin-left:5rem!important}.mx-xl-8{margin-right:8rem!important;margin-left:8rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:3rem!important}.mt-xl-7{margin-top:5rem!important}.mt-xl-8{margin-top:8rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:2rem!important}.me-xl-6{margin-right:3rem!important}.me-xl-7{margin-right:5rem!important}.me-xl-8{margin-right:8rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:3rem!important}.mb-xl-7{margin-bottom:5rem!important}.mb-xl-8{margin-bottom:8rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:2rem!important}.ms-xl-6{margin-left:3rem!important}.ms-xl-7{margin-left:5rem!important}.ms-xl-8{margin-left:8rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:3rem!important}.p-xl-7{padding:5rem!important}.p-xl-8{padding:8rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xl-6{padding-right:3rem!important;padding-left:3rem!important}.px-xl-7{padding-right:5rem!important;padding-left:5rem!important}.px-xl-8{padding-right:8rem!important;padding-left:8rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:3rem!important}.pt-xl-7{padding-top:5rem!important}.pt-xl-8{padding-top:8rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:2rem!important}.pe-xl-6{padding-right:3rem!important}.pe-xl-7{padding-right:5rem!important}.pe-xl-8{padding-right:8rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:3rem!important}.pb-xl-7{padding-bottom:5rem!important}.pb-xl-8{padding-bottom:8rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:2rem!important}.ps-xl-6{padding-left:3rem!important}.ps-xl-7{padding-left:5rem!important}.ps-xl-8{padding-left:8rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:3rem!important}.gap-xl-7{gap:5rem!important}.gap-xl-8{gap:8rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:3rem!important}.row-gap-xl-7{row-gap:5rem!important}.row-gap-xl-8{row-gap:8rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.columns-xl-2{-moz-columns:2!important;columns:2!important}.columns-xl-3{-moz-columns:3!important;columns:3!important}.columns-xl-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:3rem!important}.m-xxl-7{margin:5rem!important}.m-xxl-8{margin:8rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xxl-6{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-7{margin-right:5rem!important;margin-left:5rem!important}.mx-xxl-8{margin-right:8rem!important;margin-left:8rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xxl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:3rem!important}.mt-xxl-7{margin-top:5rem!important}.mt-xxl-8{margin-top:8rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:2rem!important}.me-xxl-6{margin-right:3rem!important}.me-xxl-7{margin-right:5rem!important}.me-xxl-8{margin-right:8rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:3rem!important}.mb-xxl-7{margin-bottom:5rem!important}.mb-xxl-8{margin-bottom:8rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:2rem!important}.ms-xxl-6{margin-left:3rem!important}.ms-xxl-7{margin-left:5rem!important}.ms-xxl-8{margin-left:8rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:3rem!important}.p-xxl-7{padding:5rem!important}.p-xxl-8{padding:8rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xxl-6{padding-right:3rem!important;padding-left:3rem!important}.px-xxl-7{padding-right:5rem!important;padding-left:5rem!important}.px-xxl-8{padding-right:8rem!important;padding-left:8rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xxl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xxl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:3rem!important}.pt-xxl-7{padding-top:5rem!important}.pt-xxl-8{padding-top:8rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:2rem!important}.pe-xxl-6{padding-right:3rem!important}.pe-xxl-7{padding-right:5rem!important}.pe-xxl-8{padding-right:8rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:3rem!important}.pb-xxl-7{padding-bottom:5rem!important}.pb-xxl-8{padding-bottom:8rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:2rem!important}.ps-xxl-6{padding-left:3rem!important}.ps-xxl-7{padding-left:5rem!important}.ps-xxl-8{padding-left:8rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:3rem!important}.gap-xxl-7{gap:5rem!important}.gap-xxl-8{gap:8rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:3rem!important}.row-gap-xxl-7{row-gap:5rem!important}.row-gap-xxl-8{row-gap:8rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xxl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xxl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{-moz-columns:2!important;columns:2!important}.columns-xxl-3{-moz-columns:3!important;columns:3!important}.columns-xxl-4{-moz-columns:4!important;columns:4!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}}:host,:root{font-size:16px;height:100%}:host,:root,[data-bs-theme=light]{--tblr-primary:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-primary-fg:var(--tblr-light);--tblr-primary-darken:#004c95;--tblr-primary-lt:#e6eef6;--tblr-primary-lt-rgb:230,238,246;--tblr-secondary:#667382;--tblr-secondary-rgb:102,115,130;--tblr-secondary-fg:var(--tblr-light);--tblr-secondary-darken:#5c6875;--tblr-secondary-lt:#f0f1f3;--tblr-secondary-lt-rgb:240,241,243;--tblr-success:#2fb344;--tblr-success-rgb:47,179,68;--tblr-success-fg:var(--tblr-light);--tblr-success-darken:#2aa13d;--tblr-success-lt:#eaf7ec;--tblr-success-lt-rgb:234,247,236;--tblr-info:#4299e1;--tblr-info-rgb:66,153,225;--tblr-info-fg:var(--tblr-light);--tblr-info-darken:#3b8acb;--tblr-info-lt:#ecf5fc;--tblr-info-lt-rgb:236,245,252;--tblr-warning:#f76707;--tblr-warning-rgb:247,103,7;--tblr-warning-fg:var(--tblr-light);--tblr-warning-darken:#de5d06;--tblr-warning-lt:#fef0e6;--tblr-warning-lt-rgb:254,240,230;--tblr-danger:#d63939;--tblr-danger-rgb:214,57,57;--tblr-danger-fg:var(--tblr-light);--tblr-danger-darken:#c13333;--tblr-danger-lt:#fbebeb;--tblr-danger-lt-rgb:251,235,235;--tblr-light:#fcfdfe;--tblr-light-rgb:252,253,254;--tblr-light-fg:var(--tblr-dark);--tblr-light-darken:#e3e4e5;--tblr-light-lt:white;--tblr-light-lt-rgb:255,255,255;--tblr-dark:#182433;--tblr-dark-rgb:24,36,51;--tblr-dark-fg:var(--tblr-light);--tblr-dark-darken:#16202e;--tblr-dark-lt:#e8e9eb;--tblr-dark-lt-rgb:232,233,235;--tblr-muted:#667382;--tblr-muted-rgb:102,115,130;--tblr-muted-fg:var(--tblr-light);--tblr-muted-darken:#5c6875;--tblr-muted-lt:#f0f1f3;--tblr-muted-lt-rgb:240,241,243;--tblr-blue:#0054a6;--tblr-blue-rgb:0,84,166;--tblr-blue-fg:var(--tblr-light);--tblr-blue-darken:#004c95;--tblr-blue-lt:#e6eef6;--tblr-blue-lt-rgb:230,238,246;--tblr-azure:#4299e1;--tblr-azure-rgb:66,153,225;--tblr-azure-fg:var(--tblr-light);--tblr-azure-darken:#3b8acb;--tblr-azure-lt:#ecf5fc;--tblr-azure-lt-rgb:236,245,252;--tblr-indigo:#4263eb;--tblr-indigo-rgb:66,99,235;--tblr-indigo-fg:var(--tblr-light);--tblr-indigo-darken:#3b59d4;--tblr-indigo-lt:#eceffd;--tblr-indigo-lt-rgb:236,239,253;--tblr-purple:#ae3ec9;--tblr-purple-rgb:174,62,201;--tblr-purple-fg:var(--tblr-light);--tblr-purple-darken:#9d38b5;--tblr-purple-lt:#f7ecfa;--tblr-purple-lt-rgb:247,236,250;--tblr-pink:#d6336c;--tblr-pink-rgb:214,51,108;--tblr-pink-fg:var(--tblr-light);--tblr-pink-darken:#c12e61;--tblr-pink-lt:#fbebf0;--tblr-pink-lt-rgb:251,235,240;--tblr-red:#d63939;--tblr-red-rgb:214,57,57;--tblr-red-fg:var(--tblr-light);--tblr-red-darken:#c13333;--tblr-red-lt:#fbebeb;--tblr-red-lt-rgb:251,235,235;--tblr-orange:#f76707;--tblr-orange-rgb:247,103,7;--tblr-orange-fg:var(--tblr-light);--tblr-orange-darken:#de5d06;--tblr-orange-lt:#fef0e6;--tblr-orange-lt-rgb:254,240,230;--tblr-yellow:#f59f00;--tblr-yellow-rgb:245,159,0;--tblr-yellow-fg:var(--tblr-light);--tblr-yellow-darken:#dd8f00;--tblr-yellow-lt:#fef5e6;--tblr-yellow-lt-rgb:254,245,230;--tblr-lime:#74b816;--tblr-lime-rgb:116,184,22;--tblr-lime-fg:var(--tblr-light);--tblr-lime-darken:#68a614;--tblr-lime-lt:#f1f8e8;--tblr-lime-lt-rgb:241,248,232;--tblr-green:#2fb344;--tblr-green-rgb:47,179,68;--tblr-green-fg:var(--tblr-light);--tblr-green-darken:#2aa13d;--tblr-green-lt:#eaf7ec;--tblr-green-lt-rgb:234,247,236;--tblr-teal:#0ca678;--tblr-teal-rgb:12,166,120;--tblr-teal-fg:var(--tblr-light);--tblr-teal-darken:#0b956c;--tblr-teal-lt:#e7f6f2;--tblr-teal-lt-rgb:231,246,242;--tblr-cyan:#17a2b8;--tblr-cyan-rgb:23,162,184;--tblr-cyan-fg:var(--tblr-light);--tblr-cyan-darken:#1592a6;--tblr-cyan-lt:#e8f6f8;--tblr-cyan-lt-rgb:232,246,248;--tblr-facebook:#1877f2;--tblr-facebook-rgb:24,119,242;--tblr-facebook-fg:var(--tblr-light);--tblr-facebook-darken:#166bda;--tblr-facebook-lt:#e8f1fe;--tblr-facebook-lt-rgb:232,241,254;--tblr-twitter:#1da1f2;--tblr-twitter-rgb:29,161,242;--tblr-twitter-fg:var(--tblr-light);--tblr-twitter-darken:#1a91da;--tblr-twitter-lt:#e8f6fe;--tblr-twitter-lt-rgb:232,246,254;--tblr-linkedin:#0a66c2;--tblr-linkedin-rgb:10,102,194;--tblr-linkedin-fg:var(--tblr-light);--tblr-linkedin-darken:#095caf;--tblr-linkedin-lt:#e7f0f9;--tblr-linkedin-lt-rgb:231,240,249;--tblr-google:#dc4e41;--tblr-google-rgb:220,78,65;--tblr-google-fg:var(--tblr-light);--tblr-google-darken:#c6463b;--tblr-google-lt:#fcedec;--tblr-google-lt-rgb:252,237,236;--tblr-youtube:#ff0000;--tblr-youtube-rgb:255,0,0;--tblr-youtube-fg:var(--tblr-light);--tblr-youtube-darken:#e60000;--tblr-youtube-lt:#ffe6e6;--tblr-youtube-lt-rgb:255,230,230;--tblr-vimeo:#1ab7ea;--tblr-vimeo-rgb:26,183,234;--tblr-vimeo-fg:var(--tblr-light);--tblr-vimeo-darken:#17a5d3;--tblr-vimeo-lt:#e8f8fd;--tblr-vimeo-lt-rgb:232,248,253;--tblr-dribbble:#ea4c89;--tblr-dribbble-rgb:234,76,137;--tblr-dribbble-fg:var(--tblr-light);--tblr-dribbble-darken:#d3447b;--tblr-dribbble-lt:#fdedf3;--tblr-dribbble-lt-rgb:253,237,243;--tblr-github:#181717;--tblr-github-rgb:24,23,23;--tblr-github-fg:var(--tblr-light);--tblr-github-darken:#161515;--tblr-github-lt:#e8e8e8;--tblr-github-lt-rgb:232,232,232;--tblr-instagram:#e4405f;--tblr-instagram-rgb:228,64,95;--tblr-instagram-fg:var(--tblr-light);--tblr-instagram-darken:#cd3a56;--tblr-instagram-lt:#fcecef;--tblr-instagram-lt-rgb:252,236,239;--tblr-pinterest:#bd081c;--tblr-pinterest-rgb:189,8,28;--tblr-pinterest-fg:var(--tblr-light);--tblr-pinterest-darken:#aa0719;--tblr-pinterest-lt:#f8e6e8;--tblr-pinterest-lt-rgb:248,230,232;--tblr-vk:#6383a8;--tblr-vk-rgb:99,131,168;--tblr-vk-fg:var(--tblr-light);--tblr-vk-darken:#597697;--tblr-vk-lt:#eff3f6;--tblr-vk-lt-rgb:239,243,246;--tblr-rss:#ffa500;--tblr-rss-rgb:255,165,0;--tblr-rss-fg:var(--tblr-light);--tblr-rss-darken:#e69500;--tblr-rss-lt:#fff6e6;--tblr-rss-lt-rgb:255,246,230;--tblr-flickr:#0063dc;--tblr-flickr-rgb:0,99,220;--tblr-flickr-fg:var(--tblr-light);--tblr-flickr-darken:#0059c6;--tblr-flickr-lt:#e6effc;--tblr-flickr-lt-rgb:230,239,252;--tblr-bitbucket:#0052cc;--tblr-bitbucket-rgb:0,82,204;--tblr-bitbucket-fg:var(--tblr-light);--tblr-bitbucket-darken:#004ab8;--tblr-bitbucket-lt:#e6eefa;--tblr-bitbucket-lt-rgb:230,238,250;--tblr-tabler:#0054a6;--tblr-tabler-rgb:0,84,166;--tblr-tabler-fg:var(--tblr-light);--tblr-tabler-darken:#004c95;--tblr-tabler-lt:#e6eef6;--tblr-tabler-lt-rgb:230,238,246;--tblr-gray-50:#fcfdfe;--tblr-gray-50-rgb:252,253,254;--tblr-gray-50-fg:var(--tblr-dark);--tblr-gray-50-darken:#e3e4e5;--tblr-gray-50-lt:white;--tblr-gray-50-lt-rgb:255,255,255;--tblr-gray-100:#f6f8fb;--tblr-gray-100-rgb:246,248,251;--tblr-gray-100-fg:var(--tblr-dark);--tblr-gray-100-darken:#dddfe2;--tblr-gray-100-lt:#fefeff;--tblr-gray-100-lt-rgb:254,254,255;--tblr-gray-200:#eef1f4;--tblr-gray-200-rgb:238,241,244;--tblr-gray-200-fg:var(--tblr-dark);--tblr-gray-200-darken:#d6d9dc;--tblr-gray-200-lt:#fdfefe;--tblr-gray-200-lt-rgb:253,254,254;--tblr-gray-300:#dadfe5;--tblr-gray-300-rgb:218,223,229;--tblr-gray-300-fg:var(--tblr-dark);--tblr-gray-300-darken:#c4c9ce;--tblr-gray-300-lt:#fbfcfc;--tblr-gray-300-lt-rgb:251,252,252;--tblr-gray-400:#bbc3cd;--tblr-gray-400-rgb:187,195,205;--tblr-gray-400-fg:var(--tblr-light);--tblr-gray-400-darken:#a8b0b9;--tblr-gray-400-lt:#f8f9fa;--tblr-gray-400-lt-rgb:248,249,250;--tblr-gray-500:#929dab;--tblr-gray-500-rgb:146,157,171;--tblr-gray-500-fg:var(--tblr-light);--tblr-gray-500-darken:#838d9a;--tblr-gray-500-lt:#f4f5f7;--tblr-gray-500-lt-rgb:244,245,247;--tblr-gray-600:#667382;--tblr-gray-600-rgb:102,115,130;--tblr-gray-600-fg:var(--tblr-light);--tblr-gray-600-darken:#5c6875;--tblr-gray-600-lt:#f0f1f3;--tblr-gray-600-lt-rgb:240,241,243;--tblr-gray-700:#3a4859;--tblr-gray-700-rgb:58,72,89;--tblr-gray-700-fg:var(--tblr-light);--tblr-gray-700-darken:#344150;--tblr-gray-700-lt:#ebedee;--tblr-gray-700-lt-rgb:235,237,238;--tblr-gray-800:#182433;--tblr-gray-800-rgb:24,36,51;--tblr-gray-800-fg:var(--tblr-light);--tblr-gray-800-darken:#16202e;--tblr-gray-800-lt:#e8e9eb;--tblr-gray-800-lt-rgb:232,233,235;--tblr-gray-900:#040a11;--tblr-gray-900-rgb:4,10,17;--tblr-gray-900-fg:var(--tblr-light);--tblr-gray-900-darken:#04090f;--tblr-gray-900-lt:#e6e7e7;--tblr-gray-900-lt-rgb:230,231,231;--tblr-spacer-0:0;--tblr-spacer-1:0.25rem;--tblr-spacer-2:0.5rem;--tblr-spacer-3:1rem;--tblr-spacer-4:1.5rem;--tblr-spacer-5:2rem;--tblr-spacer-6:3rem;--tblr-spacer-7:5rem;--tblr-spacer-8:8rem;--tblr-spacer:1rem;--tblr-bg-surface:var(--tblr-white);--tblr-bg-surface-secondary:var(--tblr-gray-100);--tblr-bg-surface-tertiary:var(--tblr-gray-50);--tblr-bg-surface-dark:var(--tblr-dark);--tblr-bg-forms:var(--tblr-bg-surface);--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-dark-color:#bbc3cd;--tblr-border-dark-color-translucent:rgba(4, 32, 69, 0.27);--tblr-border-active-color:#b6bcc3;--tblr-icon-color:var(--tblr-gray-500);--tblr-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-disabled-bg:var(--tblr-bg-surface-secondary);--tblr-disabled-color:var(--tblr-gray-300);--tblr-code-color:var(--tblr-gray-600);--tblr-code-bg:var(--tblr-bg-surface-secondary);--tblr-dark-mode-border-color:#1f2e41;--tblr-dark-mode-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-dark-mode-border-color-active:#2c415d;--tblr-dark-mode-border-dark-color:#1f2e41;--tblr-page-padding:var(--tblr-spacer-3);--tblr-page-padding-y:var(--tblr-spacer-4);--tblr-font-weight-light:300;--tblr-font-weight-normal:400;--tblr-font-weight-medium:500;--tblr-font-weight-bold:600;--tblr-font-weight-headings:var(--tblr-font-weight-bold);--tblr-font-size-h1:1.5rem;--tblr-font-size-h2:1.25rem;--tblr-font-size-h3:1rem;--tblr-font-size-h4:0.875rem;--tblr-font-size-h5:0.75rem;--tblr-font-size-h6:0.625rem;--tblr-line-height-h1:2rem;--tblr-line-height-h2:1.75rem;--tblr-line-height-h3:1.5rem;--tblr-line-height-h4:1.25rem;--tblr-line-height-h5:1rem;--tblr-line-height-h6:1rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-border:inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-box-shadow-transparent:0 0 0 0 transparent;--tblr-box-shadow-input:0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06);--tblr-box-shadow-card:0 0 4px rgba(var(--tblr-body-color-rgb), 0.04);--tblr-box-shadow-card-hover:rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0;--tblr-box-shadow-dropdown:0 16px 24px 2px rgba(0, 0, 0, 0.07),0 6px 30px 5px rgba(0, 0, 0, 0.06),0 8px 10px -5px rgba(0, 0, 0, 0.1)}@media (max-width:991.98px){:host,:root,[data-bs-theme=light]{--tblr-page-padding:var(--tblr-spacer-2)}}@keyframes pulse{from{opacity:1;transform:scale3d(.8,.8,.8)}50%{transform:scale3d(1,1,1);opacity:1}to{opacity:1;transform:scale3d(.8,.8,.8)}}@keyframes tada{0%{transform:scale3d(1,1,1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}50%{transform:scale3d(1,1,1)}}@keyframes rotate-360{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{from{opacity:0}50%{opacity:1}to{opacity:0}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0;position:relative;min-height:100%;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:0 0}}*{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){::-webkit-scrollbar{-webkit-transition:none;transition:none}}::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}::-webkit-scrollbar-track{background:0 0}:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}::-webkit-scrollbar-corner{background:0 0}.layout-fluid .container,.layout-fluid [class*=" container-"],.layout-fluid [class^=container-]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius:0;--tblr-theme-boxed-width:1320px}@media (min-width:768px){.layout-boxed{background:#182433 linear-gradient(to right,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius:4px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media (min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-left-radius:var(--tblr-theme-boxed-border-radius);border-top-right-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg:var(--tblr-bg-surface);--tblr-navbar-border-width:var(--tblr-border-width);--tblr-navbar-active-border-color:var(--tblr-primary);--tblr-navbar-active-bg:rgba(0, 0, 0, 0.06);--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-border-color:var(--tblr-border-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2rem;min-height:2rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;right:.375rem;transform:translate(50%,-50%)}.navbar-nav{margin:0;padding:0}@media (max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s;position:relative}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon:after,.navbar-toggler-icon:before{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;left:0;transition:inherit}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon:after,.navbar-toggler-icon:before{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media (prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(-90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color:transparent!important;background:0 0!important}.navbar-nav{align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media (min-width:576px){.navbar-vertical.navbar-expand-sm{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:576px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media (min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-left:15rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-vertical.navbar-expand-md{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media (min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-left:15rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:992px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-left:15rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1200px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1400px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}@media (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-left:15rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;left:0;right:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center .container{margin-top:auto;margin-bottom:auto}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y)}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media (min-width:768px){.page-cover{min-height:12rem}}@media (min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h4);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-right:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur:20px;--tblr-page-cover-padding:1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur,0));left:calc(-2 * var(--tblr-page-cover-blur,0));right:calc(-2 * var(--tblr-page-cover-blur,0));bottom:calc(-2 * var(--tblr-page-cover-blur,0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:#fff;padding:2rem 0;color:var(--tblr-secondary);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}body.theme-dark .hide-theme-dark,body[data-bs-theme=dark] .hide-theme-dark{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-muted:#3a4859;--tblr-body-bg:#151f2c;--tblr-body-bg-rgb:21,31,44;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-bg-forms:#151f2c;--tblr-bg-surface:#182433;--tblr-bg-surface-dark:#151f2c;--tblr-bg-surface-secondary:#1b293a;--tblr-bg-surface-tertiary:#151f2c;--tblr-link-color:#0069cf;--tblr-link-hover-color:#0054a6;--tblr-active-bg:#1b293a;--tblr-disabled-color:var(--tblr-gray-700);--tblr-border-color:var(--tblr-dark-mode-border-color);--tblr-border-color-translucent:var( + --tblr-dark-mode-border-color-translucent + );--tblr-border-dark-color:var(--tblr-dark-mode-border-dark-color);--tblr-border-color-active:var( + --tblr-dark-mode-border-color-active + );--tblr-btn-color:#151f2c;--tblr-code-color:var(--tblr-body-color);--tblr-code-bg:#1f2e41;--tblr-primary-lt:#16293f;--tblr-primary-lt-rgb:22,41,63;--tblr-secondary-lt:#202c3b;--tblr-secondary-lt-rgb:32,44,59;--tblr-success-lt:#1a3235;--tblr-success-lt-rgb:26,50,53;--tblr-info-lt:#1c3044;--tblr-info-lt-rgb:28,48,68;--tblr-warning-lt:#2e2b2f;--tblr-warning-lt-rgb:46,43,47;--tblr-danger-lt:#2b2634;--tblr-danger-lt-rgb:43,38,52;--tblr-light-lt:#2f3a47;--tblr-light-lt-rgb:47,58,71;--tblr-dark-lt:#182433;--tblr-dark-lt-rgb:24,36,51;--tblr-muted-lt:#202c3b;--tblr-muted-lt-rgb:32,44,59;--tblr-blue-lt:#16293f;--tblr-blue-lt-rgb:22,41,63;--tblr-azure-lt:#1c3044;--tblr-azure-lt-rgb:28,48,68;--tblr-indigo-lt:#1c2a45;--tblr-indigo-lt-rgb:28,42,69;--tblr-purple-lt:#272742;--tblr-purple-lt-rgb:39,39,66;--tblr-pink-lt:#2b2639;--tblr-pink-lt-rgb:43,38,57;--tblr-red-lt:#2b2634;--tblr-red-lt-rgb:43,38,52;--tblr-orange-lt:#2e2b2f;--tblr-orange-lt-rgb:46,43,47;--tblr-yellow-lt:#2e302e;--tblr-yellow-lt-rgb:46,48,46;--tblr-lime-lt:#213330;--tblr-lime-lt-rgb:33,51,48;--tblr-green-lt:#1a3235;--tblr-green-lt-rgb:26,50,53;--tblr-teal-lt:#17313a;--tblr-teal-lt-rgb:23,49,58;--tblr-cyan-lt:#183140;--tblr-cyan-lt-rgb:24,49,64;--tblr-facebook-lt:#182c46;--tblr-facebook-lt-rgb:24,44,70;--tblr-twitter-lt:#193146;--tblr-twitter-lt-rgb:25,49,70;--tblr-linkedin-lt:#172b41;--tblr-linkedin-lt-rgb:23,43,65;--tblr-google-lt:#2c2834;--tblr-google-lt-rgb:44,40,52;--tblr-youtube-lt:#2f202e;--tblr-youtube-lt-rgb:47,32,46;--tblr-vimeo-lt:#183345;--tblr-vimeo-lt-rgb:24,51,69;--tblr-dribbble-lt:#2d283c;--tblr-dribbble-lt-rgb:45,40,60;--tblr-github-lt:#182330;--tblr-github-lt-rgb:24,35,48;--tblr-instagram-lt:#2c2737;--tblr-instagram-lt-rgb:44,39,55;--tblr-pinterest-lt:#292131;--tblr-pinterest-lt-rgb:41,33,49;--tblr-vk-lt:#202e3f;--tblr-vk-lt-rgb:32,46,63;--tblr-rss-lt:#2f312e;--tblr-rss-lt-rgb:47,49,46;--tblr-flickr-lt:#162a44;--tblr-flickr-lt-rgb:22,42,68;--tblr-bitbucket-lt:#162942;--tblr-bitbucket-lt-rgb:22,41,66;--tblr-tabler-lt:#16293f;--tblr-tabler-lt-rgb:22,41,63}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color:var(--tblr-body-color)}.accordion-button:focus:not(:focus-visible){outline:0;box-shadow:none}.accordion-button:after{opacity:.7}.accordion-button:not(.collapsed){font-weight:var(--tblr-font-weight-bold);border-bottom-color:transparent;box-shadow:none}.accordion-button:not(.collapsed):after{opacity:1}.alert{--tblr-alert-color:var(--tblr-secondary);--tblr-alert-bg:var(--tblr-surface);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-left:.25rem var(--tblr-border-style) var(--tblr-alert-color);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.alert>:last-child{margin-bottom:0}.alert-important{border-color:transparent;background:var(--tblr-alert-color);color:#fff}.alert-important .alert-icon,.alert-important .alert-link,.alert-important .alert-title{color:inherit}.alert-important .alert-link:hover{color:inherit}.alert-important .btn-close{filter:var(--tblr-btn-close-white-filter)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-primary{--tblr-alert-color:var(--tblr-primary)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary)}.alert-success{--tblr-alert-color:var(--tblr-success)}.alert-info{--tblr-alert-color:var(--tblr-info)}.alert-warning{--tblr-alert-color:var(--tblr-warning)}.alert-danger{--tblr-alert-color:var(--tblr-danger)}.alert-light{--tblr-alert-color:var(--tblr-light)}.alert-dark{--tblr-alert-color:var(--tblr-dark)}.alert-muted{--tblr-alert-color:var(--tblr-muted)}.alert-blue{--tblr-alert-color:var(--tblr-blue)}.alert-azure{--tblr-alert-color:var(--tblr-azure)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo)}.alert-purple{--tblr-alert-color:var(--tblr-purple)}.alert-pink{--tblr-alert-color:var(--tblr-pink)}.alert-red{--tblr-alert-color:var(--tblr-red)}.alert-orange{--tblr-alert-color:var(--tblr-orange)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow)}.alert-lime{--tblr-alert-color:var(--tblr-lime)}.alert-green{--tblr-alert-color:var(--tblr-green)}.alert-teal{--tblr-alert-color:var(--tblr-teal)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin)}.alert-google{--tblr-alert-color:var(--tblr-google)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble)}.alert-github{--tblr-alert-color:var(--tblr-github)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest)}.alert-vk{--tblr-alert-color:var(--tblr-vk)}.alert-rss{--tblr-alert-color:var(--tblr-rss)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler)}.alert-icon{color:var(--tblr-alert-color);width:1.5rem!important;height:1.5rem!important;margin:-.125rem 1rem -.125rem 0}.alert-title{font-size:.875rem;line-height:1.25rem;font-weight:var(--tblr-font-weight-bold);margin-bottom:.25rem;color:var(--tblr-alert-color)}.avatar{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-bg:var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow:var(--tblr-box-shadow-border);--tblr-avatar-font-size:1rem;--tblr-avatar-icon-size:1.5rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow)}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;right:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size)/ 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size:1rem;--tblr-avatar-status-size:0.25rem;--tblr-avatar-font-size:0.5rem;--tblr-avatar-icon-size:0.75rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size:1.25rem;--tblr-avatar-status-size:0.375rem;--tblr-avatar-font-size:0.625rem;--tblr-avatar-icon-size:1rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size:2rem;--tblr-avatar-status-size:0.5rem;--tblr-avatar-font-size:0.75rem;--tblr-avatar-icon-size:1.25rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:0.875rem;--tblr-avatar-icon-size:1.5rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size:3rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:1.25rem;--tblr-avatar-icon-size:2rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size:5rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:2rem;--tblr-avatar-icon-size:3rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size:7rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:3rem;--tblr-avatar-icon-size:5rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap:0}.avatar-list-stacked .avatar{margin-right:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-cap-bg,var(--tblr-card-bg,var(--tblr-bg-surface)))}.avatar-upload{width:4rem;height:4rem;border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);flex-direction:column;transition:color .3s,background-color .3s}@media (prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-body-bg))}.badge{justify-content:center;align-items:center;background:var(--tblr-bg-surface-secondary);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;min-width:1.35714285em;font-weight:var(--tblr-font-weight-bold);letter-spacing:.04em;vertical-align:bottom}a.badge{color:var(--tblr-bg-surface)}.badge .avatar{box-sizing:content-box;width:1.25rem;height:1.25rem;margin:0 .5rem 0 -.5rem}.badge .icon{width:1em;height:1em;font-size:1rem;stroke-width:2}.badge-empty,.badge:empty{display:inline-block;width:.5rem;height:.5rem;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;right:0!important;transform:translate(50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.breadcrumb{--tblr-breadcrumb-item-active-font-weight:var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color:var(--tblr-disabled-color);--tblr-breadcrumb-link-color:var(--tblr-link-color);padding:0;margin:0;background:0 0}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color:var(--tblr-secondary)}.breadcrumb-item.active{font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-dots{--tblr-breadcrumb-divider:"·"}.breadcrumb-arrows{--tblr-breadcrumb-divider:"›"}.breadcrumb-bullets{--tblr-breadcrumb-divider:"•"}.btn{--tblr-btn-icon-size:1.25rem;--tblr-btn-bg:var(--tblr-bg-surface);--tblr-btn-color:var(--tblr-body-color);--tblr-btn-border-color:var(--tblr-border-color);--tblr-btn-hover-bg:var(--tblr-btn-bg);--tblr-btn-hover-border-color:var(--tblr-border-color-active);--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-active-color:var(--tblr-primary);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-btn-active-border-color:var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4);vertical-align:bottom;color:inherit}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4)}.btn .icon-right{margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#0054a6;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#004385;border-color:transparent}.btn-primary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-primary-fg);--tblr-btn-bg:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-border-color:var(--tblr-primary)}.btn-secondary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-secondary-fg);--tblr-btn-bg:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-border-color:var(--tblr-secondary)}.btn-success{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-success-fg);--tblr-btn-bg:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-border-color:var(--tblr-success)}.btn-info{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-info-fg);--tblr-btn-bg:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-border-color:var(--tblr-info)}.btn-warning{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-warning-fg);--tblr-btn-bg:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-border-color:var(--tblr-warning)}.btn-danger{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-danger-fg);--tblr-btn-bg:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-border-color:var(--tblr-danger)}.btn-light{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-light-fg);--tblr-btn-bg:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-border-color:var(--tblr-light)}.btn-dark{--tblr-btn-border-color:var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-active-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-color:var(--tblr-dark-fg);--tblr-btn-bg:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-border-color:var(--tblr-dark)}.btn-muted{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-muted-fg);--tblr-btn-bg:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-border-color:var(--tblr-muted)}.btn-blue{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-blue-fg);--tblr-btn-bg:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-border-color:var(--tblr-blue)}.btn-azure{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-azure-fg);--tblr-btn-bg:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-border-color:var(--tblr-azure)}.btn-indigo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-indigo-fg);--tblr-btn-bg:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-border-color:var(--tblr-indigo)}.btn-purple{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-purple-fg);--tblr-btn-bg:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-border-color:var(--tblr-purple)}.btn-pink{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pink-fg);--tblr-btn-bg:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-border-color:var(--tblr-pink)}.btn-red{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-red-fg);--tblr-btn-bg:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-border-color:var(--tblr-red)}.btn-orange{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-orange-fg);--tblr-btn-bg:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-border-color:var(--tblr-orange)}.btn-yellow{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-yellow-fg);--tblr-btn-bg:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-border-color:var(--tblr-yellow)}.btn-lime{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-lime-fg);--tblr-btn-bg:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-border-color:var(--tblr-lime)}.btn-green{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-green-fg);--tblr-btn-bg:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-border-color:var(--tblr-green)}.btn-teal{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-teal-fg);--tblr-btn-bg:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-border-color:var(--tblr-teal)}.btn-cyan{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-cyan-fg);--tblr-btn-bg:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-border-color:var(--tblr-cyan)}.btn-facebook{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-facebook-fg);--tblr-btn-bg:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-border-color:var(--tblr-facebook)}.btn-twitter{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-twitter-fg);--tblr-btn-bg:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-border-color:var(--tblr-twitter)}.btn-linkedin{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-linkedin-fg);--tblr-btn-bg:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-border-color:var(--tblr-linkedin)}.btn-google{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-google-fg);--tblr-btn-bg:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-border-color:var(--tblr-google)}.btn-youtube{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-youtube-fg);--tblr-btn-bg:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-border-color:var(--tblr-youtube)}.btn-vimeo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vimeo-fg);--tblr-btn-bg:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-border-color:var(--tblr-vimeo)}.btn-dribbble{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-dribbble-fg);--tblr-btn-bg:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-border-color:var(--tblr-dribbble)}.btn-github{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-github-fg);--tblr-btn-bg:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-border-color:var(--tblr-github)}.btn-instagram{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-instagram-fg);--tblr-btn-bg:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-border-color:var(--tblr-instagram)}.btn-pinterest{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pinterest-fg);--tblr-btn-bg:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-border-color:var(--tblr-pinterest)}.btn-vk{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vk-fg);--tblr-btn-bg:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-border-color:var(--tblr-vk)}.btn-rss{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-rss-fg);--tblr-btn-bg:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-border-color:var(--tblr-rss)}.btn-flickr{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-flickr-fg);--tblr-btn-bg:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-border-color:var(--tblr-flickr)}.btn-bitbucket{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-bitbucket-fg);--tblr-btn-bg:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-border-color:var(--tblr-bitbucket)}.btn-tabler{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-tabler-fg);--tblr-btn-bg:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-border-color:var(--tblr-tabler)}.btn-ghost-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-hover-border-color:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-hover-border-color:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-hover-border-color:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-hover-border-color:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-hover-border-color:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-hover-border-color:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-hover-border-color:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-hover-border-color:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-hover-border-color:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-hover-border-color:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-hover-border-color:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-hover-border-color:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-hover-border-color:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-hover-border-color:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-hover-border-color:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-hover-border-color:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-hover-border-color:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-hover-border-color:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-hover-border-color:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-hover-border-color:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-hover-border-color:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-hover-border-color:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-hover-border-color:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-hover-border-color:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-hover-border-color:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-hover-border-color:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-hover-border-color:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-hover-border-color:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-hover-border-color:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-hover-border-color:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-hover-border-color:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-hover-border-color:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-hover-border-color:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-hover-border-color:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-hover-border-color:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-hover-border-color:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-group-sm>.btn,.btn-sm{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:.75rem}.btn-group-lg>.btn,.btn-lg{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:2rem}.btn-pill{padding-right:1.5em;padding-left:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon{min-width:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);padding-left:0;padding-right:0}.btn-icon .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1.5rem;right:1.5rem;border-radius:100rem}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-right-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);left:calc(50% - var(--tblr-btn-icon-size)/ 2);top:calc(50% - var(--tblr-btn-icon-size)/ 2);animation:spinner-border .75s linear infinite}.btn-action{padding:0;border:0;color:var(--tblr-secondary);display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:var(--tblr-border-radius);background:0 0}.btn-action:after{content:none}.btn-action:focus{outline:0;box-shadow:none}.btn-action.show,.btn-action:hover{color:var(--tblr-body-color);background:var(--tblr-active-bg)}.btn-action.show{color:var(--tblr-primary)}.btn-action .icon{margin:0;width:1.25rem;height:1.25rem;font-size:1.25rem;stroke-width:1}.btn-actions{display:flex}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-box-shadow-input)}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group>.btn-check:checked+.btn,.btn-group>.btn.active,.btn-group>.btn:active{z-index:5}.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.next-month,.calendar-date.prev-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:0 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media (prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;right:0;left:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-end .date-item,.calendar-range.range-start .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{left:50%}.calendar-range.range-end:before{right:50%}.carousel-indicators-vertical{left:auto;top:0;margin:0 1rem 0 0;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0 3px;width:3px;height:30px;border:0;border-left:10px var(--tblr-border-style) transparent;border-right:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0;margin:0 3px;opacity:.75}@media (min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio,100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;left:0;right:0;bottom:0;height:90%;background:linear-gradient(0deg,rgba(24,36,51,.9),rgba(24,36,51,0))}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media (prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px 0}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-footer,.card-borderless .card-header{border-color:transparent}.card-stamp{--tblr-stamp-size:7rem;position:absolute;top:0;right:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-right-radius:4px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size:13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg,var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);right:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color:var(--tblr-primary);--tblr-card-bg:var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.25rem;text-align:center;transition:background .3s;border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}@media (prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset:.25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));right:var(--tblr-card-stacked-offset);left:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1.25rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background:rgba(24,36,51,.48)}.card-cover:first-child,.card-cover:first-child:before{border-radius:4px 4px 0 0}.card-cover-blurred:before{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-actions{margin:-.5rem -.5rem -.5rem auto;padding-left:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:0 0}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left{transform:rotate(-1.5deg)}.card-rotate-right{transform:rotate(1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px 0 rgba(0,0,0,.08)}.card-link-rotate:hover{transform:rotate(1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:0 0;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 0 0 .25rem;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media (min-width:768px){.card-md>.card-body{padding:2.5rem}}@media (min-width:768px){.card-lg>.card-body{padding:2rem}}@media (min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;right:.75rem;display:flex;margin-left:auto}.card-options-link{display:inline-block;min-width:1rem;margin-left:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;right:0;left:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;right:auto;bottom:0;width:2px;height:100%;border-radius:var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius)}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem;border-left:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem;border-right:0}.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child{border-top:0}.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th,.card-table thead tr:first-child td,.card-table thead tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-left:auto;margin-right:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-right:1.25rem;padding-left:1.25rem;border-right:0;border-left:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg,var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-left:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-left-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-right-radius:0}.card-tabs .card{border-bottom-left-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-left-radius:var(--tblr-card-border-radius);border-top-left-radius:0}.card-note{--tblr-card-bg:#fff7dd;--tblr-card-border-color:#fff1c9}.btn-close{cursor:pointer}.btn-close:focus{outline:0}.dropdown-menu{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-right:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-right:.5rem;margin-left:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;left:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0,9px,9px,0)}.dropdown-menu-arrow.dropdown-menu-end:before{right:.75rem;left:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-left:-.25rem}.dropend .dropdown-toggle:after{margin-left:auto}.dropdown-menu-card{padding:0}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding:1.5rem;--tblr-datagrid-item-width:15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media (min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-img img{height:8rem;width:auto}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-subtitle,.empty-title{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:16rem}.container-tight{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:30rem}.container-narrow{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:45rem}.row-0{margin-right:0;margin-left:0}.row-0>.col,.row-0>[class*=col-]{padding-right:0;padding-left:0}.row-0 .card{margin-bottom:0}.row-sm{margin-right:-.375rem;margin-left:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-right:.375rem;padding-left:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-right:-1.5rem;margin-left:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-right:-3rem;margin-left:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-right:3rem;padding-left:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:3rem}.space-x-6{display:flex;gap:3rem}.space-y-7{display:flex;flex-direction:column;gap:5rem}.space-x-7{display:flex;gap:5rem}.space-y-8{display:flex;flex-direction:column;gap:8rem}.space-x-8{display:flex;gap:8rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-left:1rem!important}.divide-x>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-left:0!important}.divide-x-0>:not(template):not(:last-child){padding-right:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-left:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-right:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-left:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-right:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-left:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-left:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-right:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-left:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-right:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:3rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:3rem!important}.divide-x-6>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-left:3rem!important}.divide-x-6>:not(template):not(:last-child){padding-right:3rem!important}.divide-y-7>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-7>:not(template):not(:first-child){padding-top:5rem!important}.divide-y-7>:not(template):not(:last-child){padding-bottom:5rem!important}.divide-x-7>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-7>:not(template):not(:first-child){padding-left:5rem!important}.divide-x-7>:not(template):not(:last-child){padding-right:5rem!important}.divide-y-8>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-8>:not(template):not(:first-child){padding-top:8rem!important}.divide-y-8>:not(template):not(:last-child){padding-bottom:8rem!important}.divide-x-8>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-8>:not(template):not(:first-child){padding-left:8rem!important}.divide-x-8>:not(template):not(:last-child){padding-right:8rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size:1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size:1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size:1rem;stroke-width:1}.icon-md{--tblr-icon-size:2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size:3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio:75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2)}.img-responsive-1x1{--tblr-img-responsive-ratio:100%}.img-responsive-2x1{--tblr-img-responsive-ratio:50%}.img-responsive-1x2{--tblr-img-responsive-ratio:200%}.img-responsive-3x1{--tblr-img-responsive-ratio:33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio:300%}.img-responsive-4x3{--tblr-img-responsive-ratio:75%}.img-responsive-3x4{--tblr-img-responsive-ratio:133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio:56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio:177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio:42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio:233.3333333333%}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-label-description{float:right;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.form-control+.form-hint,.form-select+.form-hint,.input-group+.form-hint{margin-top:.5rem}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-body-bg) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control.disabled,.form-control:disabled{color:var(--tblr-secondary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:rgba(0,0,0,.1);color:#fff;border-color:transparent}.form-control-dark:focus{background-color:rgba(0,0,0,.1);box-shadow:none;border-color:rgba(255,255,255,.24)}.form-control-dark::-webkit-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark:-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::placeholder{color:rgba(255,255,255,.6)}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:0 0!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-body-bg);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-box-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .btn,.input-group .form-control{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80aad3!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-right:0}.input-group-flat .form-control:not(:first-child){border-left:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-right:0}.input-group-flat .input-group-text:last-child{padding-left:0}.form-file-button{margin-left:0;border-left:0}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{right:0;left:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:3px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.form-colorinput-color:before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;left:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.form-imagecheck-image:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 -.5rem -.5rem 0;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 .5rem .5rem 0}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;left:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-box-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;right:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:left;padding:1.25rem 1.25rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-check{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0;box-shadow:var(--tblr-box-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single{margin:0}.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0}.form-switch-lg{padding-left:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-left:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-control.is-invalid-lite,.form-control.is-valid-lite,.form-select.is-invalid-lite,.form-select.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size:0.75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-left:0;margin-right:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-secondary);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);border-left-color:#0054a6;border-left-width:2px}.list-group-item:active,.list-group-item:focus,.list-group-item:hover{background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-group-item.disabled,.list-group-item:disabled{color:#929dab;background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item-actions.show,.list-group-hoverable .list-group-item:hover .list-group-item-actions{opacity:1}.list-group-transparent{--tblr-list-group-border-radius:0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:0 0;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated-item{padding:1rem 0}.list-separated-item:first-child{padding-top:0}.list-separated-item:last-child{padding-bottom:0}.list-separated-item+.list-separated-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-inline-item:not(:last-child){margin-right:auto;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" · ";-webkit-margin-end:.5rem;margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#0054a6;vertical-align:middle}.loader:after{position:absolute;top:0;left:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-left-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;right:0;left:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translateX(-100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content .btn-close{position:absolute;top:0;right:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{-webkit-transition:none;transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.modal-body::-webkit-scrollbar-corner{background:0 0}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;left:0;right:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:0 0;padding:0 3.5rem 0 1.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-left:1.25rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-left:.5rem}.nav-vertical .nav-item.show .nav-link,.nav-vertical .nav-link.active{font-weight:var(--tblr-font-weight-bold)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-left:1.25rem}.nav-bordered .nav-link{padding-left:0;padding-right:0;margin:0 0 -var(--tblr-border-width);border:0;border-bottom:2px var(--tblr-border-style) transparent;color:var(--tblr-secondary)}.nav-bordered .nav-item.show .nav-link,.nav-bordered .nav-link.active{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-link{display:flex;transition:color .3s;align-items:center}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link-toggle{margin-left:auto;padding:0 .25rem;transition:transform .3s}@media (prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-right:.5rem;color:var(--tblr-icon-color)}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#bbc3cd;font-size:.75rem}.stars .star:not(:first-child){margin-left:.25rem}.pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.page-link{min-width:1.75rem;border-radius:var(--tblr-border-radius)}.page-item{text-align:center}.page-item:not(.active) .page-link:hover{background:0 0}.page-item.page-next,.page-item.page-prev{flex:0 0 50%;text-align:left}.page-item.page-next{margin-left:auto;text-align:right}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#0054a6}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}@keyframes progress-indeterminate{0%{right:100%;left:-35%}100%,60%{right:-90%;left:100%}}.progress{position:relative;width:100%;line-height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg,var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;height:100%;background:0 0;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-left:auto;padding-left:2rem}.ribbon{--tblr-ribbon-margin:0.25rem;--tblr-ribbon-border-radius:var(--tblr-border-radius);position:absolute;top:.75rem;right:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;right:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));right:.75rem;width:2rem;padding:.5rem 0;border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;right:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-top.ribbon-start{right:auto;left:.75rem}.ribbon-top.ribbon-start:before{top:0;right:100%;left:auto}.ribbon-start{right:auto;left:calc(-1 * var(--tblr-ribbon-margin))}.ribbon-start:before{top:auto;bottom:100%;left:0;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-left:.25rem;border-radius:0 0 var(--tblr-ribbon-border-radius) 0}.ribbon-bookmark:after{position:absolute;top:0;right:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-right-width:0;border-left-color:transparent;border-left-width:.5rem}.ribbon-bookmark.ribbon-left{padding-right:.5rem}.ribbon-bookmark.ribbon-left:after{right:auto;left:100%;border-right-color:transparent;border-right-width:.5rem;border-left-width:0}.ribbon-bookmark.ribbon-top{padding-right:0;padding-bottom:.25rem;padding-left:0;border-radius:0 var(--tblr-ribbon-border-radius) 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;right:0;left:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:1.7142857143}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media (min-width:768px){.markdown>.hr,.markdown>hr{margin-top:3em;margin-bottom:3em}}.markdown>.h1,.markdown>.h2,.markdown>.h3,.markdown>.h4,.markdown>.h5,.markdown>.h6,.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{font-weight:var(--tblr-font-weight-bold)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img{border-radius:var(--tblr-border-radius)}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.steps{--tblr-steps-color:var(--tblr-primary);--tblr-steps-inactive-color:var(--tblr-border-color);--tblr-steps-dot-size:.5rem;--tblr-steps-border-width:2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color:var(--tblr-blue)}.steps-azure{--tblr-steps-color:var(--tblr-azure)}.steps-indigo{--tblr-steps-color:var(--tblr-indigo)}.steps-purple{--tblr-steps-color:var(--tblr-purple)}.steps-pink{--tblr-steps-color:var(--tblr-pink)}.steps-red{--tblr-steps-color:var(--tblr-red)}.steps-orange{--tblr-steps-color:var(--tblr-orange)}.steps-yellow{--tblr-steps-color:var(--tblr-yellow)}.steps-lime{--tblr-steps-color:var(--tblr-lime)}.steps-green{--tblr-steps-color:var(--tblr-green)}.steps-teal{--tblr-steps-color:var(--tblr-teal)}.steps-cyan{--tblr-steps-color:var(--tblr-cyan)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;left:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;left:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translateX(-50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size:1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset:6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset:-2px}.steps-vertical .step-item{text-align:left;padding-top:0;padding-left:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);left:0;transform:translate(0,0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translateX(-50%);top:var(--tblr-steps-dot-offset);left:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25,1.25)}60%{transform:scale(1.25,1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1,1)}30%{transform:scale(3,3)}80%{transform:scale(3,3)}100%{transform:scale(1,1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1,1)}80%{transform:scale(3,3);opacity:0}100%{transform:scale(3,3);opacity:0}}.status{--tblr-status-height:1.5rem;--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:0 0!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-secondary{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-success{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-info{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-warning{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-danger{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-light{--tblr-status-color:#fcfdfe;--tblr-status-color-rgb:252,253,254}.status-dark{--tblr-status-color:#182433;--tblr-status-color-rgb:24,36,51}.status-muted{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-blue{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-azure{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-indigo{--tblr-status-color:#4263eb;--tblr-status-color-rgb:66,99,235}.status-purple{--tblr-status-color:#ae3ec9;--tblr-status-color-rgb:174,62,201}.status-pink{--tblr-status-color:#d6336c;--tblr-status-color-rgb:214,51,108}.status-red{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-orange{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-yellow{--tblr-status-color:#f59f00;--tblr-status-color-rgb:245,159,0}.status-lime{--tblr-status-color:#74b816;--tblr-status-color-rgb:116,184,22}.status-green{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-teal{--tblr-status-color:#0ca678;--tblr-status-color-rgb:12,166,120}.status-cyan{--tblr-status-color:#17a2b8;--tblr-status-color-rgb:23,162,184}.status-facebook{--tblr-status-color:#1877f2;--tblr-status-color-rgb:24,119,242}.status-twitter{--tblr-status-color:#1da1f2;--tblr-status-color-rgb:29,161,242}.status-linkedin{--tblr-status-color:#0a66c2;--tblr-status-color-rgb:10,102,194}.status-google{--tblr-status-color:#dc4e41;--tblr-status-color-rgb:220,78,65}.status-youtube{--tblr-status-color:#ff0000;--tblr-status-color-rgb:255,0,0}.status-vimeo{--tblr-status-color:#1ab7ea;--tblr-status-color-rgb:26,183,234}.status-dribbble{--tblr-status-color:#ea4c89;--tblr-status-color-rgb:234,76,137}.status-github{--tblr-status-color:#181717;--tblr-status-color-rgb:24,23,23}.status-instagram{--tblr-status-color:#e4405f;--tblr-status-color-rgb:228,64,95}.status-pinterest{--tblr-status-color:#bd081c;--tblr-status-color-rgb:189,8,28}.status-vk{--tblr-status-color:#6383a8;--tblr-status-color-rgb:99,131,168}.status-rss{--tblr-status-color:#ffa500;--tblr-status-color-rgb:255,165,0}.status-flickr{--tblr-status-color:#0063dc;--tblr-status-color-rgb:0,99,220}.status-bitbucket{--tblr-status-color:#0052cc;--tblr-status-color-rgb:0,82,204}.status-tabler{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-dot{--tblr-status-dot-color:var(--tblr-status-color, #667382);--tblr-status-size:0.5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size:2.5rem;--tblr-status-indicator-color:var(--tblr-status-color, #667382);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size:.75rem;position:absolute;left:50%;top:50%;margin:calc(var(--tblr-status-circle-size)/ -2) 0 0 calc(var(--tblr-status-circle-size)/ -2);width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:0 0;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:0}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;left:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media (prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media (prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-down,.switch-icon-slide-left,.switch-icon-slide-right,.switch-icon-slide-up{overflow:hidden}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:opacity .3s,transform .3s}@media (prefers-reduced-motion:reduce){.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:none}}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-up .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-up.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-up.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-left .switch-icon-a{transform:translateX(0)}.switch-icon-slide-left .switch-icon-b{transform:translateX(100%)}.switch-icon-slide-left.active .switch-icon-a{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-right .switch-icon-a{transform:translateX(0)}.switch-icon-slide-right .switch-icon-b{transform:translateX(-100%)}.switch-icon-slide-right.active .switch-icon-a{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.markdown>table thead th,.table thead th{color:var(--tblr-secondary);background:var(--tblr-bg-surface-tertiary);font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.markdown>table thead th,.table thead th{background:0 0}}.table-responsive .markdown>table,.table-responsive .table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:0 0}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media (max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media (max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media (max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media (max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media (max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s;margin:-.5rem -.75rem;padding:.5rem .75rem}@media (prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort.asc,.table-sort.desc,.table-sort:hover{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,");background:currentColor;margin-left:.25rem}.table-sort.asc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:0 0}.tag{--tblr-tag-height:1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-box-shadow-input);gap:.5rem}.tag .btn-close{margin-right:-.25rem;margin-left:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size:0.625rem;--tblr-badge-padding-x:.25rem;--tblr-badge-padding-y:.125rem;margin-right:-.25rem}.tag-avatar,.tag-check,.tag-flag,.tag-icon,.tag-payment{margin-left:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-right:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{background:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.toast .toast-header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toast button[data-bs-dismiss=toast]{outline:0}.toast-primary{--tblr-toast-color:#0054a6}.toast-secondary{--tblr-toast-color:#667382}.toast-success{--tblr-toast-color:#2fb344}.toast-info{--tblr-toast-color:#4299e1}.toast-warning{--tblr-toast-color:#f76707}.toast-danger{--tblr-toast-color:#d63939}.toast-light{--tblr-toast-color:#fcfdfe}.toast-dark{--tblr-toast-color:#182433}.toast-muted{--tblr-toast-color:#667382}.toast-blue{--tblr-toast-color:#0054a6}.toast-azure{--tblr-toast-color:#4299e1}.toast-indigo{--tblr-toast-color:#4263eb}.toast-purple{--tblr-toast-color:#ae3ec9}.toast-pink{--tblr-toast-color:#d6336c}.toast-red{--tblr-toast-color:#d63939}.toast-orange{--tblr-toast-color:#f76707}.toast-yellow{--tblr-toast-color:#f59f00}.toast-lime{--tblr-toast-color:#74b816}.toast-green{--tblr-toast-color:#2fb344}.toast-teal{--tblr-toast-color:#0ca678}.toast-cyan{--tblr-toast-color:#17a2b8}.toast-facebook{--tblr-toast-color:#1877f2}.toast-twitter{--tblr-toast-color:#1da1f2}.toast-linkedin{--tblr-toast-color:#0a66c2}.toast-google{--tblr-toast-color:#dc4e41}.toast-youtube{--tblr-toast-color:#ff0000}.toast-vimeo{--tblr-toast-color:#1ab7ea}.toast-dribbble{--tblr-toast-color:#ea4c89}.toast-github{--tblr-toast-color:#181717}.toast-instagram{--tblr-toast-color:#e4405f}.toast-pinterest{--tblr-toast-color:#bd081c}.toast-vk{--tblr-toast-color:#6383a8}.toast-rss{--tblr-toast-color:#ffa500}.toast-flickr{--tblr-toast-color:#0063dc}.toast-bitbucket{--tblr-toast-color:#0052cc}.toast-tabler{--tblr-toast-color:#0054a6}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height:1.5rem;--tblr-tracking-gap-width:0.125rem;--tblr-tracking-block-border-radius:var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius:var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size:2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);left:calc(var(--tblr-timeline-icon-size)/ 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size,2.5rem);height:var(--tblr-timeline-icon-size,2.5rem);background:var(--tblr-gray-200);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-left:calc(var(--tblr-timeline-icon-size,2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-left:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-right:.5rem}.hr-text:after{content:"";margin-left:.5rem}.hr-text>:first-child{padding-right:.5rem;padding-left:0;color:var(--tblr-secondary)}.hr-text.hr-text-left:before{content:none}.hr-text.hr-text-left>:first-child{padding-right:.5rem;padding-left:.5rem}.hr-text.hr-text-right:before{content:""}.hr-text.hr-text-right:after{content:none}.hr-text.hr-text-right>:first-child{padding-right:0;padding-left:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{line-height:1.4}a{-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:inherit}.h1,h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}.h2,h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}.h3,h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}.h4,h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}.h5,h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}.h6,h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.strong,b,strong{font-weight:var(--tblr-font-weight-bold)}blockquote{padding-left:1rem;border-left:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:right}blockquote cite:before{content:"— "}ol,ul{padding-left:1.5rem}.hr,hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius)}pre code{background:0 0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}.kbd,kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%}.list-unstyled{margin-left:0}::-moz-selection{background-color:rgba(var(--tblr-primary-rgb),.16)}::selection{background-color:rgba(var(--tblr-primary-rgb),.16)}[class*=" link-"].disabled,[class^=link-].disabled{color:var(--tblr-disabled-color);pointer-events:none}.subheader{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)}.offcanvas-footer{padding:1.5rem 1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>:last-child{margin-bottom:0}.bg-white-overlay{color:#fff;background-color:rgba(252,253,254,.24)}.bg-dark-overlay{color:#fff;background-color:rgba(24,36,51,.24)}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-primary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-primary-lt-rgb),var(--tblr-bg-opacity))!important}.border-primary{border-color:#0054a6!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-secondary-lt-rgb),var(--tblr-bg-opacity))!important}.border-secondary{border-color:#667382!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-success-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-success-lt-rgb),var(--tblr-bg-opacity))!important}.border-success{border-color:#2fb344!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-info-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-info-lt-rgb),var(--tblr-bg-opacity))!important}.border-info{border-color:#4299e1!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-warning-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-warning-lt-rgb),var(--tblr-bg-opacity))!important}.border-warning{border-color:#f76707!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-danger-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-danger-lt-rgb),var(--tblr-bg-opacity))!important}.border-danger{border-color:#d63939!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-light-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-light-lt-rgb),var(--tblr-bg-opacity))!important}.border-light{border-color:#fcfdfe!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-dark-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dark-lt-rgb),var(--tblr-bg-opacity))!important}.border-dark{border-color:#182433!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-muted-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-muted-lt-rgb),var(--tblr-bg-opacity))!important}.border-muted{border-color:#667382!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-blue-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-blue-lt-rgb),var(--tblr-bg-opacity))!important}.border-blue{border-color:#0054a6!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-azure-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-azure-lt-rgb),var(--tblr-bg-opacity))!important}.border-azure{border-color:#4299e1!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-indigo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-indigo-lt-rgb),var(--tblr-bg-opacity))!important}.border-indigo{border-color:#4263eb!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-purple-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-purple-lt-rgb),var(--tblr-bg-opacity))!important}.border-purple{border-color:#ae3ec9!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-pink-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pink-lt-rgb),var(--tblr-bg-opacity))!important}.border-pink{border-color:#d6336c!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-red-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-red-lt-rgb),var(--tblr-bg-opacity))!important}.border-red{border-color:#d63939!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-orange-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-orange-lt-rgb),var(--tblr-bg-opacity))!important}.border-orange{border-color:#f76707!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-yellow-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-yellow-lt-rgb),var(--tblr-bg-opacity))!important}.border-yellow{border-color:#f59f00!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-lime-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-lime-lt-rgb),var(--tblr-bg-opacity))!important}.border-lime{border-color:#74b816!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-green-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-green-lt-rgb),var(--tblr-bg-opacity))!important}.border-green{border-color:#2fb344!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-teal-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-teal-lt-rgb),var(--tblr-bg-opacity))!important}.border-teal{border-color:#0ca678!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-cyan-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-cyan-lt-rgb),var(--tblr-bg-opacity))!important}.border-cyan{border-color:#17a2b8!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-facebook-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-facebook-lt-rgb),var(--tblr-bg-opacity))!important}.border-facebook{border-color:#1877f2!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-twitter-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-twitter-lt-rgb),var(--tblr-bg-opacity))!important}.border-twitter{border-color:#1da1f2!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-linkedin-lt-rgb),var(--tblr-bg-opacity))!important}.border-linkedin{border-color:#0a66c2!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-google-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-google-lt-rgb),var(--tblr-bg-opacity))!important}.border-google{border-color:#dc4e41!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-youtube-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-youtube-lt-rgb),var(--tblr-bg-opacity))!important}.border-youtube{border-color:red!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vimeo-lt-rgb),var(--tblr-bg-opacity))!important}.border-vimeo{border-color:#1ab7ea!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dribbble-lt-rgb),var(--tblr-bg-opacity))!important}.border-dribbble{border-color:#ea4c89!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-github-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-github-lt-rgb),var(--tblr-bg-opacity))!important}.border-github{border-color:#181717!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-instagram-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-instagram-lt-rgb),var(--tblr-bg-opacity))!important}.border-instagram{border-color:#e4405f!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pinterest-lt-rgb),var(--tblr-bg-opacity))!important}.border-pinterest{border-color:#bd081c!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-vk-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vk-lt-rgb),var(--tblr-bg-opacity))!important}.border-vk{border-color:#6383a8!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-rss-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-rss-lt-rgb),var(--tblr-bg-opacity))!important}.border-rss{border-color:orange!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-flickr-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-flickr-lt-rgb),var(--tblr-bg-opacity))!important}.border-flickr{border-color:#0063dc!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-bitbucket-lt-rgb),var(--tblr-bg-opacity))!important}.border-bitbucket{border-color:#0052cc!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-tabler-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-tabler-lt-rgb),var(--tblr-bg-opacity))!important}.border-tabler{border-color:#0054a6!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-white-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-white-lt-rgb),var(--tblr-bg-opacity))!important}.border-white{border-color:#fff!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-google-fg{color:var(--tblr-google-fg)!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-github-fg{color:var(--tblr-github-fg)!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-gray-50{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-50-rgb),var(--tblr-bg-opacity))!important}.text-gray-50-fg{color:#182433!important}.bg-gray-100{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-100-rgb),var(--tblr-bg-opacity))!important}.text-gray-100-fg{color:#182433!important}.bg-gray-200{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-200-rgb),var(--tblr-bg-opacity))!important}.text-gray-200-fg{color:#182433!important}.bg-gray-300{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-300-rgb),var(--tblr-bg-opacity))!important}.text-gray-300-fg{color:#182433!important}.bg-gray-400{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-400-rgb),var(--tblr-bg-opacity))!important}.text-gray-400-fg{color:#fcfdfe!important}.bg-gray-500{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-500-rgb),var(--tblr-bg-opacity))!important}.text-gray-500-fg{color:#fcfdfe!important}.bg-gray-600{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-600-rgb),var(--tblr-bg-opacity))!important}.text-gray-600-fg{color:#fcfdfe!important}.bg-gray-700{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-700-rgb),var(--tblr-bg-opacity))!important}.text-gray-700-fg{color:#fcfdfe!important}.bg-gray-800{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-800-rgb),var(--tblr-bg-opacity))!important}.text-gray-800-fg{color:#fcfdfe!important}.bg-gray-900{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-900-rgb),var(--tblr-bg-opacity))!important}.text-gray-900-fg{color:#fcfdfe!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:active,.scrollable.hover:focus,.scrollable.hover:hover{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:3rem!important}.h-6{height:3rem!important}.w-7{width:5rem!important}.h-7{height:5rem!important}.w-8{width:8rem!important}.h-8{height:8rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:.35!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:.7!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:.95!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto} \ No newline at end of file diff --git a/public/css/tabler.rtl.css b/public/css/tabler.rtl.css new file mode 100644 index 0000000..1cbab9d --- /dev/null +++ b/public/css/tabler.rtl.css @@ -0,0 +1,25777 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8"; +/* prettier-ignore */ +/* prettier-ignore */ +:root, +[data-bs-theme=light] { + --tblr-blue: #0054a6; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-black: #000000; + --tblr-white: #ffffff; + --tblr-gray: #667382; + --tblr-gray-dark: #182433; + --tblr-gray-100: #f6f8fb; + --tblr-gray-200: #eef1f4; + --tblr-gray-300: #dadfe5; + --tblr-gray-400: #bbc3cd; + --tblr-gray-500: #929dab; + --tblr-gray-600: #667382; + --tblr-gray-700: #3a4859; + --tblr-gray-800: #182433; + --tblr-gray-900: #040a11; + --tblr-primary: #0054a6; + --tblr-secondary: #667382; + --tblr-success: #2fb344; + --tblr-info: #4299e1; + --tblr-warning: #f76707; + --tblr-danger: #d63939; + --tblr-light: #fcfdfe; + --tblr-dark: #182433; + --tblr-muted: #667382; + --tblr-blue: #0054a6; + --tblr-azure: #4299e1; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-lime: #74b816; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-facebook: #1877f2; + --tblr-twitter: #1da1f2; + --tblr-linkedin: #0a66c2; + --tblr-google: #dc4e41; + --tblr-youtube: #ff0000; + --tblr-vimeo: #1ab7ea; + --tblr-dribbble: #ea4c89; + --tblr-github: #181717; + --tblr-instagram: #e4405f; + --tblr-pinterest: #bd081c; + --tblr-vk: #6383a8; + --tblr-rss: #ffa500; + --tblr-flickr: #0063dc; + --tblr-bitbucket: #0052cc; + --tblr-tabler: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-success-rgb: 47, 179, 68; + --tblr-info-rgb: 66, 153, 225; + --tblr-warning-rgb: 247, 103, 7; + --tblr-danger-rgb: 214, 57, 57; + --tblr-light-rgb: 252, 253, 254; + --tblr-dark-rgb: 24, 36, 51; + --tblr-muted-rgb: 102, 115, 130; + --tblr-blue-rgb: 0, 84, 166; + --tblr-azure-rgb: 66, 153, 225; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-purple-rgb: 174, 62, 201; + --tblr-pink-rgb: 214, 51, 108; + --tblr-red-rgb: 214, 57, 57; + --tblr-orange-rgb: 247, 103, 7; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-lime-rgb: 116, 184, 22; + --tblr-green-rgb: 47, 179, 68; + --tblr-teal-rgb: 12, 166, 120; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-google-rgb: 220, 78, 65; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-github-rgb: 24, 23, 23; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-vk-rgb: 99, 131, 168; + --tblr-rss-rgb: 255, 165, 0; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-primary-text-emphasis: #002242; + --tblr-secondary-text-emphasis: #292e34; + --tblr-success-text-emphasis: #13481b; + --tblr-info-text-emphasis: #1a3d5a; + --tblr-warning-text-emphasis: #632903; + --tblr-danger-text-emphasis: #561717; + --tblr-light-text-emphasis: #3a4859; + --tblr-dark-text-emphasis: #3a4859; + --tblr-primary-bg-subtle: #ccdded; + --tblr-secondary-bg-subtle: #e0e3e6; + --tblr-success-bg-subtle: #d5f0da; + --tblr-info-bg-subtle: #d9ebf9; + --tblr-warning-bg-subtle: #fde1cd; + --tblr-danger-bg-subtle: #f7d7d7; + --tblr-light-bg-subtle: #fbfcfd; + --tblr-dark-bg-subtle: #bbc3cd; + --tblr-primary-border-subtle: #99bbdb; + --tblr-secondary-border-subtle: #c2c7cd; + --tblr-success-border-subtle: #ace1b4; + --tblr-info-border-subtle: #b3d6f3; + --tblr-warning-border-subtle: #fcc29c; + --tblr-danger-border-subtle: #efb0b0; + --tblr-light-border-subtle: #eef1f4; + --tblr-dark-border-subtle: #929dab; + --tblr-white-rgb: 255, 255, 255; + --tblr-black-rgb: 0, 0, 0; + --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; + --tblr-font-monospace: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + --tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --tblr-body-font-family: var(--tblr-font-sans-serif); + --tblr-body-font-size: 0.875rem; + --tblr-body-font-weight: 400; + --tblr-body-line-height: 1.4285714286; + --tblr-body-color: #182433; + --tblr-body-color-rgb: 24, 36, 51; + --tblr-body-bg: #f6f8fb; + --tblr-body-bg-rgb: 246, 248, 251; + --tblr-emphasis-color: #182433; + --tblr-emphasis-color-rgb: 24, 36, 51; + --tblr-secondary-color: rgba(24, 36, 51, 0.75); + --tblr-secondary-color-rgb: 24, 36, 51; + --tblr-secondary-bg: #eef1f4; + --tblr-secondary-bg-rgb: 238, 241, 244; + --tblr-tertiary-color: rgba(24, 36, 51, 0.5); + --tblr-tertiary-color-rgb: 24, 36, 51; + --tblr-tertiary-bg: #f6f8fb; + --tblr-tertiary-bg-rgb: 246, 248, 251; + --tblr-heading-color: inherit; + --tblr-link-color: #0054a6; + --tblr-link-color-rgb: 0, 84, 166; + --tblr-link-decoration: none; + --tblr-link-hover-color: #004385; + --tblr-link-hover-color-rgb: 0, 67, 133; + --tblr-link-hover-decoration: underline; + --tblr-code-color: var(--tblr-gray-600); + --tblr-highlight-bg: #fdeccc; + --tblr-border-width: 1px; + --tblr-border-style: solid; + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-radius: 4px; + --tblr-border-radius-sm: 2px; + --tblr-border-radius-lg: 8px; + --tblr-border-radius-xl: 1rem; + --tblr-border-radius-xxl: 2rem; + --tblr-border-radius-2xl: var(--tblr-border-radius-xxl); + --tblr-border-radius-pill: 100rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --tblr-box-shadow-inset: 0 0 transparent; + --tblr-focus-ring-width: 0.25rem; + --tblr-focus-ring-opacity: 0.25; + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), 0.25); + --tblr-form-valid-color: #2fb344; + --tblr-form-valid-border-color: #2fb344; + --tblr-form-invalid-color: #d63939; + --tblr-form-invalid-border-color: #d63939; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + color-scheme: dark; + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-body-bg: #040a11; + --tblr-body-bg-rgb: 4, 10, 17; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-secondary-color: rgba(252, 253, 254, 0.75); + --tblr-secondary-color-rgb: 252, 253, 254; + --tblr-secondary-bg: #182433; + --tblr-secondary-bg-rgb: 24, 36, 51; + --tblr-tertiary-color: rgba(252, 253, 254, 0.5); + --tblr-tertiary-color-rgb: 252, 253, 254; + --tblr-tertiary-bg: #0e1722; + --tblr-tertiary-bg-rgb: 14, 23, 34; + --tblr-primary-text-emphasis: #6698ca; + --tblr-secondary-text-emphasis: #a3abb4; + --tblr-success-text-emphasis: #82d18f; + --tblr-info-text-emphasis: #8ec2ed; + --tblr-warning-text-emphasis: #faa46a; + --tblr-danger-text-emphasis: #e68888; + --tblr-light-text-emphasis: #f6f8fb; + --tblr-dark-text-emphasis: #dadfe5; + --tblr-primary-bg-subtle: #001121; + --tblr-secondary-bg-subtle: #14171a; + --tblr-success-bg-subtle: #09240e; + --tblr-info-bg-subtle: #0d1f2d; + --tblr-warning-bg-subtle: #311501; + --tblr-danger-bg-subtle: #2b0b0b; + --tblr-light-bg-subtle: #182433; + --tblr-dark-bg-subtle: #0c121a; + --tblr-primary-border-subtle: #003264; + --tblr-secondary-border-subtle: #3d454e; + --tblr-success-border-subtle: #1c6b29; + --tblr-info-border-subtle: #285c87; + --tblr-warning-border-subtle: #943e04; + --tblr-danger-border-subtle: #802222; + --tblr-light-border-subtle: #3a4859; + --tblr-dark-border-subtle: #182433; + --tblr-heading-color: inherit; + --tblr-link-color: #6698ca; + --tblr-link-hover-color: #85add5; + --tblr-link-color-rgb: 102, 152, 202; + --tblr-link-hover-color-rgb: 133, 173, 213; + --tblr-code-color: var(--tblr-gray-300); + --tblr-border-color: #1f2e41; + --tblr-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-form-valid-color: #82d18f; + --tblr-form-valid-border-color: #82d18f; + --tblr-form-invalid-color: #e68888; + --tblr-form-invalid-border-color: #e68888; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--tblr-body-font-family); + font-size: var(--tblr-body-font-size); + font-weight: var(--tblr-body-font-weight); + line-height: var(--tblr-body-line-height); + color: var(--tblr-body-color); + text-align: var(--tblr-body-text-align); + background-color: var(--tblr-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr, .hr { + margin: 2rem 0; + color: inherit; + border: 0; + border-top: var(--tblr-border-width) solid; + opacity: 0.16; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: var(--tblr-spacer); + font-weight: var(--tblr-font-weight-bold); + line-height: 1.2; + color: var(--tblr-heading-color); +} + +h1, .h1 { + font-size: 1.5rem; +} + +h2, .h2 { + font-size: 1.25rem; +} + +h3, .h3 { + font-size: 1rem; +} + +h4, .h4 { + font-size: 0.875rem; +} + +h5, .h5 { + font-size: 0.75rem; +} + +h6, .h6 { + font-size: 0.625rem; +} + +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-right: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 600; +} + +dd { + margin-bottom: 0.5rem; + margin-right: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 85.714285%; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--tblr-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(--tblr-link-color-rgb), var(--tblr-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--tblr-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 85.714285%; + color: var(--tblr-light); +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 85.714285%; + color: var(--tblr-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.25rem 0.5rem; + font-size: var(--tblr-font-size-h5); + color: var(--tblr-text-secondary-dark); + background-color: var(--tblr-code-bg); + border-radius: 2px; +} +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.75rem; + padding-bottom: 0.75rem; + color: var(--tblr-secondary-color); + text-align: right; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + 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; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: right; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: 1.5rem; + line-height: inherit; +} +legend + * { + clear: right; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +::-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: 0.875rem; + font-weight: var(--tblr-font-weight-normal); +} + +.display-1 { + font-size: 5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-5 { + font-size: 3rem; + font-weight: 300; + line-height: 1.2; +} + +.display-6 { + font-size: 2rem; + font-weight: 300; + line-height: 1.2; +} + +.list-unstyled { + padding-right: 0; + list-style: none; +} + +.list-inline { + padding-right: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-left: 0.5rem; +} + +.initialism { + font-size: 85.714285%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 0.875rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 85.714285%; + color: #667382; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--tblr-body-bg); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --tblr-breakpoint-xs: 0; + --tblr-breakpoint-sm: 576px; + --tblr-breakpoint-md: 768px; + --tblr-breakpoint-lg: 992px; + --tblr-breakpoint-xl: 1200px; + --tblr-breakpoint-xxl: 1400px; +} + +.row { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--tblr-gutter-y)); + margin-left: calc(-0.5 * var(--tblr-gutter-x)); + margin-right: calc(-0.5 * var(--tblr-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-top: var(--tblr-gutter-y); +} + +.grid { + display: grid; + grid-template-rows: repeat(var(--tblr-rows, 1), 1fr); + grid-template-columns: repeat(var(--tblr-columns, 12), 1fr); + gap: var(--tblr-gap, var(--tblr-page-padding)); +} +.grid .g-col-1 { + grid-column: auto/span 1; +} +.grid .g-col-2 { + grid-column: auto/span 2; +} +.grid .g-col-3 { + grid-column: auto/span 3; +} +.grid .g-col-4 { + grid-column: auto/span 4; +} +.grid .g-col-5 { + grid-column: auto/span 5; +} +.grid .g-col-6 { + grid-column: auto/span 6; +} +.grid .g-col-7 { + grid-column: auto/span 7; +} +.grid .g-col-8 { + grid-column: auto/span 8; +} +.grid .g-col-9 { + grid-column: auto/span 9; +} +.grid .g-col-10 { + grid-column: auto/span 10; +} +.grid .g-col-11 { + grid-column: auto/span 11; +} +.grid .g-col-12 { + grid-column: auto/span 12; +} +.grid .g-start-1 { + grid-column-start: 1; +} +.grid .g-start-2 { + grid-column-start: 2; +} +.grid .g-start-3 { + grid-column-start: 3; +} +.grid .g-start-4 { + grid-column-start: 4; +} +.grid .g-start-5 { + grid-column-start: 5; +} +.grid .g-start-6 { + grid-column-start: 6; +} +.grid .g-start-7 { + grid-column-start: 7; +} +.grid .g-start-8 { + grid-column-start: 8; +} +.grid .g-start-9 { + grid-column-start: 9; +} +.grid .g-start-10 { + grid-column-start: 10; +} +.grid .g-start-11 { + grid-column-start: 11; +} +@media (min-width: 576px) { + .grid .g-col-sm-1 { + grid-column: auto/span 1; + } + .grid .g-col-sm-2 { + grid-column: auto/span 2; + } + .grid .g-col-sm-3 { + grid-column: auto/span 3; + } + .grid .g-col-sm-4 { + grid-column: auto/span 4; + } + .grid .g-col-sm-5 { + grid-column: auto/span 5; + } + .grid .g-col-sm-6 { + grid-column: auto/span 6; + } + .grid .g-col-sm-7 { + grid-column: auto/span 7; + } + .grid .g-col-sm-8 { + grid-column: auto/span 8; + } + .grid .g-col-sm-9 { + grid-column: auto/span 9; + } + .grid .g-col-sm-10 { + grid-column: auto/span 10; + } + .grid .g-col-sm-11 { + grid-column: auto/span 11; + } + .grid .g-col-sm-12 { + grid-column: auto/span 12; + } + .grid .g-start-sm-1 { + grid-column-start: 1; + } + .grid .g-start-sm-2 { + grid-column-start: 2; + } + .grid .g-start-sm-3 { + grid-column-start: 3; + } + .grid .g-start-sm-4 { + grid-column-start: 4; + } + .grid .g-start-sm-5 { + grid-column-start: 5; + } + .grid .g-start-sm-6 { + grid-column-start: 6; + } + .grid .g-start-sm-7 { + grid-column-start: 7; + } + .grid .g-start-sm-8 { + grid-column-start: 8; + } + .grid .g-start-sm-9 { + grid-column-start: 9; + } + .grid .g-start-sm-10 { + grid-column-start: 10; + } + .grid .g-start-sm-11 { + grid-column-start: 11; + } +} +@media (min-width: 768px) { + .grid .g-col-md-1 { + grid-column: auto/span 1; + } + .grid .g-col-md-2 { + grid-column: auto/span 2; + } + .grid .g-col-md-3 { + grid-column: auto/span 3; + } + .grid .g-col-md-4 { + grid-column: auto/span 4; + } + .grid .g-col-md-5 { + grid-column: auto/span 5; + } + .grid .g-col-md-6 { + grid-column: auto/span 6; + } + .grid .g-col-md-7 { + grid-column: auto/span 7; + } + .grid .g-col-md-8 { + grid-column: auto/span 8; + } + .grid .g-col-md-9 { + grid-column: auto/span 9; + } + .grid .g-col-md-10 { + grid-column: auto/span 10; + } + .grid .g-col-md-11 { + grid-column: auto/span 11; + } + .grid .g-col-md-12 { + grid-column: auto/span 12; + } + .grid .g-start-md-1 { + grid-column-start: 1; + } + .grid .g-start-md-2 { + grid-column-start: 2; + } + .grid .g-start-md-3 { + grid-column-start: 3; + } + .grid .g-start-md-4 { + grid-column-start: 4; + } + .grid .g-start-md-5 { + grid-column-start: 5; + } + .grid .g-start-md-6 { + grid-column-start: 6; + } + .grid .g-start-md-7 { + grid-column-start: 7; + } + .grid .g-start-md-8 { + grid-column-start: 8; + } + .grid .g-start-md-9 { + grid-column-start: 9; + } + .grid .g-start-md-10 { + grid-column-start: 10; + } + .grid .g-start-md-11 { + grid-column-start: 11; + } +} +@media (min-width: 992px) { + .grid .g-col-lg-1 { + grid-column: auto/span 1; + } + .grid .g-col-lg-2 { + grid-column: auto/span 2; + } + .grid .g-col-lg-3 { + grid-column: auto/span 3; + } + .grid .g-col-lg-4 { + grid-column: auto/span 4; + } + .grid .g-col-lg-5 { + grid-column: auto/span 5; + } + .grid .g-col-lg-6 { + grid-column: auto/span 6; + } + .grid .g-col-lg-7 { + grid-column: auto/span 7; + } + .grid .g-col-lg-8 { + grid-column: auto/span 8; + } + .grid .g-col-lg-9 { + grid-column: auto/span 9; + } + .grid .g-col-lg-10 { + grid-column: auto/span 10; + } + .grid .g-col-lg-11 { + grid-column: auto/span 11; + } + .grid .g-col-lg-12 { + grid-column: auto/span 12; + } + .grid .g-start-lg-1 { + grid-column-start: 1; + } + .grid .g-start-lg-2 { + grid-column-start: 2; + } + .grid .g-start-lg-3 { + grid-column-start: 3; + } + .grid .g-start-lg-4 { + grid-column-start: 4; + } + .grid .g-start-lg-5 { + grid-column-start: 5; + } + .grid .g-start-lg-6 { + grid-column-start: 6; + } + .grid .g-start-lg-7 { + grid-column-start: 7; + } + .grid .g-start-lg-8 { + grid-column-start: 8; + } + .grid .g-start-lg-9 { + grid-column-start: 9; + } + .grid .g-start-lg-10 { + grid-column-start: 10; + } + .grid .g-start-lg-11 { + grid-column-start: 11; + } +} +@media (min-width: 1200px) { + .grid .g-col-xl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xl-1 { + grid-column-start: 1; + } + .grid .g-start-xl-2 { + grid-column-start: 2; + } + .grid .g-start-xl-3 { + grid-column-start: 3; + } + .grid .g-start-xl-4 { + grid-column-start: 4; + } + .grid .g-start-xl-5 { + grid-column-start: 5; + } + .grid .g-start-xl-6 { + grid-column-start: 6; + } + .grid .g-start-xl-7 { + grid-column-start: 7; + } + .grid .g-start-xl-8 { + grid-column-start: 8; + } + .grid .g-start-xl-9 { + grid-column-start: 9; + } + .grid .g-start-xl-10 { + grid-column-start: 10; + } + .grid .g-start-xl-11 { + grid-column-start: 11; + } +} +@media (min-width: 1400px) { + .grid .g-col-xxl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xxl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xxl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xxl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xxl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xxl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xxl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xxl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xxl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xxl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xxl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xxl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xxl-1 { + grid-column-start: 1; + } + .grid .g-start-xxl-2 { + grid-column-start: 2; + } + .grid .g-start-xxl-3 { + grid-column-start: 3; + } + .grid .g-start-xxl-4 { + grid-column-start: 4; + } + .grid .g-start-xxl-5 { + grid-column-start: 5; + } + .grid .g-start-xxl-6 { + grid-column-start: 6; + } + .grid .g-start-xxl-7 { + grid-column-start: 7; + } + .grid .g-start-xxl-8 { + grid-column-start: 8; + } + .grid .g-start-xxl-9 { + grid-column-start: 9; + } + .grid .g-start-xxl-10 { + grid-column-start: 10; + } + .grid .g-start-xxl-11 { + grid-column-start: 11; + } +} + +.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.3333333333%; +} + +.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.6666666667%; +} + +.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-right: 8.33333333%; +} + +.offset-2 { + margin-right: 16.66666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.33333333%; +} + +.offset-5 { + margin-right: 41.66666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.33333333%; +} + +.offset-8 { + margin-right: 66.66666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.33333333%; +} + +.offset-11 { + margin-right: 91.66666667%; +} + +.g-0, +.gx-0 { + --tblr-gutter-x: 0; +} + +.g-0, +.gy-0 { + --tblr-gutter-y: 0; +} + +.g-1, +.gx-1 { + --tblr-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --tblr-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --tblr-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --tblr-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --tblr-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --tblr-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --tblr-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --tblr-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --tblr-gutter-x: 2rem; +} + +.g-5, +.gy-5 { + --tblr-gutter-y: 2rem; +} + +.g-6, +.gx-6 { + --tblr-gutter-x: 3rem; +} + +.g-6, +.gy-6 { + --tblr-gutter-y: 3rem; +} + +.g-7, +.gx-7 { + --tblr-gutter-x: 5rem; +} + +.g-7, +.gy-7 { + --tblr-gutter-y: 5rem; +} + +.g-8, +.gx-8 { + --tblr-gutter-x: 8rem; +} + +.g-8, +.gy-8 { + --tblr-gutter-y: 8rem; +} + +@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.3333333333%; + } + .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.6666666667%; + } + .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-right: 0; + } + .offset-sm-1 { + margin-right: 8.33333333%; + } + .offset-sm-2 { + margin-right: 16.66666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.33333333%; + } + .offset-sm-5 { + margin-right: 41.66666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.33333333%; + } + .offset-sm-8 { + margin-right: 66.66666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.33333333%; + } + .offset-sm-11 { + margin-right: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --tblr-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --tblr-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --tblr-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --tblr-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --tblr-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --tblr-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --tblr-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --tblr-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --tblr-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --tblr-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --tblr-gutter-x: 2rem; + } + .g-sm-5, + .gy-sm-5 { + --tblr-gutter-y: 2rem; + } + .g-sm-6, + .gx-sm-6 { + --tblr-gutter-x: 3rem; + } + .g-sm-6, + .gy-sm-6 { + --tblr-gutter-y: 3rem; + } + .g-sm-7, + .gx-sm-7 { + --tblr-gutter-x: 5rem; + } + .g-sm-7, + .gy-sm-7 { + --tblr-gutter-y: 5rem; + } + .g-sm-8, + .gx-sm-8 { + --tblr-gutter-x: 8rem; + } + .g-sm-8, + .gy-sm-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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-right: 0; + } + .offset-md-1 { + margin-right: 8.33333333%; + } + .offset-md-2 { + margin-right: 16.66666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.33333333%; + } + .offset-md-5 { + margin-right: 41.66666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.33333333%; + } + .offset-md-8 { + margin-right: 66.66666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.33333333%; + } + .offset-md-11 { + margin-right: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --tblr-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --tblr-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --tblr-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --tblr-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --tblr-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --tblr-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --tblr-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --tblr-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --tblr-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --tblr-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --tblr-gutter-x: 2rem; + } + .g-md-5, + .gy-md-5 { + --tblr-gutter-y: 2rem; + } + .g-md-6, + .gx-md-6 { + --tblr-gutter-x: 3rem; + } + .g-md-6, + .gy-md-6 { + --tblr-gutter-y: 3rem; + } + .g-md-7, + .gx-md-7 { + --tblr-gutter-x: 5rem; + } + .g-md-7, + .gy-md-7 { + --tblr-gutter-y: 5rem; + } + .g-md-8, + .gx-md-8 { + --tblr-gutter-x: 8rem; + } + .g-md-8, + .gy-md-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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-right: 0; + } + .offset-lg-1 { + margin-right: 8.33333333%; + } + .offset-lg-2 { + margin-right: 16.66666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.33333333%; + } + .offset-lg-5 { + margin-right: 41.66666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.33333333%; + } + .offset-lg-8 { + margin-right: 66.66666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.33333333%; + } + .offset-lg-11 { + margin-right: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --tblr-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --tblr-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --tblr-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --tblr-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --tblr-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --tblr-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --tblr-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --tblr-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --tblr-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --tblr-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --tblr-gutter-x: 2rem; + } + .g-lg-5, + .gy-lg-5 { + --tblr-gutter-y: 2rem; + } + .g-lg-6, + .gx-lg-6 { + --tblr-gutter-x: 3rem; + } + .g-lg-6, + .gy-lg-6 { + --tblr-gutter-y: 3rem; + } + .g-lg-7, + .gx-lg-7 { + --tblr-gutter-x: 5rem; + } + .g-lg-7, + .gy-lg-7 { + --tblr-gutter-y: 5rem; + } + .g-lg-8, + .gx-lg-8 { + --tblr-gutter-x: 8rem; + } + .g-lg-8, + .gy-lg-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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-right: 0; + } + .offset-xl-1 { + margin-right: 8.33333333%; + } + .offset-xl-2 { + margin-right: 16.66666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.33333333%; + } + .offset-xl-5 { + margin-right: 41.66666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.33333333%; + } + .offset-xl-8 { + margin-right: 66.66666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.33333333%; + } + .offset-xl-11 { + margin-right: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --tblr-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --tblr-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --tblr-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --tblr-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --tblr-gutter-x: 2rem; + } + .g-xl-5, + .gy-xl-5 { + --tblr-gutter-y: 2rem; + } + .g-xl-6, + .gx-xl-6 { + --tblr-gutter-x: 3rem; + } + .g-xl-6, + .gy-xl-6 { + --tblr-gutter-y: 3rem; + } + .g-xl-7, + .gx-xl-7 { + --tblr-gutter-x: 5rem; + } + .g-xl-7, + .gy-xl-7 { + --tblr-gutter-y: 5rem; + } + .g-xl-8, + .gx-xl-8 { + --tblr-gutter-x: 8rem; + } + .g-xl-8, + .gy-xl-8 { + --tblr-gutter-y: 8rem; + } +} +@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.3333333333%; + } + .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.6666666667%; + } + .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-right: 0; + } + .offset-xxl-1 { + margin-right: 8.33333333%; + } + .offset-xxl-2 { + margin-right: 16.66666667%; + } + .offset-xxl-3 { + margin-right: 25%; + } + .offset-xxl-4 { + margin-right: 33.33333333%; + } + .offset-xxl-5 { + margin-right: 41.66666667%; + } + .offset-xxl-6 { + margin-right: 50%; + } + .offset-xxl-7 { + margin-right: 58.33333333%; + } + .offset-xxl-8 { + margin-right: 66.66666667%; + } + .offset-xxl-9 { + margin-right: 75%; + } + .offset-xxl-10 { + margin-right: 83.33333333%; + } + .offset-xxl-11 { + margin-right: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --tblr-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --tblr-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --tblr-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --tblr-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --tblr-gutter-x: 2rem; + } + .g-xxl-5, + .gy-xxl-5 { + --tblr-gutter-y: 2rem; + } + .g-xxl-6, + .gx-xxl-6 { + --tblr-gutter-x: 3rem; + } + .g-xxl-6, + .gy-xxl-6 { + --tblr-gutter-y: 3rem; + } + .g-xxl-7, + .gx-xxl-7 { + --tblr-gutter-x: 5rem; + } + .g-xxl-7, + .gy-xxl-7 { + --tblr-gutter-y: 5rem; + } + .g-xxl-8, + .gx-xxl-8 { + --tblr-gutter-x: 8rem; + } + .g-xxl-8, + .gy-xxl-8 { + --tblr-gutter-y: 8rem; + } +} +.table, .markdown > table { + --tblr-table-color-type: initial; + --tblr-table-bg-type: initial; + --tblr-table-color-state: initial; + --tblr-table-bg-state: initial; + --tblr-table-color: inherit; + --tblr-table-bg: transparent; + --tblr-table-border-color: var(--tblr-border-color-translucent); + --tblr-table-accent-bg: transparent; + --tblr-table-striped-color: inherit; + --tblr-table-striped-bg: var(--tblr-bg-surface-tertiary); + --tblr-table-active-color: inherit; + --tblr-table-active-bg: rgba(0, 0, 0, 0.1); + --tblr-table-hover-color: inherit; + --tblr-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--tblr-table-border-color); +} +.table > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + color: var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color))); + background-color: var(--tblr-table-bg); + border-bottom-width: var(--tblr-border-width); + box-shadow: inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg))); +} +.table > tbody, .markdown > table > tbody { + vertical-align: inherit; +} +.table > thead, .markdown > table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent); +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > *, .markdown > table > :not(caption) > * { + border-width: var(--tblr-border-width) 0; +} +.table-bordered > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + border-width: 0 var(--tblr-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(even) > * { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-active { + --tblr-table-color-state: var(--tblr-table-active-color); + --tblr-table-bg-state: var(--tblr-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --tblr-table-color-state: var(--tblr-table-hover-color); + --tblr-table-bg-state: var(--tblr-table-hover-bg); +} + +.table-primary { + --tblr-table-color: #182433; + --tblr-table-bg: #ccdded; + --tblr-table-border-color: #bacbda; + --tblr-table-striped-bg: #c3d4e4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #bacbda; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #bfcfdf; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-secondary { + --tblr-table-color: #182433; + --tblr-table-bg: #e0e3e6; + --tblr-table-border-color: #ccd0d4; + --tblr-table-striped-bg: #d6d9dd; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #ccd0d4; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #d1d5d9; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-success { + --tblr-table-color: #182433; + --tblr-table-bg: #d5f0da; + --tblr-table-border-color: #c2dcc9; + --tblr-table-striped-bg: #cce6d2; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c2dcc9; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #c7e1cd; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-info { + --tblr-table-color: #182433; + --tblr-table-bg: #d9ebf9; + --tblr-table-border-color: #c6d7e5; + --tblr-table-striped-bg: #cfe1ef; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c6d7e5; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #cbdcea; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-warning { + --tblr-table-color: #182433; + --tblr-table-bg: #fde1cd; + --tblr-table-border-color: #e6cebe; + --tblr-table-striped-bg: #f2d8c5; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e6cebe; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ecd3c1; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-danger { + --tblr-table-color: #182433; + --tblr-table-bg: #f7d7d7; + --tblr-table-border-color: #e1c5c7; + --tblr-table-striped-bg: #eccecf; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e1c5c7; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #e6cacb; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-light { + --tblr-table-color: #182433; + --tblr-table-bg: #fcfdfe; + --tblr-table-border-color: #e5e7ea; + --tblr-table-striped-bg: #f1f2f4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e5e7ea; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ebedef; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-dark { + --tblr-table-color: #fcfdfe; + --tblr-table-bg: #182433; + --tblr-table-border-color: #2f3a47; + --tblr-table-striped-bg: #232f3d; + --tblr-table-striped-color: #fcfdfe; + --tblr-table-active-bg: #2f3a47; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #293442; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-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; + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-medium); +} + +.col-form-label { + padding-top: calc(0.5625rem + var(--tblr-border-width)); + padding-bottom: calc(0.5625rem + var(--tblr-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.4285714286; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--tblr-border-width)); + padding-bottom: calc(0.5rem + var(--tblr-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.125rem + var(--tblr-border-width)); + padding-bottom: calc(0.125rem + var(--tblr-border-width)); + font-size: 0.75rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-clip: padding-box; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + 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(--tblr-body-color); + background-color: var(--tblr-bg-forms); + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.4285714286em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-webkit-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::placeholder { + color: #929dab; + opacity: 1; +} +.form-control:disabled { + background-color: var(--tblr-bg-surface-secondary); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-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.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-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(--tblr-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.5625rem 0; + margin-bottom: 0; + line-height: 1.4285714286; + color: var(--tblr-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--tblr-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-left: 0; + padding-right: 0; +} + +.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} + +.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} + +textarea.form-control { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5625rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-select { + --tblr-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='%23929dab' 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.5625rem 0.75rem 0.5625rem 2.25rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-image: var(--tblr-form-select-bg-img), var(--tblr-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: left 0.75rem center; + background-size: 16px 12px; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + 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: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-left: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--tblr-bg-surface-secondary); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--tblr-body-color); +} + +.form-select-sm { + padding-top: 0.125rem; + padding-bottom: 0.125rem; + padding-right: 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-right: 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +[data-bs-theme=dark] .form-select, body[data-bs-theme=dark] [data-bs-theme=light] .form-select { + --tblr-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='%23fcfdfe' 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.25rem; + padding-right: 2rem; + margin-bottom: 0.75rem; +} +.form-check .form-check-input { + float: right; + margin-right: -2rem; +} + +.form-check-reverse { + padding-left: 2rem; + padding-right: 0; + text-align: left; +} +.form-check-reverse .form-check-input { + float: left; + margin-left: -2rem; + margin-right: 0; +} + +.form-check-input { + --tblr-form-check-bg: var(--tblr-bg-forms); + width: 1.25rem; + height: 1.25rem; + margin-top: 0.0892857143rem; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-form-check-bg); + background-image: var(--tblr-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: var(--tblr-border-radius); +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #80aad3; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-check-input:checked { + background-color: var(--tblr-primary); + border-color: var(--tblr-border-color-translucent); +} +.form-check-input:checked[type=checkbox] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: var(--tblr-primary); + border-color: var(--tblr-primary); + --tblr-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='%23ffffff' 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.7; +} + +.form-switch { + padding-right: 2.5rem; +} +.form-switch .form-check-input { + --tblr-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='%23dadfe5'/%3e%3c/svg%3e"); + width: 2rem; + margin-right: -2.5rem; + background-image: var(--tblr-form-switch-bg); + background-position: right center; + border-radius: 2rem; + 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 { + --tblr-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='%2380aad3'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: left center; + --tblr-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='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-left: 2.5rem; + padding-right: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-left: -2.5rem; + margin-right: 0; +} + +.form-check-inline { + display: inline-block; + margin-left: 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.4; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --tblr-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.25rem; + 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 #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.375rem; + -webkit-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -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: #b3cce4; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -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: #b3cce4; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--tblr-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--tblr-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(--tblr-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--tblr-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + right: 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(--tblr-border-width) solid transparent; + transform-origin: 100% 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::-webkit-input-placeholder, .form-floating > .form-control-plaintext::-webkit-input-placeholder { + color: transparent; +} +.form-floating > .form-control:-ms-input-placeholder, .form-floating > .form-control-plaintext:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::-ms-input-placeholder, .form-floating > .form-control-plaintext::-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-ms-input-placeholder), .form-floating > .form-control-plaintext:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-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(:-ms-input-placeholder) ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--tblr-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #667382; +} +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--tblr-bg-surface-secondary); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + 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.5625rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-secondary); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-bg-surface-secondary); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-left: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-right: calc(var(--tblr-border-width) * -1); + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-success); + border-radius: var(--tblr-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--tblr-form-valid-border-color); + padding-left: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-left: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) left calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + padding-left: 4.125rem; + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--tblr-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--tblr-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-right: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-danger); + border-radius: var(--tblr-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--tblr-form-invalid-border-color); + padding-left: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-left: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) left calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + padding-left: 4.125rem; + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--tblr-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--tblr-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-right: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --tblr-btn-padding-x: 1rem; + --tblr-btn-padding-y: 0.5625rem; + --tblr-btn-font-family: var(--tblr-font-sans-serif); + --tblr-btn-font-size: 0.875rem; + --tblr-btn-font-weight: var(--tblr-font-weight-medium); + --tblr-btn-line-height: 1.4285714286; + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-width: var(--tblr-border-width); + --tblr-btn-border-color: transparent; + --tblr-btn-border-radius: var(--tblr-border-radius); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-disabled-opacity: 0.4; + --tblr-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--tblr-btn-padding-y) var(--tblr-btn-padding-x); + font-family: var(--tblr-btn-font-family); + font-size: var(--tblr-btn-font-size); + font-weight: var(--tblr-btn-font-weight); + line-height: var(--tblr-btn-line-height); + color: var(--tblr-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-btn-border-width) solid var(--tblr-btn-border-color); + border-radius: var(--tblr-btn-border-radius); + background-color: var(--tblr-btn-bg); + box-shadow: var(--tblr-btn-box-shadow); + 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(--tblr-btn-hover-color); + text-decoration: none; + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--tblr-btn-color); + background-color: var(--tblr-btn-bg); + border-color: var(--tblr-btn-border-color); +} +.btn:focus-visible { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--tblr-btn-active-color); + background-color: var(--tblr-btn-active-bg); + border-color: var(--tblr-btn-active-border-color); + box-shadow: var(--tblr-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--tblr-btn-active-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--tblr-btn-disabled-color); + pointer-events: none; + background-color: var(--tblr-btn-disabled-bg); + border-color: var(--tblr-btn-disabled-border-color); + opacity: var(--tblr-btn-disabled-opacity); + box-shadow: none; +} + +.btn-link { + --tblr-btn-font-weight: 400; + --tblr-btn-color: var(--tblr-link-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-link-hover-color); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-color: var(--tblr-link-hover-color); + --tblr-btn-active-border-color: transparent; + --tblr-btn-disabled-color: #667382; + --tblr-btn-disabled-border-color: transparent; + --tblr-btn-box-shadow: 0 0 0 #000; + --tblr-btn-focus-shadow-rgb: 38, 109, 179; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--tblr-btn-color); +} +.btn-link:hover { + color: var(--tblr-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-padding-y: 0.5rem; + --tblr-btn-padding-x: 0.75rem; + --tblr-btn-font-size: 1.25rem; + --tblr-btn-border-radius: var(--tblr-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-padding-y: 0.125rem; + --tblr-btn-padding-x: 0.25rem; + --tblr-btn-font-size: 0.75rem; + --tblr-btn-border-radius: var(--tblr-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; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(45deg); +} + +.dropdown-menu { + --tblr-dropdown-zindex: 1000; + --tblr-dropdown-min-width: 11rem; + --tblr-dropdown-padding-x: 0; + --tblr-dropdown-padding-y: 0.25rem; + --tblr-dropdown-spacer: 1px; + --tblr-dropdown-font-size: 0.875rem; + --tblr-dropdown-color: var(--tblr-body-color); + --tblr-dropdown-bg: var(--tblr-bg-surface); + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-border-radius: var(--tblr-border-radius); + --tblr-dropdown-border-width: var(--tblr-border-width); + --tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width)); + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-divider-margin-y: var(--tblr-spacer); + --tblr-dropdown-box-shadow: var(--tblr-box-shadow-dropdown); + --tblr-dropdown-link-color: inherit; + --tblr-dropdown-link-hover-color: inherit; + --tblr-dropdown-link-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color); + --tblr-dropdown-item-padding-x: 0.75rem; + --tblr-dropdown-item-padding-y: 0.5rem; + --tblr-dropdown-header-color: #667382; + --tblr-dropdown-header-padding-x: 0.75rem; + --tblr-dropdown-header-padding-y: 0.25rem; + position: absolute; + z-index: var(--tblr-dropdown-zindex); + display: none; + min-width: var(--tblr-dropdown-min-width); + padding: var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x); + margin: 0; + font-size: var(--tblr-dropdown-font-size); + color: var(--tblr-dropdown-color); + text-align: right; + list-style: none; + background-color: var(--tblr-dropdown-bg); + background-clip: padding-box; + border: var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color); + border-radius: var(--tblr-dropdown-border-radius); + box-shadow: var(--tblr-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + right: 0; + margin-top: var(--tblr-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + left: auto; + right: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + left: 0; + right: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + left: 0; + right: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--tblr-dropdown-spacer); +} +.dropup .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(-135deg); +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + left: auto; + right: 100%; + margin-top: 0; + margin-right: var(--tblr-dropdown-spacer); +} +.dropend .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(135deg); +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + left: 100%; + right: auto; + margin-top: 0; + margin-left: var(--tblr-dropdown-spacer); +} +.dropstart .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(-45deg); +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--tblr-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--tblr-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--tblr-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--tblr-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--tblr-dropdown-link-active-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--tblr-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.765625rem; + color: var(--tblr-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + color: var(--tblr-dropdown-link-color); +} + +.dropdown-menu-dark { + --tblr-dropdown-color: #dadfe5; + --tblr-dropdown-bg: #182433; + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-box-shadow: ; + --tblr-dropdown-link-color: #dadfe5; + --tblr-dropdown-link-hover-color: #ffffff; + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: #929dab; + --tblr-dropdown-header-color: #929dab; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + 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(--tblr-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-right: calc(var(--tblr-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.dropdown-toggle-split { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-right: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-left: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-left: 0.1875rem; + padding-right: 0.1875rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-left: 0.5625rem; + padding-right: 0.5625rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.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:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--tblr-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav { + --tblr-nav-link-padding-x: 0.75rem; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-secondary); + --tblr-nav-link-hover-color: var(--tblr-link-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-disabled-color); + display: flex; + flex-wrap: wrap; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x); + font-size: var(--tblr-nav-link-font-size); + font-weight: var(--tblr-nav-link-font-weight); + color: var(--tblr-nav-link-color); + background: none; + 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:hover, .nav-link:focus { + color: var(--tblr-nav-link-hover-color); + text-decoration: none; +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--tblr-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --tblr-nav-tabs-border-width: var(--tblr-border-width); + --tblr-nav-tabs-border-color: var(--tblr-border-color); + --tblr-nav-tabs-border-radius: var(--tblr-border-radius); + --tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + --tblr-nav-tabs-link-active-color: var(--tblr-body-color); + --tblr-nav-tabs-link-active-bg: var(--tblr-body-bg); + --tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + border-bottom: var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width)); + border: var(--tblr-nav-tabs-border-width) solid transparent; + border-top-right-radius: var(--tblr-nav-tabs-border-radius); + border-top-left-radius: var(--tblr-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--tblr-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--tblr-nav-tabs-link-active-color); + background-color: var(--tblr-nav-tabs-link-active-bg); + border-color: var(--tblr-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--tblr-nav-tabs-border-width)); + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav-pills { + --tblr-nav-pills-border-radius: var(--tblr-border-radius); + --tblr-nav-pills-link-active-color: var(--tblr-primary); + --tblr-nav-pills-link-active-bg: var(--tblr-active-bg); +} +.nav-pills .nav-link { + border-radius: var(--tblr-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--tblr-nav-pills-link-active-color); + background-color: var(--tblr-nav-pills-link-active-bg); +} + +.nav-underline { + --tblr-nav-underline-gap: 1rem; + --tblr-nav-underline-border-width: 0.125rem; + --tblr-nav-underline-link-active-color: var(--tblr-emphasis-color); + gap: var(--tblr-nav-underline-gap); +} +.nav-underline .nav-link { + padding-left: 0; + padding-right: 0; + border-bottom: var(--tblr-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 600; + color: var(--tblr-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + 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 { + --tblr-navbar-padding-x: 0; + --tblr-navbar-padding-y: 0.25rem; + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-hover-color: rgba(var(--tblr-emphasis-color-rgb), 0.8); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: var(--tblr-body-color) color; + --tblr-navbar-brand-padding-y: 0.5rem; + --tblr-navbar-brand-margin-end: 1rem; + --tblr-navbar-brand-font-size: 1.25rem; + --tblr-navbar-brand-color: var(--tblr-body-color); + --tblr-navbar-brand-hover-color: var(--tblr-body-color) color; + --tblr-navbar-nav-link-padding-x: 0.75rem; + --tblr-navbar-toggler-padding-y: 0; + --tblr-navbar-toggler-padding-x: 0; + --tblr-navbar-toggler-font-size: 1rem; + --tblr-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%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), 0.15); + --tblr-navbar-toggler-border-radius: var(--tblr-border-radius); + --tblr-navbar-toggler-focus-width: 0; + --tblr-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(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--tblr-navbar-brand-padding-y); + padding-bottom: var(--tblr-navbar-brand-padding-y); + margin-left: var(--tblr-navbar-brand-margin-end); + font-size: var(--tblr-navbar-brand-font-size); + color: var(--tblr-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--tblr-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --tblr-nav-link-padding-x: 0; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-navbar-color); + --tblr-nav-link-hover-color: var(--tblr-navbar-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--tblr-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--tblr-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--tblr-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x); + font-size: var(--tblr-navbar-toggler-font-size); + line-height: 1; + color: var(--tblr-navbar-color); + background-color: transparent; + border: var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color); + border-radius: var(--tblr-navbar-toggler-border-radius); + transition: var(--tblr-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(--tblr-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--tblr-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--tblr-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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-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; + box-shadow: none; + 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], +body[data-bs-theme=dark] .navbar[data-bs-theme=light] { + --tblr-navbar-color: rgba(255, 255, 255, 0.7); + --tblr-navbar-hover-color: rgba(255, 255, 255, 0.75); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: #ffffff; + --tblr-navbar-brand-color: #ffffff; + --tblr-navbar-brand-hover-color: #ffffff; + --tblr-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --tblr-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.7%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, body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon { + --tblr-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.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --tblr-card-spacer-y: 1.25rem; + --tblr-card-spacer-x: 1.25rem; + --tblr-card-title-spacer-y: 1.25rem; + --tblr-card-title-color: ; + --tblr-card-subtitle-color: ; + --tblr-card-border-width: var(--tblr-border-width); + --tblr-card-border-color: var(--tblr-border-color-translucent); + --tblr-card-border-radius: var(--tblr-border-radius); + --tblr-card-box-shadow: var(--tblr-shadow-card); + --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-card-cap-padding-y: 1.25rem; + --tblr-card-cap-padding-x: 1.25rem; + --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); + --tblr-card-cap-color: inherit; + --tblr-card-height: ; + --tblr-card-color: inherit; + --tblr-card-bg: var(--tblr-bg-surface); + --tblr-card-img-overlay-padding: 1rem; + --tblr-card-group-margin: 1.5rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--tblr-card-height); + color: var(--tblr-body-color); + word-wrap: break-word; + background-color: var(--tblr-card-bg); + background-clip: border-box; + border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius); + box-shadow: var(--tblr-card-box-shadow); +} +.card > hr, .card > .hr { + margin-left: 0; + margin-right: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-right-radius: var(--tblr-card-inner-border-radius); + border-top-left-radius: var(--tblr-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-left-radius: var(--tblr-card-inner-border-radius); + border-bottom-right-radius: var(--tblr-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(--tblr-card-spacer-y) var(--tblr-card-spacer-x); + color: var(--tblr-card-color); +} + +.card-title { + margin-bottom: var(--tblr-card-title-spacer-y); + color: var(--tblr-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--tblr-card-title-spacer-y)); + margin-bottom: 0; + color: var(--tblr-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-right: var(--tblr-card-spacer-x); +} + +.card-header { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + margin-bottom: 0; + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-bottom: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-header:first-child { + border-radius: var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-top: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius); +} + +.card-header-tabs { + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--tblr-card-cap-padding-y)); + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--tblr-card-bg); + border-bottom-color: var(--tblr-card-bg); +} + +.card-header-pills { + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: var(--tblr-card-img-overlay-padding); + border-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-right-radius: var(--tblr-card-inner-border-radius); + border-top-left-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-left-radius: var(--tblr-card-inner-border-radius); + border-bottom-right-radius: var(--tblr-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--tblr-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-right: 0; + border-right: 0; + } + .card-group > .card:not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-right-radius: 0; + } +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); + --tblr-accordion-bg: transparent; + --tblr-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; + --tblr-accordion-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-border-width: var(--tblr-border-width); + --tblr-accordion-border-radius: var(--tblr-border-radius); + --tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-accordion-btn-padding-x: 1.25rem; + --tblr-accordion-btn-padding-y: 1rem; + --tblr-accordion-btn-color: var(--tblr-body-color); + --tblr-accordion-btn-bg: transparent; + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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"); + --tblr-accordion-btn-icon-width: 1rem; + --tblr-accordion-btn-icon-transform: rotate(-180deg); + --tblr-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%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"); + --tblr-accordion-btn-focus-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-accordion-body-padding-x: 1.25rem; + --tblr-accordion-body-padding-y: 1rem; + --tblr-accordion-active-color: inherit; + --tblr-accordion-active-bg: transparent; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x); + font-size: 0.875rem; + color: var(--tblr-accordion-btn-color); + text-align: right; + background-color: var(--tblr-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--tblr-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--tblr-accordion-active-color); + background-color: var(--tblr-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--tblr-accordion-btn-active-icon); + transform: var(--tblr-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--tblr-accordion-btn-icon-width); + height: var(--tblr-accordion-btn-icon-width); + margin-right: auto; + content: ""; + background-image: var(--tblr-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--tblr-accordion-btn-icon-width); + transition: var(--tblr-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(--tblr-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--tblr-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--tblr-accordion-color); + background-color: var(--tblr-accordion-bg); + border: var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-right-radius: var(--tblr-accordion-border-radius); + border-top-left-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-right-radius: var(--tblr-accordion-inner-border-radius); + border-top-left-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-left-radius: var(--tblr-accordion-border-radius); + border-bottom-right-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-left-radius: var(--tblr-accordion-inner-border-radius); + border-bottom-right-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-left-radius: var(--tblr-accordion-border-radius); + border-bottom-right-radius: var(--tblr-accordion-border-radius); +} + +.accordion-body { + padding: var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-left: 0; + border-right: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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"); + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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 { + --tblr-breadcrumb-padding-x: 0; + --tblr-breadcrumb-padding-y: 0; + --tblr-breadcrumb-margin-bottom: 1rem; + --tblr-breadcrumb-bg: ; + --tblr-breadcrumb-border-radius: ; + --tblr-breadcrumb-divider-color: var(--tblr-secondary); + --tblr-breadcrumb-item-padding-x: 0.5rem; + --tblr-breadcrumb-item-active-color: inherit; + display: flex; + flex-wrap: wrap; + padding: var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x); + margin-bottom: var(--tblr-breadcrumb-margin-bottom); + font-size: var(--tblr-breadcrumb-font-size); + list-style: none; + background-color: var(--tblr-breadcrumb-bg); + border-radius: var(--tblr-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-right: var(--tblr-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: right; + padding-left: var(--tblr-breadcrumb-item-padding-x); + color: var(--tblr-breadcrumb-divider-color); + content: var(--tblr-breadcrumb-divider, "/") ; +} +.breadcrumb-item.active { + color: var(--tblr-breadcrumb-item-active-color); +} + +.pagination { + --tblr-pagination-padding-x: 0.25rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.875rem; + --tblr-pagination-color: var(--tblr-secondary); + --tblr-pagination-bg: transparent; + --tblr-pagination-border-width: 0; + --tblr-pagination-border-color: var(--tblr-border-color); + --tblr-pagination-border-radius: var(--tblr-border-radius); + --tblr-pagination-hover-color: var(--tblr-link-hover-color); + --tblr-pagination-hover-bg: var(--tblr-tertiary-bg); + --tblr-pagination-hover-border-color: var(--tblr-border-color); + --tblr-pagination-focus-color: var(--tblr-link-hover-color); + --tblr-pagination-focus-bg: var(--tblr-secondary-bg); + --tblr-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-pagination-active-color: #ffffff; + --tblr-pagination-active-bg: var(--tblr-primary); + --tblr-pagination-active-border-color: var(--tblr-primary); + --tblr-pagination-disabled-color: var(--tblr-disabled-color); + --tblr-pagination-disabled-bg: transparent; + --tblr-pagination-disabled-border-color: var(--tblr-border-color); + display: flex; + padding-right: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x); + font-size: var(--tblr-pagination-font-size); + color: var(--tblr-pagination-color); + background-color: var(--tblr-pagination-bg); + border: var(--tblr-pagination-border-width) solid var(--tblr-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(--tblr-pagination-hover-color); + text-decoration: none; + background-color: var(--tblr-pagination-hover-bg); + border-color: var(--tblr-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--tblr-pagination-focus-color); + background-color: var(--tblr-pagination-focus-bg); + outline: 0; + box-shadow: var(--tblr-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--tblr-pagination-active-color); + background-color: var(--tblr-pagination-active-bg); + border-color: var(--tblr-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--tblr-pagination-disabled-color); + pointer-events: none; + background-color: var(--tblr-pagination-disabled-bg); + border-color: var(--tblr-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-right: calc(0 * -1); +} +.page-item:first-child .page-link { + border-top-right-radius: var(--tblr-pagination-border-radius); + border-bottom-right-radius: var(--tblr-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-left-radius: var(--tblr-pagination-border-radius); + border-bottom-left-radius: var(--tblr-pagination-border-radius); +} + +.pagination-lg { + --tblr-pagination-padding-x: 1.5rem; + --tblr-pagination-padding-y: 0.75rem; + --tblr-pagination-font-size: 1.09375rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-lg); +} + +.pagination-sm { + --tblr-pagination-padding-x: 0.5rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.765625rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-sm); +} + +.badge { + --tblr-badge-padding-x: 0.5em; + --tblr-badge-padding-y: 0.25em; + --tblr-badge-font-size: 85.714285%; + --tblr-badge-font-weight: var(--tblr-font-weight-medium); + --tblr-badge-color: var(--tblr-secondary); + --tblr-badge-border-radius: var(--tblr-border-radius); + display: inline-block; + padding: var(--tblr-badge-padding-y) var(--tblr-badge-padding-x); + font-size: var(--tblr-badge-font-size); + font-weight: var(--tblr-badge-font-weight); + line-height: 1; + color: var(--tblr-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--tblr-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --tblr-alert-bg: transparent; + --tblr-alert-padding-x: 1rem; + --tblr-alert-padding-y: 0.75rem; + --tblr-alert-margin-bottom: 1rem; + --tblr-alert-color: inherit; + --tblr-alert-border-color: transparent; + --tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color); + --tblr-alert-border-radius: var(--tblr-border-radius); + --tblr-alert-link-color: inherit; + position: relative; + padding: var(--tblr-alert-padding-y) var(--tblr-alert-padding-x); + margin-bottom: var(--tblr-alert-margin-bottom); + color: var(--tblr-alert-color); + background-color: var(--tblr-alert-bg); + border: var(--tblr-alert-border); + border-radius: var(--tblr-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: var(--tblr-font-weight-bold); + color: var(--tblr-alert-link-color); +} + +.alert-dismissible { + padding-left: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + left: 0; + z-index: 2; + padding: 0.9375rem 1rem; +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary-text-emphasis); + --tblr-alert-bg: var(--tblr-primary-bg-subtle); + --tblr-alert-border-color: var(--tblr-primary-border-subtle); + --tblr-alert-link-color: var(--tblr-primary-text-emphasis); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary-text-emphasis); + --tblr-alert-bg: var(--tblr-secondary-bg-subtle); + --tblr-alert-border-color: var(--tblr-secondary-border-subtle); + --tblr-alert-link-color: var(--tblr-secondary-text-emphasis); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success-text-emphasis); + --tblr-alert-bg: var(--tblr-success-bg-subtle); + --tblr-alert-border-color: var(--tblr-success-border-subtle); + --tblr-alert-link-color: var(--tblr-success-text-emphasis); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info-text-emphasis); + --tblr-alert-bg: var(--tblr-info-bg-subtle); + --tblr-alert-border-color: var(--tblr-info-border-subtle); + --tblr-alert-link-color: var(--tblr-info-text-emphasis); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning-text-emphasis); + --tblr-alert-bg: var(--tblr-warning-bg-subtle); + --tblr-alert-border-color: var(--tblr-warning-border-subtle); + --tblr-alert-link-color: var(--tblr-warning-text-emphasis); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger-text-emphasis); + --tblr-alert-bg: var(--tblr-danger-bg-subtle); + --tblr-alert-border-color: var(--tblr-danger-border-subtle); + --tblr-alert-link-color: var(--tblr-danger-text-emphasis); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light-text-emphasis); + --tblr-alert-bg: var(--tblr-light-bg-subtle); + --tblr-alert-border-color: var(--tblr-light-border-subtle); + --tblr-alert-link-color: var(--tblr-light-text-emphasis); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark-text-emphasis); + --tblr-alert-bg: var(--tblr-dark-bg-subtle); + --tblr-alert-border-color: var(--tblr-dark-border-subtle); + --tblr-alert-link-color: var(--tblr-dark-text-emphasis); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted-text-emphasis); + --tblr-alert-bg: var(--tblr-muted-bg-subtle); + --tblr-alert-border-color: var(--tblr-muted-border-subtle); + --tblr-alert-link-color: var(--tblr-muted-text-emphasis); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue-text-emphasis); + --tblr-alert-bg: var(--tblr-blue-bg-subtle); + --tblr-alert-border-color: var(--tblr-blue-border-subtle); + --tblr-alert-link-color: var(--tblr-blue-text-emphasis); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure-text-emphasis); + --tblr-alert-bg: var(--tblr-azure-bg-subtle); + --tblr-alert-border-color: var(--tblr-azure-border-subtle); + --tblr-alert-link-color: var(--tblr-azure-text-emphasis); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo-text-emphasis); + --tblr-alert-bg: var(--tblr-indigo-bg-subtle); + --tblr-alert-border-color: var(--tblr-indigo-border-subtle); + --tblr-alert-link-color: var(--tblr-indigo-text-emphasis); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple-text-emphasis); + --tblr-alert-bg: var(--tblr-purple-bg-subtle); + --tblr-alert-border-color: var(--tblr-purple-border-subtle); + --tblr-alert-link-color: var(--tblr-purple-text-emphasis); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink-text-emphasis); + --tblr-alert-bg: var(--tblr-pink-bg-subtle); + --tblr-alert-border-color: var(--tblr-pink-border-subtle); + --tblr-alert-link-color: var(--tblr-pink-text-emphasis); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red-text-emphasis); + --tblr-alert-bg: var(--tblr-red-bg-subtle); + --tblr-alert-border-color: var(--tblr-red-border-subtle); + --tblr-alert-link-color: var(--tblr-red-text-emphasis); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange-text-emphasis); + --tblr-alert-bg: var(--tblr-orange-bg-subtle); + --tblr-alert-border-color: var(--tblr-orange-border-subtle); + --tblr-alert-link-color: var(--tblr-orange-text-emphasis); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow-text-emphasis); + --tblr-alert-bg: var(--tblr-yellow-bg-subtle); + --tblr-alert-border-color: var(--tblr-yellow-border-subtle); + --tblr-alert-link-color: var(--tblr-yellow-text-emphasis); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime-text-emphasis); + --tblr-alert-bg: var(--tblr-lime-bg-subtle); + --tblr-alert-border-color: var(--tblr-lime-border-subtle); + --tblr-alert-link-color: var(--tblr-lime-text-emphasis); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green-text-emphasis); + --tblr-alert-bg: var(--tblr-green-bg-subtle); + --tblr-alert-border-color: var(--tblr-green-border-subtle); + --tblr-alert-link-color: var(--tblr-green-text-emphasis); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal-text-emphasis); + --tblr-alert-bg: var(--tblr-teal-bg-subtle); + --tblr-alert-border-color: var(--tblr-teal-border-subtle); + --tblr-alert-link-color: var(--tblr-teal-text-emphasis); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan-text-emphasis); + --tblr-alert-bg: var(--tblr-cyan-bg-subtle); + --tblr-alert-border-color: var(--tblr-cyan-border-subtle); + --tblr-alert-link-color: var(--tblr-cyan-text-emphasis); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook-text-emphasis); + --tblr-alert-bg: var(--tblr-facebook-bg-subtle); + --tblr-alert-border-color: var(--tblr-facebook-border-subtle); + --tblr-alert-link-color: var(--tblr-facebook-text-emphasis); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter-text-emphasis); + --tblr-alert-bg: var(--tblr-twitter-bg-subtle); + --tblr-alert-border-color: var(--tblr-twitter-border-subtle); + --tblr-alert-link-color: var(--tblr-twitter-text-emphasis); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin-text-emphasis); + --tblr-alert-bg: var(--tblr-linkedin-bg-subtle); + --tblr-alert-border-color: var(--tblr-linkedin-border-subtle); + --tblr-alert-link-color: var(--tblr-linkedin-text-emphasis); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google-text-emphasis); + --tblr-alert-bg: var(--tblr-google-bg-subtle); + --tblr-alert-border-color: var(--tblr-google-border-subtle); + --tblr-alert-link-color: var(--tblr-google-text-emphasis); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube-text-emphasis); + --tblr-alert-bg: var(--tblr-youtube-bg-subtle); + --tblr-alert-border-color: var(--tblr-youtube-border-subtle); + --tblr-alert-link-color: var(--tblr-youtube-text-emphasis); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo-text-emphasis); + --tblr-alert-bg: var(--tblr-vimeo-bg-subtle); + --tblr-alert-border-color: var(--tblr-vimeo-border-subtle); + --tblr-alert-link-color: var(--tblr-vimeo-text-emphasis); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble-text-emphasis); + --tblr-alert-bg: var(--tblr-dribbble-bg-subtle); + --tblr-alert-border-color: var(--tblr-dribbble-border-subtle); + --tblr-alert-link-color: var(--tblr-dribbble-text-emphasis); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github-text-emphasis); + --tblr-alert-bg: var(--tblr-github-bg-subtle); + --tblr-alert-border-color: var(--tblr-github-border-subtle); + --tblr-alert-link-color: var(--tblr-github-text-emphasis); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram-text-emphasis); + --tblr-alert-bg: var(--tblr-instagram-bg-subtle); + --tblr-alert-border-color: var(--tblr-instagram-border-subtle); + --tblr-alert-link-color: var(--tblr-instagram-text-emphasis); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest-text-emphasis); + --tblr-alert-bg: var(--tblr-pinterest-bg-subtle); + --tblr-alert-border-color: var(--tblr-pinterest-border-subtle); + --tblr-alert-link-color: var(--tblr-pinterest-text-emphasis); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk-text-emphasis); + --tblr-alert-bg: var(--tblr-vk-bg-subtle); + --tblr-alert-border-color: var(--tblr-vk-border-subtle); + --tblr-alert-link-color: var(--tblr-vk-text-emphasis); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss-text-emphasis); + --tblr-alert-bg: var(--tblr-rss-bg-subtle); + --tblr-alert-border-color: var(--tblr-rss-border-subtle); + --tblr-alert-link-color: var(--tblr-rss-text-emphasis); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr-text-emphasis); + --tblr-alert-bg: var(--tblr-flickr-bg-subtle); + --tblr-alert-border-color: var(--tblr-flickr-border-subtle); + --tblr-alert-link-color: var(--tblr-flickr-text-emphasis); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket-text-emphasis); + --tblr-alert-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-alert-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-alert-link-color: var(--tblr-bitbucket-text-emphasis); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler-text-emphasis); + --tblr-alert-bg: var(--tblr-tabler-bg-subtle); + --tblr-alert-border-color: var(--tblr-tabler-border-subtle); + --tblr-alert-link-color: var(--tblr-tabler-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 0.5rem; + } +} +.progress, +.progress-stacked { + --tblr-progress-height: 0.5rem; + --tblr-progress-font-size: 0.65625rem; + --tblr-progress-bg: var(--tblr-border-color); + --tblr-progress-border-radius: var(--tblr-border-radius); + --tblr-progress-box-shadow: var(--tblr-box-shadow-inset); + --tblr-progress-bar-color: #ffffff; + --tblr-progress-bar-bg: var(--tblr-primary); + --tblr-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--tblr-progress-height); + overflow: hidden; + font-size: var(--tblr-progress-font-size); + background-color: var(--tblr-progress-bg); + border-radius: var(--tblr-progress-border-radius); + box-shadow: var(--tblr-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--tblr-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-progress-bar-bg); + transition: var(--tblr-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(--tblr-progress-height) var(--tblr-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 { + --tblr-list-group-color: var(--tblr-body-color); + --tblr-list-group-bg: inherit; + --tblr-list-group-border-color: var(--tblr-border-color); + --tblr-list-group-border-width: var(--tblr-border-width); + --tblr-list-group-border-radius: var(--tblr-border-radius); + --tblr-list-group-item-padding-x: 1.25rem; + --tblr-list-group-item-padding-y: 1.25rem; + --tblr-list-group-action-color: inherit; + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-list-group-action-active-color: var(--tblr-body-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-bg); + --tblr-list-group-disabled-color: var(--tblr-secondary-color); + --tblr-list-group-disabled-bg: inherit; + --tblr-list-group-active-color: inherit; + --tblr-list-group-active-bg: var(--tblr-active-bg); + --tblr-list-group-active-border-color: var(--tblr-border-color); + display: flex; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; + border-radius: var(--tblr-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(--tblr-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--tblr-list-group-action-hover-color); + text-decoration: none; + background-color: var(--tblr-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--tblr-list-group-action-active-color); + background-color: var(--tblr-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x); + color: var(--tblr-list-group-color); + background-color: var(--tblr-list-group-bg); + border: var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color); +} +.list-group-item:first-child { + border-top-right-radius: inherit; + border-top-left-radius: inherit; +} +.list-group-item:last-child { + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--tblr-list-group-disabled-color); + pointer-events: none; + background-color: var(--tblr-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--tblr-list-group-active-color); + background-color: var(--tblr-list-group-active-bg); + border-color: var(--tblr-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(--tblr-list-group-border-width)); + border-top-width: var(--tblr-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-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-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-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-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-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-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-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-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-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-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-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(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--tblr-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --tblr-list-group-color: var(--tblr-primary-text-emphasis); + --tblr-list-group-bg: var(--tblr-primary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-primary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-active-color: var(--tblr-primary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-primary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis); +} + +.list-group-item-secondary { + --tblr-list-group-color: var(--tblr-secondary-text-emphasis); + --tblr-list-group-bg: var(--tblr-secondary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-active-color: var(--tblr-secondary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis); +} + +.list-group-item-success { + --tblr-list-group-color: var(--tblr-success-text-emphasis); + --tblr-list-group-bg: var(--tblr-success-bg-subtle); + --tblr-list-group-border-color: var(--tblr-success-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-success-border-subtle); + --tblr-list-group-active-color: var(--tblr-success-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-success-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-success-text-emphasis); +} + +.list-group-item-info { + --tblr-list-group-color: var(--tblr-info-text-emphasis); + --tblr-list-group-bg: var(--tblr-info-bg-subtle); + --tblr-list-group-border-color: var(--tblr-info-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-info-border-subtle); + --tblr-list-group-active-color: var(--tblr-info-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-info-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-info-text-emphasis); +} + +.list-group-item-warning { + --tblr-list-group-color: var(--tblr-warning-text-emphasis); + --tblr-list-group-bg: var(--tblr-warning-bg-subtle); + --tblr-list-group-border-color: var(--tblr-warning-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-active-color: var(--tblr-warning-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-warning-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis); +} + +.list-group-item-danger { + --tblr-list-group-color: var(--tblr-danger-text-emphasis); + --tblr-list-group-bg: var(--tblr-danger-bg-subtle); + --tblr-list-group-border-color: var(--tblr-danger-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-active-color: var(--tblr-danger-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-danger-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis); +} + +.list-group-item-light { + --tblr-list-group-color: var(--tblr-light-text-emphasis); + --tblr-list-group-bg: var(--tblr-light-bg-subtle); + --tblr-list-group-border-color: var(--tblr-light-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-light-border-subtle); + --tblr-list-group-active-color: var(--tblr-light-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-light-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-light-text-emphasis); +} + +.list-group-item-dark { + --tblr-list-group-color: var(--tblr-dark-text-emphasis); + --tblr-list-group-bg: var(--tblr-dark-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dark-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-active-color: var(--tblr-dark-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dark-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis); +} + +.list-group-item-muted { + --tblr-list-group-color: var(--tblr-muted-text-emphasis); + --tblr-list-group-bg: var(--tblr-muted-bg-subtle); + --tblr-list-group-border-color: var(--tblr-muted-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-active-color: var(--tblr-muted-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-muted-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis); +} + +.list-group-item-blue { + --tblr-list-group-color: var(--tblr-blue-text-emphasis); + --tblr-list-group-bg: var(--tblr-blue-bg-subtle); + --tblr-list-group-border-color: var(--tblr-blue-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-active-color: var(--tblr-blue-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-blue-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis); +} + +.list-group-item-azure { + --tblr-list-group-color: var(--tblr-azure-text-emphasis); + --tblr-list-group-bg: var(--tblr-azure-bg-subtle); + --tblr-list-group-border-color: var(--tblr-azure-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-active-color: var(--tblr-azure-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-azure-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis); +} + +.list-group-item-indigo { + --tblr-list-group-color: var(--tblr-indigo-text-emphasis); + --tblr-list-group-bg: var(--tblr-indigo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-active-color: var(--tblr-indigo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis); +} + +.list-group-item-purple { + --tblr-list-group-color: var(--tblr-purple-text-emphasis); + --tblr-list-group-bg: var(--tblr-purple-bg-subtle); + --tblr-list-group-border-color: var(--tblr-purple-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-active-color: var(--tblr-purple-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-purple-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis); +} + +.list-group-item-pink { + --tblr-list-group-color: var(--tblr-pink-text-emphasis); + --tblr-list-group-bg: var(--tblr-pink-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pink-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-active-color: var(--tblr-pink-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pink-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis); +} + +.list-group-item-red { + --tblr-list-group-color: var(--tblr-red-text-emphasis); + --tblr-list-group-bg: var(--tblr-red-bg-subtle); + --tblr-list-group-border-color: var(--tblr-red-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-red-border-subtle); + --tblr-list-group-active-color: var(--tblr-red-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-red-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-red-text-emphasis); +} + +.list-group-item-orange { + --tblr-list-group-color: var(--tblr-orange-text-emphasis); + --tblr-list-group-bg: var(--tblr-orange-bg-subtle); + --tblr-list-group-border-color: var(--tblr-orange-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-active-color: var(--tblr-orange-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-orange-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis); +} + +.list-group-item-yellow { + --tblr-list-group-color: var(--tblr-yellow-text-emphasis); + --tblr-list-group-bg: var(--tblr-yellow-bg-subtle); + --tblr-list-group-border-color: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-active-color: var(--tblr-yellow-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis); +} + +.list-group-item-lime { + --tblr-list-group-color: var(--tblr-lime-text-emphasis); + --tblr-list-group-bg: var(--tblr-lime-bg-subtle); + --tblr-list-group-border-color: var(--tblr-lime-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-active-color: var(--tblr-lime-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-lime-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis); +} + +.list-group-item-green { + --tblr-list-group-color: var(--tblr-green-text-emphasis); + --tblr-list-group-bg: var(--tblr-green-bg-subtle); + --tblr-list-group-border-color: var(--tblr-green-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-green-border-subtle); + --tblr-list-group-active-color: var(--tblr-green-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-green-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-green-text-emphasis); +} + +.list-group-item-teal { + --tblr-list-group-color: var(--tblr-teal-text-emphasis); + --tblr-list-group-bg: var(--tblr-teal-bg-subtle); + --tblr-list-group-border-color: var(--tblr-teal-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-active-color: var(--tblr-teal-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-teal-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis); +} + +.list-group-item-cyan { + --tblr-list-group-color: var(--tblr-cyan-text-emphasis); + --tblr-list-group-bg: var(--tblr-cyan-bg-subtle); + --tblr-list-group-border-color: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-active-color: var(--tblr-cyan-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis); +} + +.list-group-item-facebook { + --tblr-list-group-color: var(--tblr-facebook-text-emphasis); + --tblr-list-group-bg: var(--tblr-facebook-bg-subtle); + --tblr-list-group-border-color: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-active-color: var(--tblr-facebook-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-facebook-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-facebook-text-emphasis); +} + +.list-group-item-twitter { + --tblr-list-group-color: var(--tblr-twitter-text-emphasis); + --tblr-list-group-bg: var(--tblr-twitter-bg-subtle); + --tblr-list-group-border-color: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-active-color: var(--tblr-twitter-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-twitter-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-twitter-text-emphasis); +} + +.list-group-item-linkedin { + --tblr-list-group-color: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-bg: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-border-color: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-active-color: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-linkedin-text-emphasis); +} + +.list-group-item-google { + --tblr-list-group-color: var(--tblr-google-text-emphasis); + --tblr-list-group-bg: var(--tblr-google-bg-subtle); + --tblr-list-group-border-color: var(--tblr-google-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-google-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-google-border-subtle); + --tblr-list-group-active-color: var(--tblr-google-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-google-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-google-text-emphasis); +} + +.list-group-item-youtube { + --tblr-list-group-color: var(--tblr-youtube-text-emphasis); + --tblr-list-group-bg: var(--tblr-youtube-bg-subtle); + --tblr-list-group-border-color: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-active-color: var(--tblr-youtube-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-youtube-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-youtube-text-emphasis); +} + +.list-group-item-vimeo { + --tblr-list-group-color: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-bg: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-active-color: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vimeo-text-emphasis); +} + +.list-group-item-dribbble { + --tblr-list-group-color: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-bg: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-active-color: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dribbble-text-emphasis); +} + +.list-group-item-github { + --tblr-list-group-color: var(--tblr-github-text-emphasis); + --tblr-list-group-bg: var(--tblr-github-bg-subtle); + --tblr-list-group-border-color: var(--tblr-github-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-github-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-github-border-subtle); + --tblr-list-group-active-color: var(--tblr-github-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-github-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-github-text-emphasis); +} + +.list-group-item-instagram { + --tblr-list-group-color: var(--tblr-instagram-text-emphasis); + --tblr-list-group-bg: var(--tblr-instagram-bg-subtle); + --tblr-list-group-border-color: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-active-color: var(--tblr-instagram-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-instagram-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-instagram-text-emphasis); +} + +.list-group-item-pinterest { + --tblr-list-group-color: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-bg: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-active-color: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pinterest-text-emphasis); +} + +.list-group-item-vk { + --tblr-list-group-color: var(--tblr-vk-text-emphasis); + --tblr-list-group-bg: var(--tblr-vk-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vk-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-active-color: var(--tblr-vk-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vk-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vk-text-emphasis); +} + +.list-group-item-rss { + --tblr-list-group-color: var(--tblr-rss-text-emphasis); + --tblr-list-group-bg: var(--tblr-rss-bg-subtle); + --tblr-list-group-border-color: var(--tblr-rss-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-active-color: var(--tblr-rss-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-rss-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-rss-text-emphasis); +} + +.list-group-item-flickr { + --tblr-list-group-color: var(--tblr-flickr-text-emphasis); + --tblr-list-group-bg: var(--tblr-flickr-bg-subtle); + --tblr-list-group-border-color: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-active-color: var(--tblr-flickr-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-flickr-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-flickr-text-emphasis); +} + +.list-group-item-bitbucket { + --tblr-list-group-color: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-active-color: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-bitbucket-text-emphasis); +} + +.list-group-item-tabler { + --tblr-list-group-color: var(--tblr-tabler-text-emphasis); + --tblr-list-group-bg: var(--tblr-tabler-bg-subtle); + --tblr-list-group-border-color: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-active-color: var(--tblr-tabler-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-tabler-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-tabler-text-emphasis); +} + +.btn-close { + --tblr-btn-close-color: #182433; + --tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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"); + --tblr-btn-close-opacity: 0.4; + --tblr-btn-close-hover-opacity: 0.75; + --tblr-btn-close-focus-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-btn-close-focus-opacity: 1; + --tblr-btn-close-disabled-opacity: 0.25; + --tblr-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(--tblr-btn-close-color); + background: transparent var(--tblr-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 4px; + opacity: var(--tblr-btn-close-opacity); +} +.btn-close:hover { + color: var(--tblr-btn-close-color); + text-decoration: none; + opacity: var(--tblr-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--tblr-btn-close-focus-shadow); + opacity: var(--tblr-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: var(--tblr-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--tblr-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close, body[data-bs-theme=dark] [data-bs-theme=light] .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.toast { + --tblr-toast-zindex: 1090; + --tblr-toast-padding-x: 0.75rem; + --tblr-toast-padding-y: 0.5rem; + --tblr-toast-spacing: calc(var(--tblr-page-padding) * 2); + --tblr-toast-max-width: 350px; + --tblr-toast-font-size: 0.875rem; + --tblr-toast-color: ; + --tblr-toast-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-border-width: var(--tblr-border-width); + --tblr-toast-border-color: var(--tblr-border-color); + --tblr-toast-border-radius: var(--tblr-border-radius); + --tblr-toast-box-shadow: var(--tblr-box-shadow); + --tblr-toast-header-color: var(--tblr-secondary); + --tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-header-border-color: var(--tblr-border-color); + width: var(--tblr-toast-max-width); + max-width: 100%; + font-size: var(--tblr-toast-font-size); + color: var(--tblr-toast-color); + pointer-events: auto; + background-color: var(--tblr-toast-bg); + background-clip: padding-box; + border: var(--tblr-toast-border-width) solid var(--tblr-toast-border-color); + box-shadow: var(--tblr-toast-box-shadow); + border-radius: var(--tblr-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --tblr-toast-zindex: 1090; + position: absolute; + z-index: var(--tblr-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(--tblr-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--tblr-toast-padding-y) var(--tblr-toast-padding-x); + color: var(--tblr-toast-header-color); + background-color: var(--tblr-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color); + border-top-right-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); + border-top-left-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); +} +.toast-header .btn-close { + margin-left: calc(-0.5 * var(--tblr-toast-padding-x)); + margin-right: var(--tblr-toast-padding-x); +} + +.toast-body { + padding: var(--tblr-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --tblr-modal-zindex: 1055; + --tblr-modal-width: 540px; + --tblr-modal-padding: 1.5rem; + --tblr-modal-margin: 0.5rem; + --tblr-modal-color: ; + --tblr-modal-bg: var(--tblr-bg-surface); + --tblr-modal-border-color: transparent; + --tblr-modal-border-width: var(--tblr-border-width); + --tblr-modal-border-radius: var(--tblr-border-radius-lg); + --tblr-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px); + --tblr-modal-header-padding-x: 1.5rem; + --tblr-modal-header-padding-y: 1.5rem; + --tblr-modal-header-padding: 1.5rem; + --tblr-modal-header-border-color: var(--tblr-border-color); + --tblr-modal-header-border-width: var(--tblr-border-width); + --tblr-modal-title-line-height: 1.4285714286; + --tblr-modal-footer-gap: 0.75rem; + --tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary); + --tblr-modal-footer-border-color: var(--tblr-border-color); + --tblr-modal-footer-border-width: var(--tblr-border-width); + position: fixed; + top: 0; + right: 0; + z-index: var(--tblr-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--tblr-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -1rem); +} +@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(--tblr-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(--tblr-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--tblr-modal-color); + pointer-events: auto; + background-color: var(--tblr-modal-bg); + background-clip: padding-box; + border: var(--tblr-modal-border-width) solid var(--tblr-modal-border-color); + border-radius: var(--tblr-modal-border-radius); + box-shadow: var(--tblr-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --tblr-backdrop-zindex: 1050; + --tblr-backdrop-bg: #182433; + --tblr-backdrop-opacity: 0.24; + position: fixed; + top: 0; + right: 0; + z-index: var(--tblr-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--tblr-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--tblr-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--tblr-modal-header-padding); + border-bottom: var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color); + border-top-right-radius: var(--tblr-modal-inner-border-radius); + border-top-left-radius: var(--tblr-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--tblr-modal-header-padding-y) * 0.5) calc(var(--tblr-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--tblr-modal-header-padding-y)) auto calc(-0.5 * var(--tblr-modal-header-padding-y)) calc(-0.5 * var(--tblr-modal-header-padding-x)); +} + +.modal-title { + margin-bottom: 0; + line-height: var(--tblr-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--tblr-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * 0.5); + background-color: var(--tblr-modal-footer-bg); + border-top: var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color); + border-bottom-left-radius: var(--tblr-modal-inner-border-radius); + border-bottom-right-radius: var(--tblr-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--tblr-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --tblr-modal-margin: 1.75rem; + --tblr-modal-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + } + .modal-dialog { + max-width: var(--tblr-modal-width); + margin-left: auto; + margin-right: auto; + } + .modal-sm { + --tblr-modal-width: 380px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --tblr-modal-width: 720px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --tblr-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-header, +.modal-fullscreen .modal-footer { + 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-header, + .modal-fullscreen-sm-down .modal-footer { + 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-header, + .modal-fullscreen-md-down .modal-footer { + 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-header, + .modal-fullscreen-lg-down .modal-footer { + 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-header, + .modal-fullscreen-xl-down .modal-footer { + 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-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --tblr-tooltip-zindex: 1080; + --tblr-tooltip-max-width: 200px; + --tblr-tooltip-padding-x: var(--tblr-spacer-2); + --tblr-tooltip-padding-y: var(--tblr-spacer-2); + --tblr-tooltip-margin: ; + --tblr-tooltip-font-size: 0.765625rem; + --tblr-tooltip-color: var(--tblr-light); + --tblr-tooltip-bg: var(--tblr-bg-surface-dark); + --tblr-tooltip-border-radius: var(--tblr-border-radius); + --tblr-tooltip-opacity: 0.9; + --tblr-tooltip-arrow-width: 0.8rem; + --tblr-tooltip-arrow-height: 0.4rem; + z-index: var(--tblr-tooltip-zindex); + display: block; + margin: var(--tblr-tooltip-margin); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: right; + 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(--tblr-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--tblr-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--tblr-tooltip-arrow-width); + height: var(--tblr-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-bottom-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-left-color: var(--tblr-tooltip-bg); +} +.tooltip-inner { + max-width: var(--tblr-tooltip-max-width); + padding: var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x); + color: var(--tblr-tooltip-color); + text-align: center; + background-color: var(--tblr-tooltip-bg); + border-radius: var(--tblr-tooltip-border-radius); +} + +.popover { + --tblr-popover-zindex: 1070; + --tblr-popover-max-width: 276px; + --tblr-popover-font-size: 0.765625rem; + --tblr-popover-bg: var(--tblr-bg-surface); + --tblr-popover-border-width: var(--tblr-border-width); + --tblr-popover-border-color: var(--tblr-border-color); + --tblr-popover-border-radius: var(--tblr-border-radius-lg); + --tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width)); + --tblr-popover-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-popover-header-padding-x: 1rem; + --tblr-popover-header-padding-y: 0.5rem; + --tblr-popover-header-font-size: 0.875rem; + --tblr-popover-header-color: inherit; + --tblr-popover-header-bg: transparent; + --tblr-popover-body-padding-x: 1rem; + --tblr-popover-body-padding-y: 1rem; + --tblr-popover-body-color: inherit; + --tblr-popover-arrow-width: 1rem; + --tblr-popover-arrow-height: 0.5rem; + --tblr-popover-arrow-border: var(--tblr-popover-border-color); + z-index: var(--tblr-popover-zindex); + display: block; + max-width: var(--tblr-popover-max-width); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: right; + 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(--tblr-popover-font-size); + word-wrap: break-word; + background-color: var(--tblr-popover-bg); + background-clip: padding-box; + border: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-radius: var(--tblr-popover-border-radius); + box-shadow: var(--tblr-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--tblr-popover-arrow-width); + height: var(--tblr-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--tblr-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--tblr-popover-border-width); + border-top-color: var(--tblr-popover-bg); +} +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--tblr-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--tblr-popover-border-width); + border-right-color: var(--tblr-popover-bg); +} +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--tblr-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--tblr-popover-border-width); + border-bottom-color: var(--tblr-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + right: 50%; + display: block; + width: var(--tblr-popover-arrow-width); + margin-right: calc(-0.5 * var(--tblr-popover-arrow-width)); + content: ""; + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg); +} +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--tblr-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--tblr-popover-border-width); + border-left-color: var(--tblr-popover-bg); +} +.popover-header { + padding: var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--tblr-popover-header-font-size); + color: var(--tblr-popover-header-color); + background-color: var(--tblr-popover-header-bg); + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-top-right-radius: var(--tblr-popover-inner-border-radius); + border-top-left-radius: var(--tblr-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x); + color: var(--tblr-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: right; + width: 100%; + margin-left: -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.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(-100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #ffffff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + right: 0; +} + +.carousel-control-next { + left: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 1.5rem; + height: 1.5rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + left: 0; + bottom: 0; + right: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-left: 15%; + margin-bottom: 1rem; + margin-right: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-left: 3px; + margin-right: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #ffffff; + 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; + left: 15%; + bottom: 1.25rem; + right: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #ffffff; + 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: #000000; +} +.carousel-dark .carousel-caption { + color: #000000; +} + +[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: #000000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--tblr-spinner-width); + height: var(--tblr-spinner-height); + vertical-align: var(--tblr-spinner-vertical-align); + border-radius: 50%; + animation: var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) ; + } +} +.spinner-border { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-border-width: 2px; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-border; + border: var(--tblr-spinner-border-width) solid currentcolor; + border-left-color: transparent; +} + +.spinner-border-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; + --tblr-spinner-border-width: 1px; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --tblr-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --tblr-offcanvas-zindex: 1045; + --tblr-offcanvas-width: 400px; + --tblr-offcanvas-height: 30vh; + --tblr-offcanvas-padding-x: 1.5rem; + --tblr-offcanvas-padding-y: 1.5rem; + --tblr-offcanvas-color: var(--tblr-body-color); + --tblr-offcanvas-bg: var(--tblr-bg-surface); + --tblr-offcanvas-border-width: var(--tblr-border-width); + --tblr-offcanvas-border-color: var(--tblr-border-color); + --tblr-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-offcanvas-transition: transform 0.3s ease-in-out; + --tblr-offcanvas-title-line-height: 1.4285714286; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-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; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --tblr-offcanvas-height: auto; + --tblr-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(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + right: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #182433; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.24; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--tblr-offcanvas-padding-y) * 0.5) calc(var(--tblr-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--tblr-offcanvas-padding-y)); + margin-left: calc(-0.5 * var(--tblr-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--tblr-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--tblr-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.2; +} +.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.1; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 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: #fcfdfe !important; + background-color: RGBA(var(--tblr-primary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-success-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-info-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-warning-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-danger-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #182433 !important; + background-color: RGBA(var(--tblr-light-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dark-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-muted { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-muted-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-blue { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-blue-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-azure { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-azure-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-indigo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-purple { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-purple-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pink { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pink-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-red { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-red-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-orange { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-orange-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-yellow { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-lime { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-lime-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-green { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-green-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-teal { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-teal-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-cyan { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-facebook { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-twitter { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-linkedin { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-google { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-google-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-youtube { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vimeo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dribbble { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-github { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-github-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-instagram { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pinterest { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vk { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vk-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-rss { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-rss-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-flickr { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-bitbucket { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-tabler { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--tblr-success-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--tblr-info-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--tblr-light-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(253, 253, 254, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(19, 29, 41, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-muted { + color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-muted:hover, .link-muted:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-blue { + color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-blue:hover, .link-blue:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-azure { + color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-azure:hover, .link-azure:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-indigo { + color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-indigo:hover, .link-indigo:focus { + color: RGBA(53, 79, 188, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-purple { + color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-purple:hover, .link-purple:focus { + color: RGBA(139, 50, 161, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pink { + color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pink:hover, .link-pink:focus { + color: RGBA(171, 41, 86, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-red { + color: RGBA(var(--tblr-red-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-red:hover, .link-red:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-orange { + color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-orange:hover, .link-orange:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-yellow { + color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-yellow:hover, .link-yellow:focus { + color: RGBA(196, 127, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-lime { + color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-lime:hover, .link-lime:focus { + color: RGBA(93, 147, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-green { + color: RGBA(var(--tblr-green-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-green:hover, .link-green:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-teal { + color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-teal:hover, .link-teal:focus { + color: RGBA(10, 133, 96, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-cyan { + color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-cyan:hover, .link-cyan:focus { + color: RGBA(18, 130, 147, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-facebook { + color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-facebook:hover, .link-facebook:focus { + color: RGBA(19, 95, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-twitter { + color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-twitter:hover, .link-twitter:focus { + color: RGBA(23, 129, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-linkedin { + color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-linkedin:hover, .link-linkedin:focus { + color: RGBA(8, 82, 155, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-google { + color: RGBA(var(--tblr-google-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-google:hover, .link-google:focus { + color: RGBA(176, 62, 52, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-youtube { + color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-youtube:hover, .link-youtube:focus { + color: RGBA(204, 0, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vimeo { + color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vimeo:hover, .link-vimeo:focus { + color: RGBA(21, 146, 187, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dribbble { + color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dribbble:hover, .link-dribbble:focus { + color: RGBA(187, 61, 110, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-github { + color: RGBA(var(--tblr-github-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-github:hover, .link-github:focus { + color: RGBA(19, 18, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-instagram { + color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-instagram:hover, .link-instagram:focus { + color: RGBA(182, 51, 76, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pinterest { + color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pinterest:hover, .link-pinterest:focus { + color: RGBA(151, 6, 22, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vk { + color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vk:hover, .link-vk:focus { + color: RGBA(79, 105, 134, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-rss { + color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-rss:hover, .link-rss:focus { + color: RGBA(204, 132, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-flickr { + color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-flickr:hover, .link-flickr:focus { + color: RGBA(0, 79, 176, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-bitbucket { + color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-bitbucket:hover, .link-bitbucket:focus { + color: RGBA(0, 66, 163, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-tabler { + color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-tabler:hover, .link-tabler:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-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:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--tblr-icon-link-transform, translate3d(-0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--tblr-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --tblr-aspect-ratio: 100%; +} + +.ratio-2x1 { + --tblr-aspect-ratio: 50%; +} + +.ratio-1x2 { + --tblr-aspect-ratio: 200%; +} + +.ratio-3x1 { + --tblr-aspect-ratio: 33.3333333333%; +} + +.ratio-1x3 { + --tblr-aspect-ratio: 300%; +} + +.ratio-4x3 { + --tblr-aspect-ratio: 75%; +} + +.ratio-3x4 { + --tblr-aspect-ratio: 133.3333333333%; +} + +.ratio-16x9 { + --tblr-aspect-ratio: 56.25%; +} + +.ratio-9x16 { + --tblr-aspect-ratio: 177.7777777778%; +} + +.ratio-21x9 { + --tblr-aspect-ratio: 42.8571428571%; +} + +.ratio-9x21 { + --tblr-aspect-ratio: 233.3333333333%; +} + +.fixed-top { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + left: 0; + bottom: 0; + right: 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:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--tblr-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.16; +} + +.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: right !important; +} + +.float-end { + float: left !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: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-secondary { + --tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-success { + --tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-info { + --tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-warning { + --tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-danger { + --tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-light { + --tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dark { + --tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-muted { + --tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-blue { + --tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-azure { + --tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-indigo { + --tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-purple { + --tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pink { + --tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-red { + --tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-orange { + --tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-yellow { + --tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-lime { + --tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-green { + --tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-teal { + --tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-cyan { + --tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-facebook { + --tblr-focus-ring-color: rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-twitter { + --tblr-focus-ring-color: rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-linkedin { + --tblr-focus-ring-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-google { + --tblr-focus-ring-color: rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-youtube { + --tblr-focus-ring-color: rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vimeo { + --tblr-focus-ring-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dribbble { + --tblr-focus-ring-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-github { + --tblr-focus-ring-color: rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-instagram { + --tblr-focus-ring-color: rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pinterest { + --tblr-focus-ring-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vk { + --tblr-focus-ring-color: rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-rss { + --tblr-focus-ring-color: rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-flickr { + --tblr-focus-ring-color: rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-bitbucket { + --tblr-focus-ring-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-tabler { + --tblr-focus-ring-color: rgba(var(--tblr-tabler-rgb), var(--tblr-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 { + right: 0 !important; +} + +.start-50 { + right: 50% !important; +} + +.start-100 { + right: 100% !important; +} + +.end-0 { + left: 0 !important; +} + +.end-50 { + left: 50% !important; +} + +.end-100 { + left: 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(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-wide { + border: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-0 { + border-left: 0 !important; +} + +.border-bottom { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-wide { + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-0 { + border-right: 0 !important; +} + +.border-primary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-primary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-secondary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-secondary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-success { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-success-rgb), var(--tblr-border-opacity)) !important; +} + +.border-info { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-info-rgb), var(--tblr-border-opacity)) !important; +} + +.border-warning { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-warning-rgb), var(--tblr-border-opacity)) !important; +} + +.border-danger { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-danger-rgb), var(--tblr-border-opacity)) !important; +} + +.border-light { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-light-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dark { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dark-rgb), var(--tblr-border-opacity)) !important; +} + +.border-muted { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-muted-rgb), var(--tblr-border-opacity)) !important; +} + +.border-blue { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-blue-rgb), var(--tblr-border-opacity)) !important; +} + +.border-azure { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-azure-rgb), var(--tblr-border-opacity)) !important; +} + +.border-indigo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-indigo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-purple { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-purple-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pink { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pink-rgb), var(--tblr-border-opacity)) !important; +} + +.border-red { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-red-rgb), var(--tblr-border-opacity)) !important; +} + +.border-orange { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-orange-rgb), var(--tblr-border-opacity)) !important; +} + +.border-yellow { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-yellow-rgb), var(--tblr-border-opacity)) !important; +} + +.border-lime { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-lime-rgb), var(--tblr-border-opacity)) !important; +} + +.border-green { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-green-rgb), var(--tblr-border-opacity)) !important; +} + +.border-teal { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-teal-rgb), var(--tblr-border-opacity)) !important; +} + +.border-cyan { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-cyan-rgb), var(--tblr-border-opacity)) !important; +} + +.border-facebook { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-facebook-rgb), var(--tblr-border-opacity)) !important; +} + +.border-twitter { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-twitter-rgb), var(--tblr-border-opacity)) !important; +} + +.border-linkedin { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-border-opacity)) !important; +} + +.border-google { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-google-rgb), var(--tblr-border-opacity)) !important; +} + +.border-youtube { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-youtube-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vimeo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dribbble { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-border-opacity)) !important; +} + +.border-github { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-github-rgb), var(--tblr-border-opacity)) !important; +} + +.border-instagram { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-instagram-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pinterest { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vk { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vk-rgb), var(--tblr-border-opacity)) !important; +} + +.border-rss { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-rss-rgb), var(--tblr-border-opacity)) !important; +} + +.border-flickr { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-flickr-rgb), var(--tblr-border-opacity)) !important; +} + +.border-bitbucket { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-border-opacity)) !important; +} + +.border-tabler { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-tabler-rgb), var(--tblr-border-opacity)) !important; +} + +.border-black { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-black-rgb), var(--tblr-border-opacity)) !important; +} + +.border-white { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-white-rgb), var(--tblr-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--tblr-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--tblr-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--tblr-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--tblr-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--tblr-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--tblr-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--tblr-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--tblr-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 { + --tblr-border-opacity: 0.1; +} + +.border-opacity-25 { + --tblr-border-opacity: 0.25; +} + +.border-opacity-50 { + --tblr-border-opacity: 0.5; +} + +.border-opacity-75 { + --tblr-border-opacity: 0.75; +} + +.border-opacity-100 { + --tblr-border-opacity: 1; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.w-25 { + width: 25% !important; +} + +.w-33 { + width: 33.33333% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-66 { + width: 66.66666% !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-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.h-25 { + height: 25% !important; +} + +.h-33 { + height: 33.33333% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-66 { + height: 66.66666% !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: 2rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.m-7 { + margin: 5rem !important; +} + +.m-8 { + margin: 8rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.mx-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.mx-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.mx-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; +} + +.mx-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.mx-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; +} + +.mx-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; +} + +.mx-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mt-7 { + margin-top: 5rem !important; +} + +.mt-8 { + margin-top: 8rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-left: 0 !important; +} + +.me-1 { + margin-left: 0.25rem !important; +} + +.me-2 { + margin-left: 0.5rem !important; +} + +.me-3 { + margin-left: 1rem !important; +} + +.me-4 { + margin-left: 1.5rem !important; +} + +.me-5 { + margin-left: 2rem !important; +} + +.me-6 { + margin-left: 3rem !important; +} + +.me-7 { + margin-left: 5rem !important; +} + +.me-8 { + margin-left: 8rem !important; +} + +.me-auto { + margin-left: 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: 2rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.mb-7 { + margin-bottom: 5rem !important; +} + +.mb-8 { + margin-bottom: 8rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-right: 0 !important; +} + +.ms-1 { + margin-right: 0.25rem !important; +} + +.ms-2 { + margin-right: 0.5rem !important; +} + +.ms-3 { + margin-right: 1rem !important; +} + +.ms-4 { + margin-right: 1.5rem !important; +} + +.ms-5 { + margin-right: 2rem !important; +} + +.ms-6 { + margin-right: 3rem !important; +} + +.ms-7 { + margin-right: 5rem !important; +} + +.ms-8 { + margin-right: 8rem !important; +} + +.ms-auto { + margin-right: 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: 2rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.p-7 { + padding: 5rem !important; +} + +.p-8 { + padding: 8rem !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.px-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.px-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.px-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; +} + +.px-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.px-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; +} + +.px-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.py-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pt-7 { + padding-top: 5rem !important; +} + +.pt-8 { + padding-top: 8rem !important; +} + +.pe-0 { + padding-left: 0 !important; +} + +.pe-1 { + padding-left: 0.25rem !important; +} + +.pe-2 { + padding-left: 0.5rem !important; +} + +.pe-3 { + padding-left: 1rem !important; +} + +.pe-4 { + padding-left: 1.5rem !important; +} + +.pe-5 { + padding-left: 2rem !important; +} + +.pe-6 { + padding-left: 3rem !important; +} + +.pe-7 { + padding-left: 5rem !important; +} + +.pe-8 { + padding-left: 8rem !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: 2rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pb-7 { + padding-bottom: 5rem !important; +} + +.pb-8 { + padding-bottom: 8rem !important; +} + +.ps-0 { + padding-right: 0 !important; +} + +.ps-1 { + padding-right: 0.25rem !important; +} + +.ps-2 { + padding-right: 0.5rem !important; +} + +.ps-3 { + padding-right: 1rem !important; +} + +.ps-4 { + padding-right: 1.5rem !important; +} + +.ps-5 { + padding-right: 2rem !important; +} + +.ps-6 { + padding-right: 3rem !important; +} + +.ps-7 { + padding-right: 5rem !important; +} + +.ps-8 { + padding-right: 8rem !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: 2rem !important; +} + +.gap-6 { + gap: 3rem !important; +} + +.gap-7 { + gap: 5rem !important; +} + +.gap-8 { + gap: 8rem !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: 2rem !important; +} + +.row-gap-6 { + row-gap: 3rem !important; +} + +.row-gap-7 { + row-gap: 5rem !important; +} + +.row-gap-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; +} + +.column-gap-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.column-gap-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; +} + +.column-gap-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; +} + +.font-monospace { + font-family: var(--tblr-font-monospace) !important; +} + +.fs-1 { + font-size: 1.5rem !important; +} + +.fs-2 { + font-size: 1.25rem !important; +} + +.fs-3 { + font-size: 1rem !important; +} + +.fs-4 { + font-size: 0.875rem !important; +} + +.fs-5 { + font-size: 0.75rem !important; +} + +.fs-6 { + font-size: 0.625rem !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: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.1428571429 !important; +} + +.lh-base { + line-height: 1.4285714286 !important; +} + +.lh-lg { + line-height: 1.7142857143 !important; +} + +.text-start { + text-align: right !important; +} + +.text-end { + text-align: left !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-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-black-rgb), var(--tblr-text-opacity)) !important; +} + +.text-white { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; +} + +.text-body { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-body-color-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black-50 { + --tblr-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --tblr-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-body-tertiary { + --tblr-text-opacity: 1; + color: var(--tblr-tertiary-color) !important; +} + +.text-body-emphasis { + --tblr-text-opacity: 1; + color: var(--tblr-emphasis-color) !important; +} + +.text-reset { + --tblr-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --tblr-text-opacity: 0.25; +} + +.text-opacity-50 { + --tblr-text-opacity: 0.5; +} + +.text-opacity-75 { + --tblr-text-opacity: 0.75; +} + +.text-opacity-100 { + --tblr-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--tblr-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--tblr-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--tblr-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--tblr-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--tblr-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--tblr-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--tblr-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--tblr-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --tblr-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --tblr-link-opacity: 0.1; +} + +.link-opacity-25 { + --tblr-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --tblr-link-opacity: 0.25; +} + +.link-opacity-50 { + --tblr-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --tblr-link-opacity: 0.5; +} + +.link-opacity-75 { + --tblr-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --tblr-link-opacity: 0.75; +} + +.link-opacity-100 { + --tblr-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --tblr-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 { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-success { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-info { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-warning { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-danger { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-light { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dark { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-muted { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-blue { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-azure { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-indigo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-purple { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pink { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-red { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-orange { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-yellow { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-lime { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-green { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-teal { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-cyan { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-facebook { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-twitter { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-linkedin { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-google { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-youtube { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vimeo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dribbble { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-github { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-instagram { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pinterest { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vk { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-rss { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-flickr { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-bitbucket { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-tabler { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --tblr-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --tblr-link-underline-opacity: 1; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-black { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-black-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-body-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-transparent { + --tblr-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body-tertiary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tertiary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-opacity-10 { + --tblr-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --tblr-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --tblr-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --tblr-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --tblr-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--tblr-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--tblr-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--tblr-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--tblr-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--tblr-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--tblr-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--tblr-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--tblr-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--tblr-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; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-top { + border-top-right-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-0 { + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-top-1 { + border-top-right-radius: var(--tblr-border-radius-sm) !important; + border-top-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-right-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-3 { + border-top-right-radius: var(--tblr-border-radius-lg) !important; + border-top-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-right-radius: var(--tblr-border-radius-xl) !important; + border-top-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-right-radius: var(--tblr-border-radius-xxl) !important; + border-top-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-right-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-top-pill { + border-top-right-radius: var(--tblr-border-radius-pill) !important; + border-top-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-end { + border-top-left-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-end-1 { + border-top-left-radius: var(--tblr-border-radius-sm) !important; + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-left-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-3 { + border-top-left-radius: var(--tblr-border-radius-lg) !important; + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-left-radius: var(--tblr-border-radius-xl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-left-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-left-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-end-pill { + border-top-left-radius: var(--tblr-border-radius-pill) !important; + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-left-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-right-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; + border-top-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; + border-top-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; + border-top-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; + border-top-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-right-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; + border-top-right-radius: var(--tblr-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; +} + +.object-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-scale-down { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.cursor-auto { + cursor: auto !important; +} + +.cursor-pointer { + cursor: pointer !important; +} + +.cursor-move { + cursor: move !important; +} + +.cursor-not-allowed { + cursor: not-allowed !important; +} + +.cursor-zoom-in { + cursor: zoom-in !important; +} + +.cursor-zoom-out { + cursor: zoom-out !important; +} + +.cursor-default { + cursor: default !important; +} + +.cursor-none { + cursor: none !important; +} + +.cursor-help { + cursor: help !important; +} + +.cursor-progress { + cursor: progress !important; +} + +.cursor-wait { + cursor: wait !important; +} + +.cursor-text { + cursor: text !important; +} + +.cursor-v-text { + cursor: vertical-text !important; +} + +.cursor-grab { + cursor: -webkit-grab !important; + cursor: grab !important; +} + +.cursor-grabbing { + cursor: -webkit-grabbing !important; + cursor: grabbing !important; +} + +.border-x { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-0 { + border-right: 0 !important; + border-left: 0 !important; +} + +.border-y { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; +} + +.columns-2 { + -moz-columns: 2 !important; + columns: 2 !important; +} + +.columns-3 { + -moz-columns: 3 !important; + columns: 3 !important; +} + +.columns-4 { + -moz-columns: 4 !important; + columns: 4 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: right !important; + } + .float-sm-end { + float: left !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: 2rem !important; + } + .m-sm-6 { + margin: 3rem !important; + } + .m-sm-7 { + margin: 5rem !important; + } + .m-sm-8 { + margin: 8rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-sm-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-sm-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-sm-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-sm-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-sm-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-sm-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-sm-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-sm-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-sm-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-sm-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-sm-6 { + margin-top: 3rem !important; + } + .mt-sm-7 { + margin-top: 5rem !important; + } + .mt-sm-8 { + margin-top: 8rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-left: 0 !important; + } + .me-sm-1 { + margin-left: 0.25rem !important; + } + .me-sm-2 { + margin-left: 0.5rem !important; + } + .me-sm-3 { + margin-left: 1rem !important; + } + .me-sm-4 { + margin-left: 1.5rem !important; + } + .me-sm-5 { + margin-left: 2rem !important; + } + .me-sm-6 { + margin-left: 3rem !important; + } + .me-sm-7 { + margin-left: 5rem !important; + } + .me-sm-8 { + margin-left: 8rem !important; + } + .me-sm-auto { + margin-left: 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: 2rem !important; + } + .mb-sm-6 { + margin-bottom: 3rem !important; + } + .mb-sm-7 { + margin-bottom: 5rem !important; + } + .mb-sm-8 { + margin-bottom: 8rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-right: 0 !important; + } + .ms-sm-1 { + margin-right: 0.25rem !important; + } + .ms-sm-2 { + margin-right: 0.5rem !important; + } + .ms-sm-3 { + margin-right: 1rem !important; + } + .ms-sm-4 { + margin-right: 1.5rem !important; + } + .ms-sm-5 { + margin-right: 2rem !important; + } + .ms-sm-6 { + margin-right: 3rem !important; + } + .ms-sm-7 { + margin-right: 5rem !important; + } + .ms-sm-8 { + margin-right: 8rem !important; + } + .ms-sm-auto { + margin-right: 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: 2rem !important; + } + .p-sm-6 { + padding: 3rem !important; + } + .p-sm-7 { + padding: 5rem !important; + } + .p-sm-8 { + padding: 8rem !important; + } + .px-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-sm-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-sm-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-sm-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-sm-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-sm-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-sm-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-sm-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-sm-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-sm-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-sm-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-sm-6 { + padding-top: 3rem !important; + } + .pt-sm-7 { + padding-top: 5rem !important; + } + .pt-sm-8 { + padding-top: 8rem !important; + } + .pe-sm-0 { + padding-left: 0 !important; + } + .pe-sm-1 { + padding-left: 0.25rem !important; + } + .pe-sm-2 { + padding-left: 0.5rem !important; + } + .pe-sm-3 { + padding-left: 1rem !important; + } + .pe-sm-4 { + padding-left: 1.5rem !important; + } + .pe-sm-5 { + padding-left: 2rem !important; + } + .pe-sm-6 { + padding-left: 3rem !important; + } + .pe-sm-7 { + padding-left: 5rem !important; + } + .pe-sm-8 { + padding-left: 8rem !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: 2rem !important; + } + .pb-sm-6 { + padding-bottom: 3rem !important; + } + .pb-sm-7 { + padding-bottom: 5rem !important; + } + .pb-sm-8 { + padding-bottom: 8rem !important; + } + .ps-sm-0 { + padding-right: 0 !important; + } + .ps-sm-1 { + padding-right: 0.25rem !important; + } + .ps-sm-2 { + padding-right: 0.5rem !important; + } + .ps-sm-3 { + padding-right: 1rem !important; + } + .ps-sm-4 { + padding-right: 1.5rem !important; + } + .ps-sm-5 { + padding-right: 2rem !important; + } + .ps-sm-6 { + padding-right: 3rem !important; + } + .ps-sm-7 { + padding-right: 5rem !important; + } + .ps-sm-8 { + padding-right: 8rem !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: 2rem !important; + } + .gap-sm-6 { + gap: 3rem !important; + } + .gap-sm-7 { + gap: 5rem !important; + } + .gap-sm-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-sm-6 { + row-gap: 3rem !important; + } + .row-gap-sm-7 { + row-gap: 5rem !important; + } + .row-gap-sm-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-sm-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-sm-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-sm-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-sm-start { + text-align: right !important; + } + .text-sm-end { + text-align: left !important; + } + .text-sm-center { + text-align: center !important; + } + .columns-sm-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-sm-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-sm-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: right !important; + } + .float-md-end { + float: left !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: 2rem !important; + } + .m-md-6 { + margin: 3rem !important; + } + .m-md-7 { + margin: 5rem !important; + } + .m-md-8 { + margin: 8rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-md-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-md-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-md-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-md-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-md-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-md-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-md-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-md-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-md-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-md-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-md-6 { + margin-top: 3rem !important; + } + .mt-md-7 { + margin-top: 5rem !important; + } + .mt-md-8 { + margin-top: 8rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-left: 0 !important; + } + .me-md-1 { + margin-left: 0.25rem !important; + } + .me-md-2 { + margin-left: 0.5rem !important; + } + .me-md-3 { + margin-left: 1rem !important; + } + .me-md-4 { + margin-left: 1.5rem !important; + } + .me-md-5 { + margin-left: 2rem !important; + } + .me-md-6 { + margin-left: 3rem !important; + } + .me-md-7 { + margin-left: 5rem !important; + } + .me-md-8 { + margin-left: 8rem !important; + } + .me-md-auto { + margin-left: 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: 2rem !important; + } + .mb-md-6 { + margin-bottom: 3rem !important; + } + .mb-md-7 { + margin-bottom: 5rem !important; + } + .mb-md-8 { + margin-bottom: 8rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-right: 0 !important; + } + .ms-md-1 { + margin-right: 0.25rem !important; + } + .ms-md-2 { + margin-right: 0.5rem !important; + } + .ms-md-3 { + margin-right: 1rem !important; + } + .ms-md-4 { + margin-right: 1.5rem !important; + } + .ms-md-5 { + margin-right: 2rem !important; + } + .ms-md-6 { + margin-right: 3rem !important; + } + .ms-md-7 { + margin-right: 5rem !important; + } + .ms-md-8 { + margin-right: 8rem !important; + } + .ms-md-auto { + margin-right: 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: 2rem !important; + } + .p-md-6 { + padding: 3rem !important; + } + .p-md-7 { + padding: 5rem !important; + } + .p-md-8 { + padding: 8rem !important; + } + .px-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-md-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-md-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-md-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-md-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-md-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-md-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-md-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-md-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-md-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-md-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-md-6 { + padding-top: 3rem !important; + } + .pt-md-7 { + padding-top: 5rem !important; + } + .pt-md-8 { + padding-top: 8rem !important; + } + .pe-md-0 { + padding-left: 0 !important; + } + .pe-md-1 { + padding-left: 0.25rem !important; + } + .pe-md-2 { + padding-left: 0.5rem !important; + } + .pe-md-3 { + padding-left: 1rem !important; + } + .pe-md-4 { + padding-left: 1.5rem !important; + } + .pe-md-5 { + padding-left: 2rem !important; + } + .pe-md-6 { + padding-left: 3rem !important; + } + .pe-md-7 { + padding-left: 5rem !important; + } + .pe-md-8 { + padding-left: 8rem !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: 2rem !important; + } + .pb-md-6 { + padding-bottom: 3rem !important; + } + .pb-md-7 { + padding-bottom: 5rem !important; + } + .pb-md-8 { + padding-bottom: 8rem !important; + } + .ps-md-0 { + padding-right: 0 !important; + } + .ps-md-1 { + padding-right: 0.25rem !important; + } + .ps-md-2 { + padding-right: 0.5rem !important; + } + .ps-md-3 { + padding-right: 1rem !important; + } + .ps-md-4 { + padding-right: 1.5rem !important; + } + .ps-md-5 { + padding-right: 2rem !important; + } + .ps-md-6 { + padding-right: 3rem !important; + } + .ps-md-7 { + padding-right: 5rem !important; + } + .ps-md-8 { + padding-right: 8rem !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: 2rem !important; + } + .gap-md-6 { + gap: 3rem !important; + } + .gap-md-7 { + gap: 5rem !important; + } + .gap-md-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-md-6 { + row-gap: 3rem !important; + } + .row-gap-md-7 { + row-gap: 5rem !important; + } + .row-gap-md-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-md-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-md-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-md-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-md-start { + text-align: right !important; + } + .text-md-end { + text-align: left !important; + } + .text-md-center { + text-align: center !important; + } + .columns-md-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-md-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-md-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: right !important; + } + .float-lg-end { + float: left !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: 2rem !important; + } + .m-lg-6 { + margin: 3rem !important; + } + .m-lg-7 { + margin: 5rem !important; + } + .m-lg-8 { + margin: 8rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-lg-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-lg-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-lg-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-lg-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-lg-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-lg-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-lg-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-lg-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-lg-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-lg-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-lg-6 { + margin-top: 3rem !important; + } + .mt-lg-7 { + margin-top: 5rem !important; + } + .mt-lg-8 { + margin-top: 8rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-left: 0 !important; + } + .me-lg-1 { + margin-left: 0.25rem !important; + } + .me-lg-2 { + margin-left: 0.5rem !important; + } + .me-lg-3 { + margin-left: 1rem !important; + } + .me-lg-4 { + margin-left: 1.5rem !important; + } + .me-lg-5 { + margin-left: 2rem !important; + } + .me-lg-6 { + margin-left: 3rem !important; + } + .me-lg-7 { + margin-left: 5rem !important; + } + .me-lg-8 { + margin-left: 8rem !important; + } + .me-lg-auto { + margin-left: 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: 2rem !important; + } + .mb-lg-6 { + margin-bottom: 3rem !important; + } + .mb-lg-7 { + margin-bottom: 5rem !important; + } + .mb-lg-8 { + margin-bottom: 8rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-right: 0 !important; + } + .ms-lg-1 { + margin-right: 0.25rem !important; + } + .ms-lg-2 { + margin-right: 0.5rem !important; + } + .ms-lg-3 { + margin-right: 1rem !important; + } + .ms-lg-4 { + margin-right: 1.5rem !important; + } + .ms-lg-5 { + margin-right: 2rem !important; + } + .ms-lg-6 { + margin-right: 3rem !important; + } + .ms-lg-7 { + margin-right: 5rem !important; + } + .ms-lg-8 { + margin-right: 8rem !important; + } + .ms-lg-auto { + margin-right: 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: 2rem !important; + } + .p-lg-6 { + padding: 3rem !important; + } + .p-lg-7 { + padding: 5rem !important; + } + .p-lg-8 { + padding: 8rem !important; + } + .px-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-lg-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-lg-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-lg-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-lg-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-lg-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-lg-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-lg-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-lg-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-lg-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-lg-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-lg-6 { + padding-top: 3rem !important; + } + .pt-lg-7 { + padding-top: 5rem !important; + } + .pt-lg-8 { + padding-top: 8rem !important; + } + .pe-lg-0 { + padding-left: 0 !important; + } + .pe-lg-1 { + padding-left: 0.25rem !important; + } + .pe-lg-2 { + padding-left: 0.5rem !important; + } + .pe-lg-3 { + padding-left: 1rem !important; + } + .pe-lg-4 { + padding-left: 1.5rem !important; + } + .pe-lg-5 { + padding-left: 2rem !important; + } + .pe-lg-6 { + padding-left: 3rem !important; + } + .pe-lg-7 { + padding-left: 5rem !important; + } + .pe-lg-8 { + padding-left: 8rem !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: 2rem !important; + } + .pb-lg-6 { + padding-bottom: 3rem !important; + } + .pb-lg-7 { + padding-bottom: 5rem !important; + } + .pb-lg-8 { + padding-bottom: 8rem !important; + } + .ps-lg-0 { + padding-right: 0 !important; + } + .ps-lg-1 { + padding-right: 0.25rem !important; + } + .ps-lg-2 { + padding-right: 0.5rem !important; + } + .ps-lg-3 { + padding-right: 1rem !important; + } + .ps-lg-4 { + padding-right: 1.5rem !important; + } + .ps-lg-5 { + padding-right: 2rem !important; + } + .ps-lg-6 { + padding-right: 3rem !important; + } + .ps-lg-7 { + padding-right: 5rem !important; + } + .ps-lg-8 { + padding-right: 8rem !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: 2rem !important; + } + .gap-lg-6 { + gap: 3rem !important; + } + .gap-lg-7 { + gap: 5rem !important; + } + .gap-lg-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-lg-6 { + row-gap: 3rem !important; + } + .row-gap-lg-7 { + row-gap: 5rem !important; + } + .row-gap-lg-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-lg-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-lg-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-lg-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-lg-start { + text-align: right !important; + } + .text-lg-end { + text-align: left !important; + } + .text-lg-center { + text-align: center !important; + } + .columns-lg-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-lg-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-lg-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: right !important; + } + .float-xl-end { + float: left !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: 2rem !important; + } + .m-xl-6 { + margin: 3rem !important; + } + .m-xl-7 { + margin: 5rem !important; + } + .m-xl-8 { + margin: 8rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xl-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-xl-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xl-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-xl-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-xl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-xl-6 { + margin-top: 3rem !important; + } + .mt-xl-7 { + margin-top: 5rem !important; + } + .mt-xl-8 { + margin-top: 8rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-left: 0 !important; + } + .me-xl-1 { + margin-left: 0.25rem !important; + } + .me-xl-2 { + margin-left: 0.5rem !important; + } + .me-xl-3 { + margin-left: 1rem !important; + } + .me-xl-4 { + margin-left: 1.5rem !important; + } + .me-xl-5 { + margin-left: 2rem !important; + } + .me-xl-6 { + margin-left: 3rem !important; + } + .me-xl-7 { + margin-left: 5rem !important; + } + .me-xl-8 { + margin-left: 8rem !important; + } + .me-xl-auto { + margin-left: 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: 2rem !important; + } + .mb-xl-6 { + margin-bottom: 3rem !important; + } + .mb-xl-7 { + margin-bottom: 5rem !important; + } + .mb-xl-8 { + margin-bottom: 8rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-right: 0 !important; + } + .ms-xl-1 { + margin-right: 0.25rem !important; + } + .ms-xl-2 { + margin-right: 0.5rem !important; + } + .ms-xl-3 { + margin-right: 1rem !important; + } + .ms-xl-4 { + margin-right: 1.5rem !important; + } + .ms-xl-5 { + margin-right: 2rem !important; + } + .ms-xl-6 { + margin-right: 3rem !important; + } + .ms-xl-7 { + margin-right: 5rem !important; + } + .ms-xl-8 { + margin-right: 8rem !important; + } + .ms-xl-auto { + margin-right: 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: 2rem !important; + } + .p-xl-6 { + padding: 3rem !important; + } + .p-xl-7 { + padding: 5rem !important; + } + .p-xl-8 { + padding: 8rem !important; + } + .px-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xl-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-xl-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-xl-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-xl-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-xl-6 { + padding-top: 3rem !important; + } + .pt-xl-7 { + padding-top: 5rem !important; + } + .pt-xl-8 { + padding-top: 8rem !important; + } + .pe-xl-0 { + padding-left: 0 !important; + } + .pe-xl-1 { + padding-left: 0.25rem !important; + } + .pe-xl-2 { + padding-left: 0.5rem !important; + } + .pe-xl-3 { + padding-left: 1rem !important; + } + .pe-xl-4 { + padding-left: 1.5rem !important; + } + .pe-xl-5 { + padding-left: 2rem !important; + } + .pe-xl-6 { + padding-left: 3rem !important; + } + .pe-xl-7 { + padding-left: 5rem !important; + } + .pe-xl-8 { + padding-left: 8rem !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: 2rem !important; + } + .pb-xl-6 { + padding-bottom: 3rem !important; + } + .pb-xl-7 { + padding-bottom: 5rem !important; + } + .pb-xl-8 { + padding-bottom: 8rem !important; + } + .ps-xl-0 { + padding-right: 0 !important; + } + .ps-xl-1 { + padding-right: 0.25rem !important; + } + .ps-xl-2 { + padding-right: 0.5rem !important; + } + .ps-xl-3 { + padding-right: 1rem !important; + } + .ps-xl-4 { + padding-right: 1.5rem !important; + } + .ps-xl-5 { + padding-right: 2rem !important; + } + .ps-xl-6 { + padding-right: 3rem !important; + } + .ps-xl-7 { + padding-right: 5rem !important; + } + .ps-xl-8 { + padding-right: 8rem !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: 2rem !important; + } + .gap-xl-6 { + gap: 3rem !important; + } + .gap-xl-7 { + gap: 5rem !important; + } + .gap-xl-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-xl-6 { + row-gap: 3rem !important; + } + .row-gap-xl-7 { + row-gap: 5rem !important; + } + .row-gap-xl-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xl-start { + text-align: right !important; + } + .text-xl-end { + text-align: left !important; + } + .text-xl-center { + text-align: center !important; + } + .columns-xl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: right !important; + } + .float-xxl-end { + float: left !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: 2rem !important; + } + .m-xxl-6 { + margin: 3rem !important; + } + .m-xxl-7 { + margin: 5rem !important; + } + .m-xxl-8 { + margin: 8rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xxl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xxl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xxl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xxl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xxl-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-xxl-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xxl-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-xxl-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-xxl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 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: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xxl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !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: 2rem !important; + } + .mt-xxl-6 { + margin-top: 3rem !important; + } + .mt-xxl-7 { + margin-top: 5rem !important; + } + .mt-xxl-8 { + margin-top: 8rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-left: 0 !important; + } + .me-xxl-1 { + margin-left: 0.25rem !important; + } + .me-xxl-2 { + margin-left: 0.5rem !important; + } + .me-xxl-3 { + margin-left: 1rem !important; + } + .me-xxl-4 { + margin-left: 1.5rem !important; + } + .me-xxl-5 { + margin-left: 2rem !important; + } + .me-xxl-6 { + margin-left: 3rem !important; + } + .me-xxl-7 { + margin-left: 5rem !important; + } + .me-xxl-8 { + margin-left: 8rem !important; + } + .me-xxl-auto { + margin-left: 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: 2rem !important; + } + .mb-xxl-6 { + margin-bottom: 3rem !important; + } + .mb-xxl-7 { + margin-bottom: 5rem !important; + } + .mb-xxl-8 { + margin-bottom: 8rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-right: 0 !important; + } + .ms-xxl-1 { + margin-right: 0.25rem !important; + } + .ms-xxl-2 { + margin-right: 0.5rem !important; + } + .ms-xxl-3 { + margin-right: 1rem !important; + } + .ms-xxl-4 { + margin-right: 1.5rem !important; + } + .ms-xxl-5 { + margin-right: 2rem !important; + } + .ms-xxl-6 { + margin-right: 3rem !important; + } + .ms-xxl-7 { + margin-right: 5rem !important; + } + .ms-xxl-8 { + margin-right: 8rem !important; + } + .ms-xxl-auto { + margin-right: 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: 2rem !important; + } + .p-xxl-6 { + padding: 3rem !important; + } + .p-xxl-7 { + padding: 5rem !important; + } + .p-xxl-8 { + padding: 8rem !important; + } + .px-xxl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xxl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xxl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xxl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xxl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xxl-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-xxl-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-xxl-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-xxl-8 { + padding-left: 8rem !important; + padding-right: 8rem !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: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xxl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xxl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !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: 2rem !important; + } + .pt-xxl-6 { + padding-top: 3rem !important; + } + .pt-xxl-7 { + padding-top: 5rem !important; + } + .pt-xxl-8 { + padding-top: 8rem !important; + } + .pe-xxl-0 { + padding-left: 0 !important; + } + .pe-xxl-1 { + padding-left: 0.25rem !important; + } + .pe-xxl-2 { + padding-left: 0.5rem !important; + } + .pe-xxl-3 { + padding-left: 1rem !important; + } + .pe-xxl-4 { + padding-left: 1.5rem !important; + } + .pe-xxl-5 { + padding-left: 2rem !important; + } + .pe-xxl-6 { + padding-left: 3rem !important; + } + .pe-xxl-7 { + padding-left: 5rem !important; + } + .pe-xxl-8 { + padding-left: 8rem !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: 2rem !important; + } + .pb-xxl-6 { + padding-bottom: 3rem !important; + } + .pb-xxl-7 { + padding-bottom: 5rem !important; + } + .pb-xxl-8 { + padding-bottom: 8rem !important; + } + .ps-xxl-0 { + padding-right: 0 !important; + } + .ps-xxl-1 { + padding-right: 0.25rem !important; + } + .ps-xxl-2 { + padding-right: 0.5rem !important; + } + .ps-xxl-3 { + padding-right: 1rem !important; + } + .ps-xxl-4 { + padding-right: 1.5rem !important; + } + .ps-xxl-5 { + padding-right: 2rem !important; + } + .ps-xxl-6 { + padding-right: 3rem !important; + } + .ps-xxl-7 { + padding-right: 5rem !important; + } + .ps-xxl-8 { + padding-right: 8rem !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: 2rem !important; + } + .gap-xxl-6 { + gap: 3rem !important; + } + .gap-xxl-7 { + gap: 5rem !important; + } + .gap-xxl-8 { + gap: 8rem !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: 2rem !important; + } + .row-gap-xxl-6 { + row-gap: 3rem !important; + } + .row-gap-xxl-7 { + row-gap: 5rem !important; + } + .row-gap-xxl-8 { + row-gap: 8rem !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: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xxl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xxl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xxl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xxl-start { + text-align: right !important; + } + .text-xxl-end { + text-align: left !important; + } + .text-xxl-center { + text-align: center !important; + } + .columns-xxl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xxl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xxl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +:root, +:host { + font-size: 16px; + height: 100%; +} + +:root, +:host, +[data-bs-theme=light] { + --tblr-primary: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-primary-fg: var(--tblr-light); + --tblr-primary-darken: #004c95; + --tblr-primary-lt: #e6eef6; + --tblr-primary-lt-rgb: 230, 238, 246; + --tblr-secondary: #667382; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-secondary-fg: var(--tblr-light); + --tblr-secondary-darken: #5c6875; + --tblr-secondary-lt: #f0f1f3; + --tblr-secondary-lt-rgb: 240, 241, 243; + --tblr-success: #2fb344; + --tblr-success-rgb: 47, 179, 68; + --tblr-success-fg: var(--tblr-light); + --tblr-success-darken: #2aa13d; + --tblr-success-lt: #eaf7ec; + --tblr-success-lt-rgb: 234, 247, 236; + --tblr-info: #4299e1; + --tblr-info-rgb: 66, 153, 225; + --tblr-info-fg: var(--tblr-light); + --tblr-info-darken: #3b8acb; + --tblr-info-lt: #ecf5fc; + --tblr-info-lt-rgb: 236, 245, 252; + --tblr-warning: #f76707; + --tblr-warning-rgb: 247, 103, 7; + --tblr-warning-fg: var(--tblr-light); + --tblr-warning-darken: #de5d06; + --tblr-warning-lt: #fef0e6; + --tblr-warning-lt-rgb: 254, 240, 230; + --tblr-danger: #d63939; + --tblr-danger-rgb: 214, 57, 57; + --tblr-danger-fg: var(--tblr-light); + --tblr-danger-darken: #c13333; + --tblr-danger-lt: #fbebeb; + --tblr-danger-lt-rgb: 251, 235, 235; + --tblr-light: #fcfdfe; + --tblr-light-rgb: 252, 253, 254; + --tblr-light-fg: var(--tblr-dark); + --tblr-light-darken: #e3e4e5; + --tblr-light-lt: white; + --tblr-light-lt-rgb: 255, 255, 255; + --tblr-dark: #182433; + --tblr-dark-rgb: 24, 36, 51; + --tblr-dark-fg: var(--tblr-light); + --tblr-dark-darken: #16202e; + --tblr-dark-lt: #e8e9eb; + --tblr-dark-lt-rgb: 232, 233, 235; + --tblr-muted: #667382; + --tblr-muted-rgb: 102, 115, 130; + --tblr-muted-fg: var(--tblr-light); + --tblr-muted-darken: #5c6875; + --tblr-muted-lt: #f0f1f3; + --tblr-muted-lt-rgb: 240, 241, 243; + --tblr-blue: #0054a6; + --tblr-blue-rgb: 0, 84, 166; + --tblr-blue-fg: var(--tblr-light); + --tblr-blue-darken: #004c95; + --tblr-blue-lt: #e6eef6; + --tblr-blue-lt-rgb: 230, 238, 246; + --tblr-azure: #4299e1; + --tblr-azure-rgb: 66, 153, 225; + --tblr-azure-fg: var(--tblr-light); + --tblr-azure-darken: #3b8acb; + --tblr-azure-lt: #ecf5fc; + --tblr-azure-lt-rgb: 236, 245, 252; + --tblr-indigo: #4263eb; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-indigo-fg: var(--tblr-light); + --tblr-indigo-darken: #3b59d4; + --tblr-indigo-lt: #eceffd; + --tblr-indigo-lt-rgb: 236, 239, 253; + --tblr-purple: #ae3ec9; + --tblr-purple-rgb: 174, 62, 201; + --tblr-purple-fg: var(--tblr-light); + --tblr-purple-darken: #9d38b5; + --tblr-purple-lt: #f7ecfa; + --tblr-purple-lt-rgb: 247, 236, 250; + --tblr-pink: #d6336c; + --tblr-pink-rgb: 214, 51, 108; + --tblr-pink-fg: var(--tblr-light); + --tblr-pink-darken: #c12e61; + --tblr-pink-lt: #fbebf0; + --tblr-pink-lt-rgb: 251, 235, 240; + --tblr-red: #d63939; + --tblr-red-rgb: 214, 57, 57; + --tblr-red-fg: var(--tblr-light); + --tblr-red-darken: #c13333; + --tblr-red-lt: #fbebeb; + --tblr-red-lt-rgb: 251, 235, 235; + --tblr-orange: #f76707; + --tblr-orange-rgb: 247, 103, 7; + --tblr-orange-fg: var(--tblr-light); + --tblr-orange-darken: #de5d06; + --tblr-orange-lt: #fef0e6; + --tblr-orange-lt-rgb: 254, 240, 230; + --tblr-yellow: #f59f00; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-yellow-fg: var(--tblr-light); + --tblr-yellow-darken: #dd8f00; + --tblr-yellow-lt: #fef5e6; + --tblr-yellow-lt-rgb: 254, 245, 230; + --tblr-lime: #74b816; + --tblr-lime-rgb: 116, 184, 22; + --tblr-lime-fg: var(--tblr-light); + --tblr-lime-darken: #68a614; + --tblr-lime-lt: #f1f8e8; + --tblr-lime-lt-rgb: 241, 248, 232; + --tblr-green: #2fb344; + --tblr-green-rgb: 47, 179, 68; + --tblr-green-fg: var(--tblr-light); + --tblr-green-darken: #2aa13d; + --tblr-green-lt: #eaf7ec; + --tblr-green-lt-rgb: 234, 247, 236; + --tblr-teal: #0ca678; + --tblr-teal-rgb: 12, 166, 120; + --tblr-teal-fg: var(--tblr-light); + --tblr-teal-darken: #0b956c; + --tblr-teal-lt: #e7f6f2; + --tblr-teal-lt-rgb: 231, 246, 242; + --tblr-cyan: #17a2b8; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-cyan-fg: var(--tblr-light); + --tblr-cyan-darken: #1592a6; + --tblr-cyan-lt: #e8f6f8; + --tblr-cyan-lt-rgb: 232, 246, 248; + --tblr-facebook: #1877f2; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-facebook-fg: var(--tblr-light); + --tblr-facebook-darken: #166bda; + --tblr-facebook-lt: #e8f1fe; + --tblr-facebook-lt-rgb: 232, 241, 254; + --tblr-twitter: #1da1f2; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-twitter-fg: var(--tblr-light); + --tblr-twitter-darken: #1a91da; + --tblr-twitter-lt: #e8f6fe; + --tblr-twitter-lt-rgb: 232, 246, 254; + --tblr-linkedin: #0a66c2; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-linkedin-fg: var(--tblr-light); + --tblr-linkedin-darken: #095caf; + --tblr-linkedin-lt: #e7f0f9; + --tblr-linkedin-lt-rgb: 231, 240, 249; + --tblr-google: #dc4e41; + --tblr-google-rgb: 220, 78, 65; + --tblr-google-fg: var(--tblr-light); + --tblr-google-darken: #c6463b; + --tblr-google-lt: #fcedec; + --tblr-google-lt-rgb: 252, 237, 236; + --tblr-youtube: #ff0000; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-youtube-fg: var(--tblr-light); + --tblr-youtube-darken: #e60000; + --tblr-youtube-lt: #ffe6e6; + --tblr-youtube-lt-rgb: 255, 230, 230; + --tblr-vimeo: #1ab7ea; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-vimeo-fg: var(--tblr-light); + --tblr-vimeo-darken: #17a5d3; + --tblr-vimeo-lt: #e8f8fd; + --tblr-vimeo-lt-rgb: 232, 248, 253; + --tblr-dribbble: #ea4c89; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-dribbble-fg: var(--tblr-light); + --tblr-dribbble-darken: #d3447b; + --tblr-dribbble-lt: #fdedf3; + --tblr-dribbble-lt-rgb: 253, 237, 243; + --tblr-github: #181717; + --tblr-github-rgb: 24, 23, 23; + --tblr-github-fg: var(--tblr-light); + --tblr-github-darken: #161515; + --tblr-github-lt: #e8e8e8; + --tblr-github-lt-rgb: 232, 232, 232; + --tblr-instagram: #e4405f; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-instagram-fg: var(--tblr-light); + --tblr-instagram-darken: #cd3a56; + --tblr-instagram-lt: #fcecef; + --tblr-instagram-lt-rgb: 252, 236, 239; + --tblr-pinterest: #bd081c; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-pinterest-fg: var(--tblr-light); + --tblr-pinterest-darken: #aa0719; + --tblr-pinterest-lt: #f8e6e8; + --tblr-pinterest-lt-rgb: 248, 230, 232; + --tblr-vk: #6383a8; + --tblr-vk-rgb: 99, 131, 168; + --tblr-vk-fg: var(--tblr-light); + --tblr-vk-darken: #597697; + --tblr-vk-lt: #eff3f6; + --tblr-vk-lt-rgb: 239, 243, 246; + --tblr-rss: #ffa500; + --tblr-rss-rgb: 255, 165, 0; + --tblr-rss-fg: var(--tblr-light); + --tblr-rss-darken: #e69500; + --tblr-rss-lt: #fff6e6; + --tblr-rss-lt-rgb: 255, 246, 230; + --tblr-flickr: #0063dc; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-flickr-fg: var(--tblr-light); + --tblr-flickr-darken: #0059c6; + --tblr-flickr-lt: #e6effc; + --tblr-flickr-lt-rgb: 230, 239, 252; + --tblr-bitbucket: #0052cc; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-bitbucket-fg: var(--tblr-light); + --tblr-bitbucket-darken: #004ab8; + --tblr-bitbucket-lt: #e6eefa; + --tblr-bitbucket-lt-rgb: 230, 238, 250; + --tblr-tabler: #0054a6; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-tabler-fg: var(--tblr-light); + --tblr-tabler-darken: #004c95; + --tblr-tabler-lt: #e6eef6; + --tblr-tabler-lt-rgb: 230, 238, 246; + --tblr-gray-50: #fcfdfe; + --tblr-gray-50-rgb: 252, 253, 254; + --tblr-gray-50-fg: var(--tblr-dark); + --tblr-gray-50-darken: #e3e4e5; + --tblr-gray-50-lt: white; + --tblr-gray-50-lt-rgb: 255, 255, 255; + --tblr-gray-100: #f6f8fb; + --tblr-gray-100-rgb: 246, 248, 251; + --tblr-gray-100-fg: var(--tblr-dark); + --tblr-gray-100-darken: #dddfe2; + --tblr-gray-100-lt: #fefeff; + --tblr-gray-100-lt-rgb: 254, 254, 255; + --tblr-gray-200: #eef1f4; + --tblr-gray-200-rgb: 238, 241, 244; + --tblr-gray-200-fg: var(--tblr-dark); + --tblr-gray-200-darken: #d6d9dc; + --tblr-gray-200-lt: #fdfefe; + --tblr-gray-200-lt-rgb: 253, 254, 254; + --tblr-gray-300: #dadfe5; + --tblr-gray-300-rgb: 218, 223, 229; + --tblr-gray-300-fg: var(--tblr-dark); + --tblr-gray-300-darken: #c4c9ce; + --tblr-gray-300-lt: #fbfcfc; + --tblr-gray-300-lt-rgb: 251, 252, 252; + --tblr-gray-400: #bbc3cd; + --tblr-gray-400-rgb: 187, 195, 205; + --tblr-gray-400-fg: var(--tblr-light); + --tblr-gray-400-darken: #a8b0b9; + --tblr-gray-400-lt: #f8f9fa; + --tblr-gray-400-lt-rgb: 248, 249, 250; + --tblr-gray-500: #929dab; + --tblr-gray-500-rgb: 146, 157, 171; + --tblr-gray-500-fg: var(--tblr-light); + --tblr-gray-500-darken: #838d9a; + --tblr-gray-500-lt: #f4f5f7; + --tblr-gray-500-lt-rgb: 244, 245, 247; + --tblr-gray-600: #667382; + --tblr-gray-600-rgb: 102, 115, 130; + --tblr-gray-600-fg: var(--tblr-light); + --tblr-gray-600-darken: #5c6875; + --tblr-gray-600-lt: #f0f1f3; + --tblr-gray-600-lt-rgb: 240, 241, 243; + --tblr-gray-700: #3a4859; + --tblr-gray-700-rgb: 58, 72, 89; + --tblr-gray-700-fg: var(--tblr-light); + --tblr-gray-700-darken: #344150; + --tblr-gray-700-lt: #ebedee; + --tblr-gray-700-lt-rgb: 235, 237, 238; + --tblr-gray-800: #182433; + --tblr-gray-800-rgb: 24, 36, 51; + --tblr-gray-800-fg: var(--tblr-light); + --tblr-gray-800-darken: #16202e; + --tblr-gray-800-lt: #e8e9eb; + --tblr-gray-800-lt-rgb: 232, 233, 235; + --tblr-gray-900: #040a11; + --tblr-gray-900-rgb: 4, 10, 17; + --tblr-gray-900-fg: var(--tblr-light); + --tblr-gray-900-darken: #04090f; + --tblr-gray-900-lt: #e6e7e7; + --tblr-gray-900-lt-rgb: 230, 231, 231; + --tblr-spacer-0: 0; + --tblr-spacer-1: 0.25rem; + --tblr-spacer-2: 0.5rem; + --tblr-spacer-3: 1rem; + --tblr-spacer-4: 1.5rem; + --tblr-spacer-5: 2rem; + --tblr-spacer-6: 3rem; + --tblr-spacer-7: 5rem; + --tblr-spacer-8: 8rem; + --tblr-spacer: 1rem; + --tblr-bg-surface: var(--tblr-white); + --tblr-bg-surface-secondary: var(--tblr-gray-100); + --tblr-bg-surface-tertiary: var(--tblr-gray-50); + --tblr-bg-surface-dark: var(--tblr-dark); + --tblr-bg-forms: var(--tblr-bg-surface); + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-dark-color: #bbc3cd; + --tblr-border-dark-color-translucent: rgba(4, 32, 69, 0.27); + --tblr-border-active-color: #b6bcc3; + --tblr-icon-color: var(--tblr-gray-500); + --tblr-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-disabled-bg: var(--tblr-bg-surface-secondary); + --tblr-disabled-color: var(--tblr-gray-300); + --tblr-code-color: var(--tblr-gray-600); + --tblr-code-bg: var(--tblr-bg-surface-secondary); + --tblr-dark-mode-border-color: #1f2e41; + --tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-dark-mode-border-color-active: #2c415d; + --tblr-dark-mode-border-dark-color: #1f2e41; + --tblr-page-padding: var(--tblr-spacer-3); + --tblr-page-padding-y: var(--tblr-spacer-4); + --tblr-font-weight-light: 300; + --tblr-font-weight-normal: 400; + --tblr-font-weight-medium: 500; + --tblr-font-weight-bold: 600; + --tblr-font-weight-headings: var(--tblr-font-weight-bold); + --tblr-font-size-h1: 1.5rem; + --tblr-font-size-h2: 1.25rem; + --tblr-font-size-h3: 1rem; + --tblr-font-size-h4: 0.875rem; + --tblr-font-size-h5: 0.75rem; + --tblr-font-size-h6: 0.625rem; + --tblr-line-height-h1: 2rem; + --tblr-line-height-h2: 1.75rem; + --tblr-line-height-h3: 1.5rem; + --tblr-line-height-h4: 1.25rem; + --tblr-line-height-h5: 1rem; + --tblr-line-height-h6: 1rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent); + --tblr-box-shadow-transparent: 0 0 0 0 transparent; + --tblr-box-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06); + --tblr-box-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), 0.04); + --tblr-box-shadow-card-hover: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; + --tblr-box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1); +} +@media (max-width: 991.98px) { + :root, + :host, + [data-bs-theme=light] { + --tblr-page-padding: var(--tblr-spacer-2); + } +} + +@keyframes pulse { + from { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } + 50% { + transform: scale3d(1, 1, 1); + opacity: 1; + } + to { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } +} +@keyframes tada { + 0% { + transform: scale3d(1, 1, 1); + } + 10%, 5% { + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, 5deg); + } + 15%, 25%, 35%, 45% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg); + } + 20%, 30%, 40% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg); + } + 50% { + transform: scale3d(1, 1, 1); + } +} +@keyframes rotate-360 { + from { + transform: rotate(0deg); + } + to { + transform: rotate(-360deg); + } +} +@keyframes blink { + from { + opacity: 0; + } + 50% { + opacity: 1; + } + to { + opacity: 0; + } +} +body { + letter-spacing: 0; + touch-action: manipulation; + text-rendering: optimizeLegibility; + font-feature-settings: "liga" 0; + position: relative; + min-height: 100%; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media print { + body { + background: transparent; + } +} + +* { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} + +*::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + *::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} + +*::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} + +*::-webkit-scrollbar-track { + background: transparent; +} + +*:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} + +*::-webkit-scrollbar-corner { + background: transparent; +} + +.layout-fluid .container, +.layout-fluid [class^=container-], +.layout-fluid [class*=" container-"] { + max-width: 100%; +} + +.layout-boxed { + --tblr-theme-boxed-border-radius: 0; + --tblr-theme-boxed-width: 1320px; +} +@media (min-width: 768px) { + .layout-boxed { + background: #182433 linear-gradient(to left, rgba(255, 255, 255, 0.1), transparent) fixed; + padding: 1rem; + --tblr-theme-boxed-border-radius: 4px; + } +} +.layout-boxed .page { + margin: 0 auto; + max-width: var(--tblr-theme-boxed-width); + border-radius: var(--tblr-theme-boxed-border-radius); + color: var(--tblr-body-color); +} +@media (min-width: 768px) { + .layout-boxed .page { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-body-bg); + } +} +.layout-boxed .page > .navbar:first-child { + border-top-right-radius: var(--tblr-theme-boxed-border-radius); + border-top-left-radius: var(--tblr-theme-boxed-border-radius); +} + +/** +Navbar + */ +.navbar { + --tblr-navbar-bg: var(--tblr-bg-surface); + --tblr-navbar-border-width: var(--tblr-border-width); + --tblr-navbar-active-border-color: var(--tblr-primary); + --tblr-navbar-active-bg: rgba(0, 0, 0, 0.06); + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-border-color: var(--tblr-border-color); + align-items: stretch; + min-height: 3.5rem; + box-shadow: inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color); + background: var(--tblr-navbar-bg); + color: var(--tblr-navbar-color); +} +.navbar-collapse .navbar { + flex-grow: 1; +} +.navbar.collapsing { + min-height: 0; +} +.navbar .dropdown-menu { + position: absolute; + z-index: 1030; +} +.navbar .navbar-nav { + min-height: 3rem; +} +.navbar .navbar-nav .nav-link { + position: relative; + min-width: 2rem; + min-height: 2rem; + justify-content: center; + border-radius: var(--tblr-border-radius); +} +.navbar .navbar-nav .nav-link .badge { + position: absolute; + top: 0.375rem; + left: 0.375rem; + transform: translate(-50%, -50%); +} + +.navbar-nav { + margin: 0; + padding: 0; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 576px) { + .navbar-expand-sm .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-sm .nav-item.active { + position: relative; + } + .navbar-expand-sm .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-sm.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical ~ .navbar, + .navbar-expand-sm.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-sm.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-sm.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 767.98px) { + .navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-expand-md .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-md .nav-item.active { + position: relative; + } + .navbar-expand-md .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-md.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical ~ .navbar, + .navbar-expand-md.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-md.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-md.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 991.98px) { + .navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-expand-lg .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-lg .nav-item.active { + position: relative; + } + .navbar-expand-lg .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-lg.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical ~ .navbar, + .navbar-expand-lg.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-lg.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-lg.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 1199.98px) { + .navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xl .nav-item.active { + position: relative; + } + .navbar-expand-xl .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xl.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical ~ .navbar, + .navbar-expand-xl.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-xl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 1399.98px) { + .navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xxl .nav-item.active { + position: relative; + } + .navbar-expand-xxl .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xxl.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical ~ .navbar, + .navbar-expand-xxl.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-expand .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; +} +.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-right: auto; +} +.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; +} +.navbar-expand .navbar-collapse { + width: auto; + flex: 1 1 auto; +} +.navbar-expand .nav-item.active { + position: relative; +} +.navbar-expand .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; +} +.navbar-expand.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical ~ .navbar, +.navbar-expand.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; +} +.navbar-expand.navbar-vertical.navbar-right ~ .navbar, +.navbar-expand.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; +} + +/** +Navbar brand + */ +.navbar-brand { + display: inline-flex; + align-items: center; + font-weight: var(--tblr-font-weight-bold); + margin: 0; + line-height: 1; + gap: 0.5rem; +} + +.navbar-brand-image { + height: 2rem; + width: auto; +} + +/** +Navbar toggler + */ +.navbar-toggler { + border: 0; + width: 2rem; + height: 2rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.navbar-toggler-icon { + height: 2px; + width: 1.25em; + background: currentColor; + border-radius: 10px; + transition: top 0.2s 0.2s, bottom 0.2s 0.2s, transform 0.2s, opacity 0s 0.2s; + position: relative; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler-icon:before, .navbar-toggler-icon:after { + content: ""; + display: block; + height: inherit; + width: inherit; + border-radius: inherit; + background: inherit; + position: absolute; + right: 0; + transition: inherit; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon:before, .navbar-toggler-icon:after { + transition: none; + } +} +.navbar-toggler-icon:before { + top: -0.45em; +} +.navbar-toggler-icon:after { + bottom: -0.45em; +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transform: rotate(-45deg); + transition: top 0.3s, bottom 0.3s, transform 0.3s 0.3s, opacity 0s 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before { + top: 0; + transform: rotate(90deg); +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after { + bottom: 0; + opacity: 0; +} + +/** +Navbar transparent + */ +.navbar-transparent { + --tblr-navbar-border-color: transparent !important; + background: transparent !important; +} + +/** +Navbar nav + */ +.navbar-nav { + align-items: stretch; +} +.navbar-nav .nav-item { + display: flex; + flex-direction: column; + justify-content: center; +} + +/** +Navbar side + */ +.navbar-side { + margin: 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-around; +} + +/** +Navbar vertical + */ +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 576px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-sm { + transition: none; + } +} +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-sm .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-sm > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-sm ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-sm ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-sm.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 768px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-md { + transition: none; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-md .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-md .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-md .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-md > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-md ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-md ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-md.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 992px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-lg { + transition: none; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-lg .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-lg > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-lg ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-lg ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-lg.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1200px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xl { + transition: none; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xl ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xl ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-xl.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1400px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xxl { + transition: none; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xxl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xxl ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-xxl.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +.navbar-vertical.navbar-expand { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; +} +@media (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand { + transition: none; + } +} +.navbar-vertical.navbar-expand.navbar-right { + right: auto; + left: 0; +} +.navbar-vertical.navbar-expand .navbar-brand { + padding: 0.75rem 0; + justify-content: center; +} +.navbar-vertical.navbar-expand .navbar-collapse { + align-items: stretch; +} +.navbar-vertical.navbar-expand .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; +} +.navbar-vertical.navbar-expand .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.navbar-vertical.navbar-expand > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; +} +.navbar-vertical.navbar-expand ~ .page { + padding-right: 15rem; +} +.navbar-vertical.navbar-expand ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; +} +.navbar-vertical.navbar-expand.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; +} +.navbar-vertical.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-right: auto; +} +.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; +} + +.navbar-overlap:after { + content: ""; + height: 9rem; + position: absolute; + top: 100%; + right: 0; + left: 0; + background: inherit; + z-index: -1; + box-shadow: inherit; +} + +.page { + display: flex; + flex-direction: column; + position: relative; + min-height: 100%; +} + +.page-center .container { + margin-top: auto; + margin-bottom: auto; +} + +.page-wrapper { + flex: 1; + display: flex; + flex-direction: column; +} +@media print { + .page-wrapper { + margin: 0 !important; + } +} + +.page-wrapper-full .page-body:first-child { + margin: 0; + border-top: 0; +} + +.page-body { + margin-top: var(--tblr-page-padding-y); + margin-bottom: var(--tblr-page-padding-y); +} + +.page-body-card { + background: var(--tblr-bg-surface); + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + padding: var(--tblr-page-padding) 0; + margin-bottom: 0; + flex: 1; +} +.page-body ~ .page-body-card { + margin-top: 0; +} + +.page-cover { + background: no-repeat center/cover; + min-height: 9rem; +} +@media (min-width: 768px) { + .page-cover { + min-height: 12rem; + } +} +@media (min-width: 992px) { + .page-cover { + min-height: 15rem; + } +} + +.page-cover-overlay { + position: relative; +} +.page-cover-overlay:after { + content: ""; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + background-image: linear-gradient(-180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.page-header { + display: flex; + flex-wrap: wrap; + min-height: 2.25rem; + flex-direction: column; + justify-content: center; +} +.page-wrapper .page-header { + margin: var(--tblr-page-padding-y) 0 0; +} + +.page-header-border { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding: var(--tblr-page-padding-y) 0; + margin: 0 !important; + background-color: var(--tblr-bg-surface); +} + +.page-pretitle { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.page-title { + margin: 0; + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h4); + font-weight: var(--tblr-font-weight-headings); + color: inherit; + display: flex; + align-items: center; +} +.page-title svg { + width: 1.5rem; + height: 1.5rem; + margin-left: 0.25rem; +} + +.page-title-lg { + font-size: 1.5rem; + line-height: 2rem; +} + +.page-subtitle { + margin-top: 0.25rem; + color: var(--tblr-secondary); +} + +.page-cover { + --tblr-page-cover-blur: 20px; + --tblr-page-cover-padding: 1rem; + min-height: 6rem; + padding: var(--tblr-page-cover-padding) 0; + position: relative; + overflow: hidden; +} + +.page-cover-img { + position: absolute; + top: calc(-2 * var(--tblr-page-cover-blur, 0)); + right: calc(-2 * var(--tblr-page-cover-blur, 0)); + left: calc(-2 * var(--tblr-page-cover-blur, 0)); + bottom: calc(-2 * var(--tblr-page-cover-blur, 0)); + pointer-events: none; + filter: blur(var(--tblr-page-cover-blur)); + -o-object-fit: cover; + object-fit: cover; + background-size: cover; + background-position: center; + z-index: -1; +} + +.page-tabs { + margin-top: 0.5rem; + position: relative; +} + +.page-header-tabs .nav-bordered { + border: 0; +} +.page-header-tabs + .page-body-card { + margin-top: 0; +} + +.footer { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background-color: #ffffff; + padding: 2rem 0; + color: var(--tblr-secondary); + margin-top: auto; +} + +.footer-transparent { + background-color: transparent; + border-top: 0; +} + +body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light { + display: none !important; +} +body.theme-dark .hide-theme-dark, body[data-bs-theme=dark] .hide-theme-dark { + display: none !important; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-muted: #3a4859; + --tblr-body-bg: #151f2c; + --tblr-body-bg-rgb: 21, 31, 44; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-bg-forms: #151f2c; + --tblr-bg-surface: #182433; + --tblr-bg-surface-dark: #151f2c; + --tblr-bg-surface-secondary: #1b293a; + --tblr-bg-surface-tertiary: #151f2c; + --tblr-link-color: #0069cf; + --tblr-link-hover-color: #0054a6; + --tblr-active-bg: #1b293a; + --tblr-disabled-color: var(--tblr-gray-700); + --tblr-border-color: var(--tblr-dark-mode-border-color); + --tblr-border-color-translucent: var( + --tblr-dark-mode-border-color-translucent + ); + --tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color); + --tblr-border-color-active: var( + --tblr-dark-mode-border-color-active + ); + --tblr-btn-color: #151f2c; + --tblr-code-color: var(--tblr-body-color); + --tblr-code-bg: #1f2e41; + --tblr-primary-lt: #16293f; + --tblr-primary-lt-rgb: 22, 41, 63; + --tblr-secondary-lt: #202c3b; + --tblr-secondary-lt-rgb: 32, 44, 59; + --tblr-success-lt: #1a3235; + --tblr-success-lt-rgb: 26, 50, 53; + --tblr-info-lt: #1c3044; + --tblr-info-lt-rgb: 28, 48, 68; + --tblr-warning-lt: #2e2b2f; + --tblr-warning-lt-rgb: 46, 43, 47; + --tblr-danger-lt: #2b2634; + --tblr-danger-lt-rgb: 43, 38, 52; + --tblr-light-lt: #2f3a47; + --tblr-light-lt-rgb: 47, 58, 71; + --tblr-dark-lt: #182433; + --tblr-dark-lt-rgb: 24, 36, 51; + --tblr-muted-lt: #202c3b; + --tblr-muted-lt-rgb: 32, 44, 59; + --tblr-blue-lt: #16293f; + --tblr-blue-lt-rgb: 22, 41, 63; + --tblr-azure-lt: #1c3044; + --tblr-azure-lt-rgb: 28, 48, 68; + --tblr-indigo-lt: #1c2a45; + --tblr-indigo-lt-rgb: 28, 42, 69; + --tblr-purple-lt: #272742; + --tblr-purple-lt-rgb: 39, 39, 66; + --tblr-pink-lt: #2b2639; + --tblr-pink-lt-rgb: 43, 38, 57; + --tblr-red-lt: #2b2634; + --tblr-red-lt-rgb: 43, 38, 52; + --tblr-orange-lt: #2e2b2f; + --tblr-orange-lt-rgb: 46, 43, 47; + --tblr-yellow-lt: #2e302e; + --tblr-yellow-lt-rgb: 46, 48, 46; + --tblr-lime-lt: #213330; + --tblr-lime-lt-rgb: 33, 51, 48; + --tblr-green-lt: #1a3235; + --tblr-green-lt-rgb: 26, 50, 53; + --tblr-teal-lt: #17313a; + --tblr-teal-lt-rgb: 23, 49, 58; + --tblr-cyan-lt: #183140; + --tblr-cyan-lt-rgb: 24, 49, 64; + --tblr-facebook-lt: #182c46; + --tblr-facebook-lt-rgb: 24, 44, 70; + --tblr-twitter-lt: #193146; + --tblr-twitter-lt-rgb: 25, 49, 70; + --tblr-linkedin-lt: #172b41; + --tblr-linkedin-lt-rgb: 23, 43, 65; + --tblr-google-lt: #2c2834; + --tblr-google-lt-rgb: 44, 40, 52; + --tblr-youtube-lt: #2f202e; + --tblr-youtube-lt-rgb: 47, 32, 46; + --tblr-vimeo-lt: #183345; + --tblr-vimeo-lt-rgb: 24, 51, 69; + --tblr-dribbble-lt: #2d283c; + --tblr-dribbble-lt-rgb: 45, 40, 60; + --tblr-github-lt: #182330; + --tblr-github-lt-rgb: 24, 35, 48; + --tblr-instagram-lt: #2c2737; + --tblr-instagram-lt-rgb: 44, 39, 55; + --tblr-pinterest-lt: #292131; + --tblr-pinterest-lt-rgb: 41, 33, 49; + --tblr-vk-lt: #202e3f; + --tblr-vk-lt-rgb: 32, 46, 63; + --tblr-rss-lt: #2f312e; + --tblr-rss-lt-rgb: 47, 49, 46; + --tblr-flickr-lt: #162a44; + --tblr-flickr-lt-rgb: 22, 42, 68; + --tblr-bitbucket-lt: #162942; + --tblr-bitbucket-lt-rgb: 22, 41, 66; + --tblr-tabler-lt: #16293f; + --tblr-tabler-lt-rgb: 22, 41, 63; +} +[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image { + filter: brightness(0) invert(1); +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); +} + +.accordion-button:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} +.accordion-button:after { + opacity: 0.7; +} +.accordion-button:not(.collapsed) { + font-weight: var(--tblr-font-weight-bold); + border-bottom-color: transparent; + box-shadow: none; +} +.accordion-button:not(.collapsed):after { + opacity: 1; +} + +.alert { + --tblr-alert-color: var(--tblr-secondary); + --tblr-alert-bg: var(--tblr-surface); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-right: 0.25rem var(--tblr-border-style) var(--tblr-alert-color); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.alert > :last-child { + margin-bottom: 0; +} + +.alert-important { + border-color: transparent; + background: var(--tblr-alert-color); + color: #fff; +} +.alert-important .alert-icon, +.alert-important .alert-link, +.alert-important .alert-title { + color: inherit; +} +.alert-important .alert-link:hover { + color: inherit; +} +.alert-important .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.alert-link, .alert-link:hover { + color: var(--tblr-alert-color); +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler); +} + +.alert-icon { + color: var(--tblr-alert-color); + width: 1.5rem !important; + height: 1.5rem !important; + margin: -0.125rem 0 -0.125rem 1rem; +} + +.alert-title { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: var(--tblr-font-weight-bold); + margin-bottom: 0.25rem; + color: var(--tblr-alert-color); +} + +.avatar { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-bg: var(--tblr-bg-surface-secondary); + --tblr-avatar-box-shadow: var(--tblr-box-shadow-border); + --tblr-avatar-font-size: 1rem; + --tblr-avatar-icon-size: 1.5rem; + position: relative; + width: var(--tblr-avatar-size); + height: var(--tblr-avatar-size); + font-size: var(--tblr-avatar-font-size); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--tblr-secondary); + text-align: center; + text-transform: uppercase; + vertical-align: bottom; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-avatar-bg) no-repeat center/cover; + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-avatar-box-shadow); +} +.avatar .icon { + width: var(--tblr-avatar-icon-size); + height: var(--tblr-avatar-icon-size); +} +.avatar .badge { + position: absolute; + left: 0; + bottom: 0; + border-radius: 100rem; + box-shadow: 0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface); +} +a.avatar { + cursor: pointer; +} + +.avatar-rounded { + border-radius: 100rem; +} + +.avatar-xxs { + --tblr-avatar-size: 1rem; + --tblr-avatar-status-size: 0.25rem; + --tblr-avatar-font-size: 0.5rem; + --tblr-avatar-icon-size: 0.75rem; +} + +.avatar-xxs .badge:empty { + width: 0.25rem; + height: 0.25rem; +} + +.avatar-xs { + --tblr-avatar-size: 1.25rem; + --tblr-avatar-status-size: 0.375rem; + --tblr-avatar-font-size: 0.625rem; + --tblr-avatar-icon-size: 1rem; +} + +.avatar-xs .badge:empty { + width: 0.375rem; + height: 0.375rem; +} + +.avatar-sm { + --tblr-avatar-size: 2rem; + --tblr-avatar-status-size: 0.5rem; + --tblr-avatar-font-size: 0.75rem; + --tblr-avatar-icon-size: 1.25rem; +} + +.avatar-sm .badge:empty { + width: 0.5rem; + height: 0.5rem; +} + +.avatar-md { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 0.875rem; + --tblr-avatar-icon-size: 1.5rem; +} + +.avatar-md .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-lg { + --tblr-avatar-size: 3rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 1.25rem; + --tblr-avatar-icon-size: 2rem; +} + +.avatar-lg .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-xl { + --tblr-avatar-size: 5rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 2rem; + --tblr-avatar-icon-size: 3rem; +} + +.avatar-xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-2xl { + --tblr-avatar-size: 7rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 3rem; + --tblr-avatar-icon-size: 5rem; +} + +.avatar-2xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} +.avatar-list a.avatar:hover { + z-index: 1; +} + +.avatar-list-stacked { + display: block; + --tblr-list-gap: 0; +} +.avatar-list-stacked .avatar { + margin-left: calc(-0.5 * var(--tblr-avatar-size)) !important; + box-shadow: var(--tblr-avatar-box-shadow), 0 0 0 2px var(--tblr-card-cap-bg, var(--tblr-card-bg, var(--tblr-bg-surface))); +} + +.avatar-upload { + width: 4rem; + height: 4rem; + border: var(--tblr-border-width) dashed var(--tblr-border-color); + background: var(--tblr-bg-forms); + flex-direction: column; + transition: color 0.3s, background-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .avatar-upload { + transition: none; + } +} +.avatar-upload svg { + width: 1.5rem; + height: 1.5rem; + stroke-width: 1; +} +.avatar-upload:hover { + border-color: var(--tblr-primary); + color: var(--tblr-primary); + text-decoration: none; +} + +.avatar-upload-text { + font-size: 0.625rem; + line-height: 1; + margin-top: 0.25rem; +} + +.avatar-cover { + margin-top: calc(-0.5 * var(--tblr-avatar-size)); + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-body-bg)); +} + +.badge { + justify-content: center; + align-items: center; + background: var(--tblr-bg-surface-secondary); + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + min-width: 1.35714285em; + font-weight: var(--tblr-font-weight-bold); + letter-spacing: 0.04em; + vertical-align: bottom; +} +a.badge { + color: var(--tblr-bg-surface); +} + +.badge .avatar { + box-sizing: content-box; + width: 1.25rem; + height: 1.25rem; + margin: 0 -0.5rem 0 0.5rem; +} +.badge .icon { + width: 1em; + height: 1em; + font-size: 1rem; + stroke-width: 2; +} + +.badge:empty, +.badge-empty { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + min-width: 0; + min-height: auto; + padding: 0; + border-radius: 100rem; + vertical-align: baseline; +} + +.badge-outline { + background-color: transparent; + border: var(--tblr-border-width) var(--tblr-border-style) currentColor; +} + +.badge-pill { + border-radius: 100rem; +} + +.badges-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.badge-notification { + position: absolute !important; + top: 0 !important; + left: 0 !important; + transform: translate(-50%, -50%); + z-index: 1; +} + +.badge-blink { + animation: blink 2s infinite; +} + +.breadcrumb { + --tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold); + --tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color); + --tblr-breadcrumb-link-color: var(--tblr-link-color); + padding: 0; + margin: 0; + background: transparent; +} +.breadcrumb a { + color: var(--tblr-breadcrumb-link-color); +} +.breadcrumb a:hover { + text-decoration: underline; +} + +.breadcrumb-muted { + --tblr-breadcrumb-link-color: var(--tblr-secondary); +} + +.breadcrumb-item.active { + font-weight: var(--tblr-breadcrumb-item-active-font-weight); +} +.breadcrumb-item.active a { + color: inherit; + pointer-events: none; +} +.breadcrumb-item.disabled { + color: var(--tblr-breadcrumb-item-disabled-color); +} +.breadcrumb-item.disabled:before { + color: inherit; +} +.breadcrumb-item.disabled a { + color: inherit; + pointer-events: none; +} + +.breadcrumb-dots { + --tblr-breadcrumb-divider: "·"; +} + +.breadcrumb-arrows { + --tblr-breadcrumb-divider: "›"; +} + +.breadcrumb-bullets { + --tblr-breadcrumb-divider: "•"; +} + +.btn { + --tblr-btn-icon-size: 1.25rem; + --tblr-btn-bg: var(--tblr-bg-surface); + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-border-color: var(--tblr-border-color); + --tblr-btn-hover-bg: var(--tblr-btn-bg); + --tblr-btn-hover-border-color: var(--tblr-border-color-active); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-active-color: var(--tblr-primary); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-btn-active-border-color: var(--tblr-primary); + display: inline-flex; + align-items: center; + justify-content: center; + white-space: nowrap; + box-shadow: var(--tblr-btn-box-shadow); +} +.btn .icon { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + min-width: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); + vertical-align: bottom; + color: inherit; +} +.btn .avatar { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); +} +.btn .icon-right { + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); +} +.btn .badge { + top: auto; +} +.btn-check + .btn:hover { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} + +.btn-link { + color: #0054a6; + background-color: transparent; + border-color: transparent; + box-shadow: none; +} +.btn-link .icon { + color: inherit; +} +.btn-link:hover { + color: #004385; + border-color: transparent; +} + +.btn-primary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-primary-fg); + --tblr-btn-bg: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-border-color: var(--tblr-primary); +} + +.btn-secondary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-secondary-fg); + --tblr-btn-bg: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-border-color: var(--tblr-secondary); +} + +.btn-success { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-success-fg); + --tblr-btn-bg: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-border-color: var(--tblr-success); +} + +.btn-info { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-info-fg); + --tblr-btn-bg: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-border-color: var(--tblr-info); +} + +.btn-warning { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-warning-fg); + --tblr-btn-bg: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-border-color: var(--tblr-warning); +} + +.btn-danger { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-danger-fg); + --tblr-btn-bg: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-border-color: var(--tblr-danger); +} + +.btn-light { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-light-fg); + --tblr-btn-bg: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-border-color: var(--tblr-light); +} + +.btn-dark { + --tblr-btn-border-color: var(--tblr-dark-mode-border-color); + --tblr-btn-hover-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-active-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-color: var(--tblr-dark-fg); + --tblr-btn-bg: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-border-color: var(--tblr-dark); +} + +.btn-muted { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-muted-fg); + --tblr-btn-bg: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-border-color: var(--tblr-muted); +} + +.btn-blue { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-blue-fg); + --tblr-btn-bg: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-border-color: var(--tblr-blue); +} + +.btn-azure { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-azure-fg); + --tblr-btn-bg: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-border-color: var(--tblr-azure); +} + +.btn-indigo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-indigo-fg); + --tblr-btn-bg: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-border-color: var(--tblr-indigo); +} + +.btn-purple { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-purple-fg); + --tblr-btn-bg: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-border-color: var(--tblr-purple); +} + +.btn-pink { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pink-fg); + --tblr-btn-bg: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-border-color: var(--tblr-pink); +} + +.btn-red { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-red-fg); + --tblr-btn-bg: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-border-color: var(--tblr-red); +} + +.btn-orange { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-orange-fg); + --tblr-btn-bg: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-border-color: var(--tblr-orange); +} + +.btn-yellow { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-yellow-fg); + --tblr-btn-bg: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-border-color: var(--tblr-yellow); +} + +.btn-lime { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-lime-fg); + --tblr-btn-bg: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-border-color: var(--tblr-lime); +} + +.btn-green { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-green-fg); + --tblr-btn-bg: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-border-color: var(--tblr-green); +} + +.btn-teal { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-teal-fg); + --tblr-btn-bg: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-border-color: var(--tblr-teal); +} + +.btn-cyan { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-cyan-fg); + --tblr-btn-bg: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-border-color: var(--tblr-cyan); +} + +.btn-facebook { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-facebook-fg); + --tblr-btn-bg: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-border-color: var(--tblr-facebook); +} + +.btn-twitter { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-twitter-fg); + --tblr-btn-bg: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-border-color: var(--tblr-twitter); +} + +.btn-linkedin { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-linkedin-fg); + --tblr-btn-bg: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-border-color: var(--tblr-linkedin); +} + +.btn-google { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-google-fg); + --tblr-btn-bg: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-border-color: var(--tblr-google); +} + +.btn-youtube { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-youtube-fg); + --tblr-btn-bg: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-border-color: var(--tblr-youtube); +} + +.btn-vimeo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vimeo-fg); + --tblr-btn-bg: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-border-color: var(--tblr-vimeo); +} + +.btn-dribbble { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-dribbble-fg); + --tblr-btn-bg: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-border-color: var(--tblr-dribbble); +} + +.btn-github { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-github-fg); + --tblr-btn-bg: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-border-color: var(--tblr-github); +} + +.btn-instagram { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-instagram-fg); + --tblr-btn-bg: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-border-color: var(--tblr-instagram); +} + +.btn-pinterest { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pinterest-fg); + --tblr-btn-bg: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-border-color: var(--tblr-pinterest); +} + +.btn-vk { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vk-fg); + --tblr-btn-bg: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-border-color: var(--tblr-vk); +} + +.btn-rss { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-rss-fg); + --tblr-btn-bg: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-border-color: var(--tblr-rss); +} + +.btn-flickr { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-flickr-fg); + --tblr-btn-bg: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-border-color: var(--tblr-flickr); +} + +.btn-bitbucket { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-bitbucket-fg); + --tblr-btn-bg: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-border-color: var(--tblr-bitbucket); +} + +.btn-tabler { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-tabler-fg); + --tblr-btn-bg: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-border-color: var(--tblr-tabler); +} + +.btn-ghost-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-hover-border-color: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-hover-border-color: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-hover-border-color: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-hover-border-color: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-hover-border-color: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-hover-border-color: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-hover-border-color: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-hover-border-color: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-hover-border-color: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-hover-border-color: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-hover-border-color: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-hover-border-color: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-hover-border-color: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-hover-border-color: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-hover-border-color: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-hover-border-color: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-hover-border-color: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-hover-border-color: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-hover-border-color: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-hover-border-color: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-hover-border-color: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-hover-border-color: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-hover-border-color: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-hover-border-color: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-hover-border-color: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-hover-border-color: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-hover-border-color: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-hover-border-color: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-hover-border-color: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-hover-border-color: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-hover-border-color: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-hover-border-color: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-hover-border-color: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-hover-border-color: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-hover-border-color: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-hover-border-color: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: .75rem; +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: 2rem; +} + +.btn-pill { + padding-left: 1.5em; + padding-right: 1.5em; + border-radius: 10rem; +} +.btn-pill[class*=btn-icon] { + padding: 0.375rem 15px; +} + +.btn-square { + border-radius: 0; +} + +.btn-icon { + min-width: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + min-height: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + padding-right: 0; + padding-left: 0; +} +.btn-icon .icon { + margin: calc(-1 * var(--tblr-btn-padding-x)); +} + +.btn-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.btn-floating { + position: fixed; + z-index: 1030; + bottom: 1.5rem; + left: 1.5rem; + border-radius: 100rem; +} + +.btn-loading { + position: relative; + color: transparent !important; + text-shadow: none !important; + pointer-events: none; +} +.btn-loading > * { + opacity: 0; +} +.btn-loading:after { + content: ""; + display: inline-block; + vertical-align: text-bottom; + border: 2px var(--tblr-border-style) currentColor; + border-left-color: transparent; + border-radius: 100rem; + color: var(--tblr-btn-color); + position: absolute; + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + right: calc(50% - var(--tblr-btn-icon-size) / 2); + top: calc(50% - var(--tblr-btn-icon-size) / 2); + animation: spinner-border 0.75s linear infinite; +} + +.btn-action { + padding: 0; + border: 0; + color: var(--tblr-secondary); + display: inline-flex; + width: 2rem; + height: 2rem; + align-items: center; + justify-content: center; + border-radius: var(--tblr-border-radius); + background: transparent; +} +.btn-action:after { + content: none; +} +.btn-action:focus { + outline: none; + box-shadow: none; +} +.btn-action:hover, .btn-action.show { + color: var(--tblr-body-color); + background: var(--tblr-active-bg); +} +.btn-action.show { + color: var(--tblr-primary); +} +.btn-action .icon { + margin: 0; + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; + stroke-width: 1; +} + +.btn-actions { + display: flex; +} + +.btn-group, +.btn-group-vertical { + box-shadow: var(--tblr-box-shadow-input); +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 5; +} +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus { + z-index: 1; +} + +.calendar { + display: block; + font-size: 0.765625rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.calendar-nav { + display: flex; + align-items: center; +} + +.calendar-title { + flex: 1; + text-align: center; +} + +.calendar-body, +.calendar-header { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + padding: 0.5rem 0; +} + +.calendar-header { + color: var(--tblr-secondary); +} + +.calendar-date { + flex: 0 0 14.2857142857%; + max-width: 14.2857142857%; + padding: 0.2rem; + text-align: center; + border: 0; +} +.calendar-date.next-month, .calendar-date.prev-month { + opacity: 0.25; +} +.calendar-date .date-item { + position: relative; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + line-height: 1.4rem; + color: #66758c; + text-align: center; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: 100% 0; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + border-radius: 100rem; + outline: 0; + transition: background 0.3s, border 0.3s, box-shadow 0.32s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .calendar-date .date-item { + transition: none; + } +} +.calendar-date .date-item:hover { + color: var(--tblr-primary); + text-decoration: none; + background: #fefeff; + border-color: var(--tblr-border-color); +} +.calendar-date .date-today { + color: var(--tblr-primary); + border-color: var(--tblr-border-color); +} + +.calendar-range { + position: relative; +} +.calendar-range:before { + position: absolute; + top: 50%; + left: 0; + right: 0; + height: 1.4rem; + content: ""; + background: rgba(var(--tblr-primary-rgb), 0.1); + transform: translateY(-50%); +} +.calendar-range.range-start .date-item, .calendar-range.range-end .date-item { + color: #ffffff; + background: var(--tblr-primary); + border-color: var(--tblr-primary); +} +.calendar-range.range-start:before { + right: 50%; +} +.calendar-range.range-end:before { + left: 50%; +} + +.carousel-indicators-vertical { + right: auto; + top: 0; + margin: 0 0 0 1rem; + flex-direction: column; +} +.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0 3px; + width: 3px; + height: 30px; + border: 0; + border-right: 10px var(--tblr-border-style) transparent; + border-left: 10px var(--tblr-border-style) transparent; +} + +.carousel-indicators-dot [data-bs-target] { + width: 0.5rem; + height: 0.5rem; + border-radius: 100rem; + border: 10px var(--tblr-border-style) transparent; + margin: 0; +} + +.carousel-indicators-thumb [data-bs-target] { + width: 2rem; + height: auto; + background: no-repeat center/cover; + border: 0; + border-radius: var(--tblr-border-radius); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + margin: 0 3px; + opacity: 0.75; +} +@media (min-width: 992px) { + .carousel-indicators-thumb [data-bs-target] { + width: 4rem; + } +} +.carousel-indicators-thumb [data-bs-target]:before { + content: ""; + padding-top: var(--tblr-aspect-ratio, 100%); + display: block; +} +.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0; +} + +.carousel-caption-background { + background: red; + position: absolute; + right: 0; + left: 0; + bottom: 0; + height: 90%; + background: linear-gradient(0deg, rgba(24, 36, 51, 0.9), rgba(24, 36, 51, 0)); +} + +.card { + transition: transform 0.3s ease-out, opacity 0.3s ease-out, box-shadow 0.3s ease-out; +} +@media (prefers-reduced-motion: reduce) { + .card { + transition: none; + } +} +@media print { + .card { + border: none; + box-shadow: none; + } +} +a.card { + color: inherit; +} +a.card:hover { + text-decoration: none; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; +} + +.card .card { + box-shadow: none; +} + +.card-borderless, +.card-borderless .card-header, +.card-borderless .card-footer { + border-color: transparent; +} + +.card-stamp { + --tblr-stamp-size: 7rem; + position: absolute; + top: 0; + left: 0; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + max-height: 100%; + border-top-left-radius: 4px; + opacity: 0.2; + overflow: hidden; + pointer-events: none; +} + +.card-stamp-lg { + --tblr-stamp-size: 13rem; +} + +.card-stamp-icon { + background: var(--tblr-secondary); + color: var(--tblr-card-bg, var(--tblr-bg-surface)); + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + position: relative; + top: calc(var(--tblr-stamp-size) * -0.25); + left: calc(var(--tblr-stamp-size) * -0.25); + font-size: calc(var(--tblr-stamp-size) * 0.75); + transform: rotate(-10deg); +} +.card-stamp-icon .icon { + stroke-width: 2; + width: calc(var(--tblr-stamp-size) * 0.75); + height: calc(var(--tblr-stamp-size) * 0.75); +} + +.card-img, +.card-img-start { + border-top-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img, +.card-img-end { + border-top-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img-overlay { + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.card-img-overlay-dark { + background-image: linear-gradient(-180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.card-inactive { + pointer-events: none; + box-shadow: none; +} +.card-inactive .card-body { + opacity: 0.64; +} + +.card-active { + --tblr-card-border-color: var(--tblr-primary); + --tblr-card-bg: var(--tblr-active-bg); +} + +.card-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 1.25rem 1.25rem; + text-align: center; + transition: background 0.3s; + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + flex: 1; + color: inherit; + font-weight: var(--tblr-font-weight-medium); +} +@media (prefers-reduced-motion: reduce) { + .card-btn { + transition: none; + } +} +.card-btn:hover { + text-decoration: none; + background: rgba(var(--tblr-primary-rgb), 0.04); +} +.card-btn + .card-btn { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Stacked card + */ +.card-stacked { + --tblr-card-stacked-offset: .25rem; + position: relative; +} +.card-stacked:after { + position: absolute; + top: calc(-1 * var(--tblr-card-stacked-offset)); + left: var(--tblr-card-stacked-offset); + right: var(--tblr-card-stacked-offset); + height: var(--tblr-card-stacked-offset); + content: ""; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-cover { + position: relative; + padding: 1.25rem 1.25rem; + background: #666666 no-repeat center/cover; +} +.card-cover:before { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + content: ""; + background: rgba(24, 36, 51, 0.48); +} +.card-cover:first-child, .card-cover:first-child:before { + border-radius: 4px 4px 0 0; +} + +.card-cover-blurred:before { + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); +} + +.card-actions { + margin: -0.5rem auto -0.5rem -0.5rem; + padding-right: 0.5rem; +} +.card-actions a { + text-decoration: none; +} + +.card-header { + color: inherit; + display: flex; + align-items: center; + background: transparent; +} +.card-header:first-child { + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-header-light { + border-bottom-color: transparent; + background: var(--tblr-bg-surface-tertiary); +} + +.card-header-tabs { + background: var(--tblr-bg-surface-tertiary); + flex: 1; + margin: calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1); + padding: calc(var(--tblr-card-cap-padding-y) * 0.5) calc(var(--tblr-card-cap-padding-x) * 0.5) 0; +} + +.card-header-pills { + flex: 1; + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} + +.card-rotate-left { + transform: rotate(1.5deg); +} + +.card-rotate-right { + transform: rotate(-1.5deg); +} + +.card-link { + color: inherit; +} +.card-link:hover { + color: inherit; + text-decoration: none; + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.08); +} + +.card-link-rotate:hover { + transform: rotate(-1.5deg); + opacity: 1; +} + +.card-link-pop:hover { + transform: translateY(-2px); + opacity: 1; +} + +.card-footer { + margin-top: auto; +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +.card-footer-transparent { + background: transparent; + border-color: transparent; + padding-top: 0; +} + +.card-footer-borderless { + border-top: none; +} + +.card-progress { + height: 0.25rem; +} +.card-progress:last-child { + border-radius: 0 0 2px 2px; +} +.card-progress:first-child { + border-radius: 2px 2px 0 0; +} + +.card-meta { + color: var(--tblr-secondary); +} + +.card-title { + display: block; + margin: 0 0 1rem; + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + color: inherit; + line-height: 1.5rem; +} +a.card-title:hover { + color: inherit; +} + +.card-header .card-title { + margin: 0; +} + +.card-subtitle { + margin-bottom: 1.25rem; + color: var(--tblr-secondary); + font-weight: normal; +} +.card-header .card-subtitle { + margin: 0; +} +.card-title .card-subtitle { + margin: 0 0.25rem 0 0; + font-size: 0.875rem; +} + +.card-body { + position: relative; +} +.card-body > :last-child { + margin-bottom: 0; +} +.card-sm > .card-body { + padding: 1rem; +} +@media (min-width: 768px) { + .card-md > .card-body { + padding: 2.5rem; + } +} +@media (min-width: 768px) { + .card-lg > .card-body { + padding: 2rem; + } +} +@media (min-width: 992px) { + .card-lg > .card-body { + padding: 4rem; + } +} +@media print { + .card-body { + padding: 0; + } +} +.card-body + .card-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.card-body-scrollable { + overflow: auto; +} + +/** +Card optinos + */ +.card-options { + top: 1.5rem; + left: 0.75rem; + display: flex; + margin-right: auto; +} + +.card-options-link { + display: inline-block; + min-width: 1rem; + margin-right: 0.25rem; + color: var(--tblr-secondary); +} + +/** +Card status + */ +.card-status-top { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-status-start { + position: absolute; + left: auto; + bottom: 0; + width: 2px; + height: 100%; + border-radius: 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0; +} + +.card-status-bottom { + position: absolute; + top: initial; + bottom: 0; + width: 100%; + height: 2px; + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +/** +Card table + */ +.card-table { + margin-bottom: 0 !important; +} +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-right: 1.25rem; + border-right: 0; +} +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-left: 1.25rem; + border-left: 0; +} +.card-table thead tr:first-child, +.card-table tbody tr:first-child, +.card-table tfoot tr:first-child { + border-top: 0; +} +.card-table thead tr:first-child td, +.card-table thead tr:first-child th, +.card-table tbody tr:first-child td, +.card-table tbody tr:first-child th, +.card-table tfoot tr:first-child td, +.card-table tfoot tr:first-child th { + border-top: 0; +} +.card-body + .card-table { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color); +} + +/* +Card code + */ +.card-code { + padding: 0; +} +.card-code .highlight { + margin: 0; + border: 0; +} +.card-code pre { + margin: 0 !important; + border: 0 !important; +} + +/* +Card chart + */ +.card-chart { + position: relative; + z-index: 1; + height: 3.5rem; +} + +/** +Card avatar + */ +.card-avatar { + margin-right: auto; + margin-left: auto; + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-bg-surface)); + margin-top: calc(-1 * var(--tblr-avatar-size) * 0.5); +} + +/* +Card list group + */ +.card-body + .card-list-group { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.card-list-group .list-group-item { + padding-left: 1.25rem; + padding-right: 1.25rem; + border-left: 0; + border-right: 0; + border-radius: 0; +} +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-tabs .nav-tabs { + position: relative; + z-index: 1000; + border-bottom: 0; +} +.card-tabs .nav-tabs .nav-link { + background: var(--tblr-bg-surface-tertiary); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.card-tabs .nav-tabs .nav-link.active, .card-tabs .nav-tabs .nav-link:active, .card-tabs .nav-tabs .nav-link:hover { + border-color: var(--tblr-border-color-translucent); + color: var(--tblr-body-color); +} +.card-tabs .nav-tabs .nav-link.active { + color: inherit; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border-bottom-color: transparent; +} +.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link { + border-top-right-radius: 0; +} +.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link { + border-top-left-radius: 0; +} +.card-tabs .nav-tabs .nav-item + .nav-item { + margin-right: calc(-1 * var(--tblr-border-width)); +} +.card-tabs .nav-tabs-bottom { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link.active { + border-top-color: transparent; +} +.card-tabs .nav-tabs-bottom .nav-item { + margin-top: calc(-1 * var(--tblr-border-width)); + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-item .nav-link { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link { + border-bottom-right-radius: 0; +} +.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link { + border-bottom-left-radius: 0; +} +.card-tabs .card { + border-bottom-right-radius: 0; +} +.card-tabs .nav-tabs + .tab-content .card { + border-bottom-right-radius: var(--tblr-card-border-radius); + border-top-right-radius: 0; +} + +/** +Card note +*/ +.card-note { + --tblr-card-bg: #fff7dd; + --tblr-card-border-color: #fff1c9; +} + +.btn-close { + cursor: pointer; +} +.btn-close:focus { + outline: none; +} + +.dropdown-menu { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.dropdown-menu.card { + padding: 0; + min-width: 25rem; + display: none; +} +.dropdown-menu.card.show { + display: flex; +} + +.dropdown-item { + min-width: 11rem; + display: flex; + align-items: center; + margin: 0; + line-height: 1.4285714286; +} + +.dropdown-item-icon { + width: 1.25rem !important; + height: 1.25rem !important; + margin-left: 0.5rem; + color: var(--tblr-secondary); + opacity: 0.7; + text-align: center; +} + +.dropdown-item-indicator { + margin-left: 0.5rem; + margin-right: -0.25rem; + height: 1.25rem; + display: inline-flex; + line-height: 1; + vertical-align: bottom; + align-items: center; +} + +.dropdown-header { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-bottom: 0.25rem; + pointer-events: none; +} + +.dropdown-menu-scrollable { + height: auto; + max-height: 13rem; + overflow-x: hidden; +} + +.dropdown-menu-column { + min-width: 11rem; +} +.dropdown-menu-column .dropdown-item { + min-width: 0; +} + +.dropdown-menu-columns { + display: flex; + flex: 0 0.25rem; +} + +.dropdown-menu-arrow:before { + content: ""; + position: absolute; + top: -0.25rem; + right: 0.75rem; + display: block; + background: inherit; + width: 14px; + height: 14px; + transform: rotate(45deg); + transform-origin: center; + border: 1px solid; + border-color: inherit; + z-index: -1; + clip: rect(0px, 9px, 9px, 0px); +} +.dropdown-menu-arrow.dropdown-menu-end:before { + left: 0.75rem; + right: auto; +} + +.dropend > .dropdown-menu { + margin-top: calc(-0.25rem - 1px); + margin-right: -0.25rem; +} +.dropend .dropdown-toggle:after { + margin-right: auto; +} + +.dropdown-menu-card { + padding: 0; +} +.dropdown-menu-card > .card { + margin: 0; + border: 0; + box-shadow: none; +} + +.datagrid { + --tblr-datagrid-padding: 1.5rem; + --tblr-datagrid-item-width: 15rem; + display: grid; + grid-gap: var(--tblr-datagrid-padding); + grid-template-columns: repeat(auto-fit, minmax(var(--tblr-datagrid-item-width), 1fr)); +} + +.datagrid-title { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + margin-bottom: 0.25rem; +} + +.empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + padding: 1rem; + text-align: center; +} +@media (min-width: 768px) { + .empty { + padding: 3rem; + } +} + +.empty-icon { + margin: 0 0 1rem; + width: 3rem; + height: 3rem; + line-height: 1; + color: var(--tblr-secondary); +} +.empty-icon svg { + width: 100%; + height: 100%; +} + +.empty-img { + margin: 0 0 2rem; + line-height: 1; +} +.empty-img img { + height: 8rem; + width: auto; +} + +.empty-header { + margin: 0 0 1rem; + font-size: 4rem; + font-weight: var(--tblr-font-weight-light); + line-height: 1; + color: var(--tblr-secondary); +} + +.empty-title { + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: var(--tblr-font-weight-bold); +} + +.empty-title, +.empty-subtitle { + margin: 0 0 0.5rem; +} + +.empty-action { + margin-top: 1.5rem; +} + +.empty-bordered { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.row > * { + min-width: 0; +} + +.col-separator { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.container-slim { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 16rem; +} +.container-tight { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 30rem; +} +.container-narrow { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 45rem; +} + +.row-0 { + margin-left: 0; + margin-right: 0; +} +.row-0 > .col, +.row-0 > [class*=col-] { + padding-left: 0; + padding-right: 0; +} +.row-0 .card { + margin-bottom: 0; +} + +.row-sm { + margin-left: -0.375rem; + margin-right: -0.375rem; +} +.row-sm > .col, +.row-sm > [class*=col-] { + padding-left: 0.375rem; + padding-right: 0.375rem; +} +.row-sm .card { + margin-bottom: 0.75rem; +} + +.row-md { + margin-left: -1.5rem; + margin-right: -1.5rem; +} +.row-md > .col, +.row-md > [class*=col-] { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.row-md .card { + margin-bottom: 3rem; +} + +.row-lg { + margin-left: -3rem; + margin-right: -3rem; +} +.row-lg > .col, +.row-lg > [class*=col-] { + padding-left: 3rem; + padding-right: 3rem; +} +.row-lg .card { + margin-bottom: 6rem; +} + +.row-deck > .col, +.row-deck > [class*=col-] { + display: flex; + align-items: stretch; +} +.row-deck > .col .card, +.row-deck > [class*=col-] .card { + flex: 1 1 auto; +} + +.row-cards { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: var(--tblr-page-padding); + min-width: 0; +} +.row-cards .row-cards { + flex: 1; +} + +.space-y { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x { + display: flex; + gap: 1rem; +} + +.space-y-0 { + display: flex; + flex-direction: column; + gap: 0; +} + +.space-x-0 { + display: flex; + gap: 0; +} + +.space-y-1 { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.space-x-1 { + display: flex; + gap: 0.25rem; +} + +.space-y-2 { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.space-x-2 { + display: flex; + gap: 0.5rem; +} + +.space-y-3 { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x-3 { + display: flex; + gap: 1rem; +} + +.space-y-4 { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.space-x-4 { + display: flex; + gap: 1.5rem; +} + +.space-y-5 { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.space-x-5 { + display: flex; + gap: 2rem; +} + +.space-y-6 { + display: flex; + flex-direction: column; + gap: 3rem; +} + +.space-x-6 { + display: flex; + gap: 3rem; +} + +.space-y-7 { + display: flex; + flex-direction: column; + gap: 5rem; +} + +.space-x-7 { + display: flex; + gap: 5rem; +} + +.space-y-8 { + display: flex; + flex-direction: column; + gap: 8rem; +} + +.space-x-8 { + display: flex; + gap: 8rem; +} + +.divide-y > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x > :not(template):not(:first-child) { + padding-right: 1rem !important; +} +.divide-x > :not(template):not(:last-child) { + padding-left: 1rem !important; +} + +.divide-y-0 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-0 > :not(template):not(:first-child) { + padding-top: 0 !important; +} +.divide-y-0 > :not(template):not(:last-child) { + padding-bottom: 0 !important; +} + +.divide-x-0 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-0 > :not(template):not(:first-child) { + padding-right: 0 !important; +} +.divide-x-0 > :not(template):not(:last-child) { + padding-left: 0 !important; +} + +.divide-y-1 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-1 > :not(template):not(:first-child) { + padding-top: 0.25rem !important; +} +.divide-y-1 > :not(template):not(:last-child) { + padding-bottom: 0.25rem !important; +} + +.divide-x-1 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-1 > :not(template):not(:first-child) { + padding-right: 0.25rem !important; +} +.divide-x-1 > :not(template):not(:last-child) { + padding-left: 0.25rem !important; +} + +.divide-y-2 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-2 > :not(template):not(:first-child) { + padding-top: 0.5rem !important; +} +.divide-y-2 > :not(template):not(:last-child) { + padding-bottom: 0.5rem !important; +} + +.divide-x-2 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-2 > :not(template):not(:first-child) { + padding-right: 0.5rem !important; +} +.divide-x-2 > :not(template):not(:last-child) { + padding-left: 0.5rem !important; +} + +.divide-y-3 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-3 > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y-3 > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x-3 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-3 > :not(template):not(:first-child) { + padding-right: 1rem !important; +} +.divide-x-3 > :not(template):not(:last-child) { + padding-left: 1rem !important; +} + +.divide-y-4 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-4 > :not(template):not(:first-child) { + padding-top: 1.5rem !important; +} +.divide-y-4 > :not(template):not(:last-child) { + padding-bottom: 1.5rem !important; +} + +.divide-x-4 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-4 > :not(template):not(:first-child) { + padding-right: 1.5rem !important; +} +.divide-x-4 > :not(template):not(:last-child) { + padding-left: 1.5rem !important; +} + +.divide-y-5 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-5 > :not(template):not(:first-child) { + padding-top: 2rem !important; +} +.divide-y-5 > :not(template):not(:last-child) { + padding-bottom: 2rem !important; +} + +.divide-x-5 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-5 > :not(template):not(:first-child) { + padding-right: 2rem !important; +} +.divide-x-5 > :not(template):not(:last-child) { + padding-left: 2rem !important; +} + +.divide-y-6 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-6 > :not(template):not(:first-child) { + padding-top: 3rem !important; +} +.divide-y-6 > :not(template):not(:last-child) { + padding-bottom: 3rem !important; +} + +.divide-x-6 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-6 > :not(template):not(:first-child) { + padding-right: 3rem !important; +} +.divide-x-6 > :not(template):not(:last-child) { + padding-left: 3rem !important; +} + +.divide-y-7 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-7 > :not(template):not(:first-child) { + padding-top: 5rem !important; +} +.divide-y-7 > :not(template):not(:last-child) { + padding-bottom: 5rem !important; +} + +.divide-x-7 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-7 > :not(template):not(:first-child) { + padding-right: 5rem !important; +} +.divide-x-7 > :not(template):not(:last-child) { + padding-left: 5rem !important; +} + +.divide-y-8 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-8 > :not(template):not(:first-child) { + padding-top: 8rem !important; +} +.divide-y-8 > :not(template):not(:last-child) { + padding-bottom: 8rem !important; +} + +.divide-x-8 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-8 > :not(template):not(:first-child) { + padding-right: 8rem !important; +} +.divide-x-8 > :not(template):not(:last-child) { + padding-left: 8rem !important; +} + +.divide-y-fill { + display: flex; + flex-direction: column; + height: 100%; +} +.divide-y-fill > :not(template) { + flex: 1; + display: flex; + justify-content: center; + flex-direction: column; +} + +.icon { + --tblr-icon-size: 1.25rem; + width: var(--tblr-icon-size); + height: var(--tblr-icon-size); + font-size: var(--tblr-icon-size); + vertical-align: bottom; + stroke-width: 1.5; +} +.icon:hover { + text-decoration: none; +} + +.icon-inline { + --tblr-icon-size: 1rem; + vertical-align: -0.2rem; +} + +.icon-filled { + fill: currentColor; +} + +.icon-sm { + --tblr-icon-size: 1rem; + stroke-width: 1; +} + +.icon-md { + --tblr-icon-size: 2.5rem; + stroke-width: 1; +} + +.icon-lg { + --tblr-icon-size: 3.5rem; + stroke-width: 1; +} + +.icon-pulse { + transition: all 0.15s ease 0s; + animation: pulse 2s ease infinite; + animation-fill-mode: both; +} + +.icon-tada { + transition: all 0.15s ease 0s; + animation: tada 3s ease infinite; + animation-fill-mode: both; +} + +.icon-rotate { + transition: all 0.15s ease 0s; + animation: rotate-360 3s linear infinite; + animation-fill-mode: both; +} + +.img-responsive { + --tblr-img-responsive-ratio: 75%; + background: no-repeat center/cover; + padding-top: var(--tblr-img-responsive-ratio); +} + +.img-responsive-grid { + padding-top: calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2); +} + +.img-responsive-1x1 { + --tblr-img-responsive-ratio: 100%; +} + +.img-responsive-2x1 { + --tblr-img-responsive-ratio: 50%; +} + +.img-responsive-1x2 { + --tblr-img-responsive-ratio: 200%; +} + +.img-responsive-3x1 { + --tblr-img-responsive-ratio: 33.3333333333%; +} + +.img-responsive-1x3 { + --tblr-img-responsive-ratio: 300%; +} + +.img-responsive-4x3 { + --tblr-img-responsive-ratio: 75%; +} + +.img-responsive-3x4 { + --tblr-img-responsive-ratio: 133.3333333333%; +} + +.img-responsive-16x9 { + --tblr-img-responsive-ratio: 56.25%; +} + +.img-responsive-9x16 { + --tblr-img-responsive-ratio: 177.7777777778%; +} + +.img-responsive-21x9 { + --tblr-img-responsive-ratio: 42.8571428571%; +} + +.img-responsive-9x21 { + --tblr-img-responsive-ratio: 233.3333333333%; +} + +textarea[cols] { + height: auto; +} + +/** +Form label + */ +.col-form-label, +.form-label { + display: block; + font-weight: var(--tblr-font-weight-medium); +} +.col-form-label.required:after, +.form-label.required:after { + content: "*"; + margin-right: 0.25rem; + color: #d63939; +} + +.form-label-description { + float: left; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-secondary); +} + +/** +Form hint + */ +.form-hint { + display: block; + color: var(--tblr-secondary); +} +.form-hint:last-child { + margin-bottom: 0; +} +.form-hint + .form-control { + margin-top: 0.25rem; +} +.form-label + .form-hint { + margin-top: -0.25rem; +} +.input-group + .form-hint, .form-control + .form-hint, .form-select + .form-hint { + margin-top: 0.5rem; +} + +/** +Form select + */ +.form-select:-moz-focusring { + color: var(--tblr-body-color); +} + +/** +Form control + */ +.form-control:-webkit-autofill { + box-shadow: 0 0 0 1000px var(--tblr-body-bg) inset; + color: var(--tblr-body-color); + -webkit-text-fill-color: var(--tblr-body-color); +} +.form-control:disabled, .form-control.disabled { + color: var(--tblr-secondary); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-control[size] { + width: auto; +} + +.form-control-light { + background-color: var(--tblr-gray-100); + border-color: transparent; +} + +.form-control-dark { + background-color: rgba(0, 0, 0, 0.1); + color: #ffffff; + border-color: transparent; +} +.form-control-dark:focus { + background-color: rgba(0, 0, 0, 0.1); + box-shadow: none; + border-color: rgba(255, 255, 255, 0.24); +} +.form-control-dark::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.form-control-rounded { + border-radius: 10rem; +} + +.form-control-flush { + padding: 0; + background: none !important; + border-color: transparent !important; + resize: none; + box-shadow: none !important; + line-height: inherit; +} + +.form-footer { + margin-top: 2rem; +} + +.form-fieldset { + padding: 1rem; + margin-bottom: 1rem; + background: var(--tblr-body-bg); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +/** +Form help + */ +.form-help { + display: inline-flex; + font-weight: var(--tblr-font-weight-bold); + align-items: center; + justify-content: center; + width: 1.125rem; + height: 1.125rem; + font-size: 0.75rem; + color: var(--tblr-secondary); + text-align: center; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-gray-100); + border-radius: 100rem; + transition: background-color 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-help { + transition: none; + } +} +.form-help:hover, .form-help[aria-describedby] { + color: #ffffff; + background: var(--tblr-primary); +} + +/** +Input group + */ +.input-group { + box-shadow: var(--tblr-box-shadow-input); + border-radius: var(--tblr-border-radius); +} +.input-group .form-control, +.input-group .btn { + box-shadow: none; +} + +.input-group-link { + font-size: 0.75rem; +} + +.input-group-flat:focus-within { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-radius: var(--tblr-border-radius); +} +.input-group-flat:focus-within .form-control, +.input-group-flat:focus-within .input-group-text { + border-color: #80aad3 !important; +} +.input-group-flat .form-control:focus { + border-color: var(--tblr-border-color); + box-shadow: none; +} +.input-group-flat .form-control:not(:last-child) { + border-left: 0; +} +.input-group-flat .form-control:not(:first-child) { + border-right: 0; +} +.input-group-flat .input-group-text { + background: var(--tblr-bg-forms); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .input-group-flat .input-group-text { + transition: none; + } +} +.input-group-flat .input-group-text:first-child { + padding-left: 0; +} +.input-group-flat .input-group-text:last-child { + padding-right: 0; +} + +/** +Upload files + */ +.form-file-button { + margin-right: 0; + border-right: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} +.input-icon .form-control:not(:last-child), +.input-icon .form-select:not(:last-child) { + padding-left: 2.5rem; +} +.input-icon .form-control:not(:first-child), +.input-icon .form-select:not(:last-child) { + padding-right: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + color: var(--tblr-icon-color); + pointer-events: none; + font-size: 1.2em; +} +.input-icon-addon:last-child { + left: 0; + right: auto; +} + +/* +Color Input + */ +.form-colorinput { + position: relative; + display: inline-block; + margin: 0; + line-height: 1; + cursor: pointer; +} + +.form-colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-colorinput-color { + display: block; + width: 1.5rem; + height: 1.5rem; + color: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 3px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} +.form-colorinput-color:before { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + content: ""; + background: no-repeat center center/1.25rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-colorinput-color:before { + transition: none; + } +} +.form-colorinput-input:checked ~ .form-colorinput-color:before { + opacity: 1; +} +.form-colorinput-input:focus ~ .form-colorinput-color { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-colorinput-light .form-colorinput-color:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} + +/** +Image check + */ +.form-imagecheck { + position: relative; + margin: 0; + cursor: pointer; +} + +.form-imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-imagecheck-figure { + position: relative; + display: block; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; +} +.form-imagecheck-input:focus ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); +} +.form-imagecheck-figure:before { + position: absolute; + top: 0.25rem; + right: 0.25rem; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: #ffffff; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-bg-forms); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-figure:before { + transition: none; + } +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure:before { + background-color: var(--tblr-primary); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-imagecheck-input[type=radio] ~ .form-imagecheck-figure:before { + border-radius: 50%; +} +.form-imagecheck-input[type=radio]:checked ~ .form-imagecheck-figure:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-imagecheck-image { + max-width: 100%; + display: block; + opacity: 0.64; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-image { + transition: none; + } +} +.form-imagecheck-image:first-child { + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.form-imagecheck-image:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} +.form-imagecheck:hover .form-imagecheck-image, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-image, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-image { + opacity: 1; +} + +.form-imagecheck-caption { + padding: 0.25rem; + font-size: 0.765625rem; + color: var(--tblr-secondary); + text-align: center; + transition: color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-caption { + transition: none; + } +} +.form-imagecheck:hover .form-imagecheck-caption, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-caption, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-caption { + color: var(--tblr-body-color); +} + +/* +Select group + */ +.form-selectgroup { + display: inline-flex; + margin: 0 0 -0.5rem -0.5rem; + flex-wrap: wrap; +} +.form-selectgroup .form-selectgroup-item { + margin: 0 0 0.5rem 0.5rem; +} + +.form-selectgroup-vertical { + flex-direction: column; +} + +.form-selectgroup-item { + display: block; + position: relative; +} + +.form-selectgroup-input { + position: absolute; + top: 0; + right: 0; + z-index: -1; + opacity: 0; +} + +.form-selectgroup-label { + position: relative; + display: block; + min-width: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + margin: 0; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-secondary); + background: var(--tblr-bg-forms); + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.3s, background 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-selectgroup-label { + transition: none; + } +} +.form-selectgroup-label .icon:only-child { + margin: 0 -0.25rem; +} +.form-selectgroup-label:hover { + color: var(--tblr-body-color); +} + +.form-selectgroup-check { + display: inline-block; + width: 1.25rem; + height: 1.25rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + vertical-align: middle; + box-shadow: var(--tblr-box-shadow-input); +} +.form-selectgroup-input[type=checkbox] + .form-selectgroup-label .form-selectgroup-check { + border-radius: var(--tblr-border-radius); +} +.form-selectgroup-input[type=radio] + .form-selectgroup-label .form-selectgroup-check { + border-radius: 50%; +} +.form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-check { + background-color: var(--tblr-primary); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-selectgroup-input[type=checkbox]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-selectgroup-input[type=radio]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-selectgroup-check-floated { + position: absolute; + top: 0.5625rem; + left: 0.5625rem; +} + +.form-selectgroup-input:checked + .form-selectgroup-label { + z-index: 1; + color: var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.04); + border-color: var(--tblr-primary); +} + +.form-selectgroup-input:focus + .form-selectgroup-label { + z-index: 2; + color: var(--tblr-primary); + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +/** +Alternate version of form select group + */ +.form-selectgroup-boxes .form-selectgroup-label { + text-align: right; + padding: 1.25rem 1.25rem; + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label { + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-title { + color: var(--tblr-primary); +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-label-content { + opacity: 1; +} + +/** +Select group + */ +.form-selectgroup-pills { + flex-wrap: wrap; + align-items: flex-start; +} +.form-selectgroup-pills .form-selectgroup-item { + flex-grow: 0; +} +.form-selectgroup-pills .form-selectgroup-label { + border-radius: 50px; +} + +/** +Bootstrap color input + */ +.form-control-color::-webkit-color-swatch { + border: none; +} + +/** +Remove the cancel buttons in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/** +Form control dark theme fix + */ +.form-control::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} + +/* +Form check + */ +.form-check { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-check.form-check-highlight .form-check-input:not(:checked) ~ .form-check-label { + color: var(--tblr-secondary); +} +.form-check .form-check-label-off { + color: var(--tblr-secondary); +} +.form-check .form-check-input:checked ~ .form-check-label-off { + display: none; +} +.form-check .form-check-input:not(:checked) ~ .form-check-label-on { + display: none; +} + +.form-check-input { + background-size: 1.25rem; + margin-top: 0rem; + box-shadow: var(--tblr-box-shadow-input); +} +.form-switch .form-check-input { + transition: background-color 0.3s, background-position 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} + +.form-check-label { + display: block; +} +.form-check-label.required:after { + content: "*"; + margin-right: 0.25rem; + color: #d63939; +} + +.form-check-description { + display: block; + color: var(--tblr-secondary); + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.form-check-single { + margin: 0; +} +.form-check-single .form-check-input { + margin: 0; +} + +/* +Form switch + */ +.form-switch .form-check-input { + height: 1.25rem; + margin-top: 0rem; +} + +.form-switch-lg { + padding-right: 3.5rem; + min-height: 1.5rem; +} +.form-switch-lg .form-check-input { + height: 1.5rem; + width: 2.75rem; + background-size: 1.5rem; + margin-right: -3.5rem; +} +.form-switch-lg .form-check-label { + padding-top: 0.125rem; +} + +/*Correction of Form-check position*/ +.form-check-input:checked { + border: none; +} + +.form-select.is-invalid-lite, .form-control.is-invalid-lite, .form-select.is-valid-lite, .form-control.is-valid-lite { + border-color: var(--tblr-border-color) !important; +} + +/** +Legend + */ +.legend { + --tblr-legend-size: 0.75em; + display: inline-block; + background: var(--tblr-border-color); + width: var(--tblr-legend-size); + height: var(--tblr-legend-size); + border-radius: var(--tblr-border-radius-sm); + border: 1px solid var(--tblr-border-color-translucent); +} + +.list-group { + margin-right: 0; + margin-left: 0; +} + +.list-group-header { + background: var(--tblr-bg-surface-tertiary); + padding: 0.5rem 1.25rem; + font-size: 0.75rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + text-transform: uppercase; + color: var(--tblr-secondary); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.list-group-flush > .list-group-header:last-child { + border-bottom-width: 0; +} + +.list-group-item { + background-color: inherit; +} + +.list-group-item.active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + border-right-color: #0054a6; + border-right-width: 2px; +} + +.list-group-item:active, .list-group-item:focus, .list-group-item:hover { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #929dab; + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-bordered .list-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + margin-top: -1px; +} +.list-bordered .list-item:first-child { + border-top: none; +} + +.list-group-hoverable .list-group-item-actions { + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .list-group-hoverable .list-group-item-actions { + transition: none; + } +} +.list-group-hoverable .list-group-item:hover .list-group-item-actions, +.list-group-hoverable .list-group-item-actions.show { + opacity: 1; +} + +.list-group-transparent { + --tblr-list-group-border-radius: 0; + margin: 0 -1.25rem; +} +.list-group-transparent .list-group-item { + background: none; + border: 0; +} +.list-group-transparent .list-group-item .icon { + color: var(--tblr-secondary); +} +.list-group-transparent .list-group-item.active { + font-weight: var(--tblr-font-weight-bold); + color: inherit; + background: var(--tblr-active-bg); +} +.list-group-transparent .list-group-item.active .icon { + color: inherit; +} + +.list-separated-item { + padding: 1rem 0; +} +.list-separated-item:first-child { + padding-top: 0; +} +.list-separated-item:last-child { + padding-bottom: 0; +} +.list-separated-item + .list-separated-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Inline list + */ +.list-inline-item:not(:last-child) { + margin-left: auto; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: " · "; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.loader { + position: relative; + display: block; + width: 2.5rem; + height: 2.5rem; + color: #0054a6; + vertical-align: middle; +} +.loader:after { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + content: ""; + border: 1px var(--tblr-border-style); + border-color: transparent; + border-top-color: currentColor; + border-right-color: currentColor; + border-radius: 100rem; + animation: rotate-360 0.6s linear; + animation-iteration-count: infinite; +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} +.dimmer .loader { + position: absolute; + top: 50%; + left: 0; + right: 0; + display: none; + margin: 0 auto; + transform: translateY(-50%); +} +.dimmer.active .loader { + display: block; +} +.dimmer.active .dimmer-content { + pointer-events: none; + opacity: 0.1; +} + +@keyframes animated-dots { + 0% { + transform: translateX(100%); + } +} +.animated-dots { + display: inline-block; + overflow: hidden; + vertical-align: bottom; +} +.animated-dots:after { + display: inline-block; + content: "..."; + animation: animated-dots 1.2s steps(4, jump-none) infinite; +} + +.modal-content .btn-close { + position: absolute; + top: 0; + left: 0; + width: 3.5rem; + height: 3.5rem; + margin: 0; + padding: 0; + z-index: 10; +} + +.modal-body { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +.modal-body::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .modal-body::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +.modal-body::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +.modal-body::-webkit-scrollbar-track { + background: transparent; +} +.modal-body:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +.modal-body::-webkit-scrollbar-corner { + background: transparent; +} +.modal-body .modal-title { + margin-bottom: 1rem; +} +.modal-body + .modal-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.modal-status { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2px; + background: var(--tblr-secondary); + border-radius: var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0; +} + +.modal-header { + align-items: center; + min-height: 3.5rem; + background: transparent; + padding: 0 1.5rem 0 3.5rem; +} + +.modal-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-bold); + color: inherit; + line-height: 1.4285714286; +} + +.modal-footer { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.modal-blur { + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} + +.modal-full-width { + max-width: none; + margin: 0 0.5rem; +} + +.nav-vertical, +.nav-vertical .nav { + flex-direction: column; + flex-wrap: nowrap; +} +.nav-vertical .nav { + margin-right: 1.25rem; + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding-right: 0.5rem; +} +.nav-vertical .nav-link.active, +.nav-vertical .nav-item.show .nav-link { + font-weight: var(--tblr-font-weight-bold); +} +.nav-vertical.nav-pills { + margin: 0 -0.75rem; +} + +.nav-bordered { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.nav-bordered .nav-item + .nav-item { + margin-right: 1.25rem; +} +.nav-bordered .nav-link { + padding-right: 0; + padding-left: 0; + margin: 0 0 -var(--tblr-border-width); + border: 0; + border-bottom: 2px var(--tblr-border-style) transparent; + color: var(--tblr-secondary); +} +.nav-bordered .nav-link.active, +.nav-bordered .nav-item.show .nav-link { + color: var(--tblr-primary); + border-color: var(--tblr-primary); +} + +.nav-link { + display: flex; + transition: color 0.3s; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} + +.nav-link-toggle { + margin-right: auto; + padding: 0 0.25rem; + transition: transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .nav-link-toggle { + transition: none; + } +} +.nav-link-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(45deg); +} +.nav-link-toggle:after { + margin: 0; +} +.nav-link[aria-expanded=true] .nav-link-toggle { + transform: rotate(-180deg); +} + +.nav-link-icon { + width: 1.25rem; + height: 1.25rem; + margin-left: 0.5rem; + color: var(--tblr-icon-color); +} +.nav-link-icon svg { + display: block; + height: 100%; +} + +.nav-fill .nav-item .nav-link { + justify-content: center; +} + +.stars { + display: inline-flex; + color: #bbc3cd; + font-size: 0.75rem; +} +.stars .star:not(:first-child) { + margin-right: 0.25rem; +} + +.pagination { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.page-link { + min-width: 1.75rem; + border-radius: var(--tblr-border-radius); +} + +.page-item { + text-align: center; +} +.page-item:not(.active) .page-link:hover { + background: transparent; +} +.page-item.page-prev, .page-item.page-next { + flex: 0 0 50%; + text-align: right; +} +.page-item.page-next { + margin-right: auto; + text-align: left; +} + +.page-item-subtitle { + margin-bottom: 2px; + font-size: 12px; + color: var(--tblr-secondary); + text-transform: uppercase; +} +.page-item.disabled .page-item-subtitle { + color: var(--tblr-disabled-color); +} + +.page-item-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-body-color); +} +.page-link:hover .page-item-title { + color: #0054a6; +} +.page-item.disabled .page-item-title { + color: var(--tblr-disabled-color); +} + +@keyframes progress-indeterminate { + 0% { + left: 100%; + right: -35%; + } + 100%, 60% { + left: -90%; + right: 100%; + } +} +/** +Progress + */ +.progress { + position: relative; + width: 100%; + line-height: 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.progress::-webkit-progress-bar { + background: var(--tblr-progress-bg); +} +.progress::-webkit-progress-value { + background-color: var(--tblr-primary); +} +.progress::-moz-progress-bar { + background-color: var(--tblr-primary); +} +.progress::-ms-fill { + background-color: var(--tblr-primary); + border: none; +} + +.progress-sm { + height: 0.25rem; +} + +/** +Progress bar + */ +.progress-bar { + height: 100%; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + position: absolute; + top: 0; + bottom: 0; + right: 0; + content: ""; + background-color: inherit; + will-change: left, right; +} +.progress-bar-indeterminate:before { + animation: progress-indeterminate 1.5s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-separated .progress-bar { + box-shadow: 0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface)); +} + +/** +Progressbg + */ +.progressbg { + position: relative; + padding: 0.25rem 0.5rem; + display: flex; +} + +.progressbg-text { + position: relative; + z-index: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.progressbg-progress { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 0; + height: 100%; + background: transparent; + pointer-events: none; +} + +.progressbg-value { + font-weight: var(--tblr-font-weight-medium); + margin-right: auto; + padding-right: 2rem; +} + +.ribbon { + --tblr-ribbon-margin: 0.25rem; + --tblr-ribbon-border-radius: var(--tblr-border-radius); + position: absolute; + top: 0.75rem; + left: calc(-1 * var(--tblr-ribbon-margin)); + z-index: 1; + padding: 0.25rem 0.75rem; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + line-height: 1; + color: #ffffff; + text-align: center; + text-transform: uppercase; + background: var(--tblr-primary); + border-color: var(--tblr-primary); + border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2rem; + min-width: 2rem; +} +.ribbon:before { + position: absolute; + left: 0; + bottom: 100%; + width: 0; + height: 0; + content: ""; + filter: brightness(70%); + border: calc(var(--tblr-ribbon-margin) * 0.5) var(--tblr-border-style); + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} +.ribbon.bg-blue { + border-color: var(--tblr-blue); +} +.ribbon.bg-blue-lt { + border-color: rgba(var(--tblr-blue-rgb), 0.1) !important; +} +.ribbon.bg-azure { + border-color: var(--tblr-azure); +} +.ribbon.bg-azure-lt { + border-color: rgba(var(--tblr-azure-rgb), 0.1) !important; +} +.ribbon.bg-indigo { + border-color: var(--tblr-indigo); +} +.ribbon.bg-indigo-lt { + border-color: rgba(var(--tblr-indigo-rgb), 0.1) !important; +} +.ribbon.bg-purple { + border-color: var(--tblr-purple); +} +.ribbon.bg-purple-lt { + border-color: rgba(var(--tblr-purple-rgb), 0.1) !important; +} +.ribbon.bg-pink { + border-color: var(--tblr-pink); +} +.ribbon.bg-pink-lt { + border-color: rgba(var(--tblr-pink-rgb), 0.1) !important; +} +.ribbon.bg-red { + border-color: var(--tblr-red); +} +.ribbon.bg-red-lt { + border-color: rgba(var(--tblr-red-rgb), 0.1) !important; +} +.ribbon.bg-orange { + border-color: var(--tblr-orange); +} +.ribbon.bg-orange-lt { + border-color: rgba(var(--tblr-orange-rgb), 0.1) !important; +} +.ribbon.bg-yellow { + border-color: var(--tblr-yellow); +} +.ribbon.bg-yellow-lt { + border-color: rgba(var(--tblr-yellow-rgb), 0.1) !important; +} +.ribbon.bg-lime { + border-color: var(--tblr-lime); +} +.ribbon.bg-lime-lt { + border-color: rgba(var(--tblr-lime-rgb), 0.1) !important; +} +.ribbon.bg-green { + border-color: var(--tblr-green); +} +.ribbon.bg-green-lt { + border-color: rgba(var(--tblr-green-rgb), 0.1) !important; +} +.ribbon.bg-teal { + border-color: var(--tblr-teal); +} +.ribbon.bg-teal-lt { + border-color: rgba(var(--tblr-teal-rgb), 0.1) !important; +} +.ribbon.bg-cyan { + border-color: var(--tblr-cyan); +} +.ribbon.bg-cyan-lt { + border-color: rgba(var(--tblr-cyan-rgb), 0.1) !important; +} +.ribbon .icon { + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; +} + +.ribbon-top { + top: calc(-1 * var(--tblr-ribbon-margin)); + left: 0.75rem; + width: 2rem; + padding: 0.5rem 0; + border-radius: var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); +} +.ribbon-top:before { + top: 0; + left: 100%; + bottom: auto; + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} +.ribbon-top.ribbon-start { + left: auto; + right: 0.75rem; +} +.ribbon-top.ribbon-start:before { + top: 0; + left: 100%; + right: auto; +} + +.ribbon-start { + left: auto; + right: calc(-1 * var(--tblr-ribbon-margin)); +} +.ribbon-start:before { + top: auto; + bottom: 100%; + right: 0; + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} + +.ribbon-bottom { + top: auto; + bottom: 0.75rem; +} + +.ribbon-bookmark { + padding-right: 0.25rem; + border-radius: 0 0 0 var(--tblr-ribbon-border-radius); +} +.ribbon-bookmark:after { + position: absolute; + top: 0; + left: 100%; + display: block; + width: 0; + height: 0; + content: ""; + border: 1rem var(--tblr-border-style); + border-color: inherit; + border-left-width: 0; + border-right-color: transparent; + border-right-width: 0.5rem; +} +.ribbon-bookmark.ribbon-left { + padding-left: 0.5rem; +} +.ribbon-bookmark.ribbon-left:after { + left: auto; + right: 100%; + border-left-color: transparent; + border-left-width: 0.5rem; + border-right-width: 0; +} +.ribbon-bookmark.ribbon-top { + padding-left: 0; + padding-bottom: 0.25rem; + padding-right: 0; + border-radius: var(--tblr-ribbon-border-radius) 0 0 0; +} +.ribbon-bookmark.ribbon-top:after { + top: 100%; + left: 0; + right: 0; + border-color: inherit; + border-width: 1rem; + border-top-width: 0; + border-bottom-color: transparent; + border-bottom-width: 0.5rem; +} + +/** +Markdown + */ +.markdown { + line-height: 1.7142857143; +} +.markdown > :first-child { + margin-top: 0; +} +.markdown > :last-child, +.markdown > :last-child .highlight { + margin-bottom: 0; +} +@media (min-width: 768px) { + .markdown > hr, .markdown > .hr { + margin-top: 3em; + margin-bottom: 3em; + } +} +.markdown > h1, .markdown > .h1, .markdown > h2, .markdown > .h2, .markdown > h3, .markdown > .h3, .markdown > h4, .markdown > .h4, .markdown > h5, .markdown > .h5, .markdown > h6, .markdown > .h6 { + font-weight: var(--tblr-font-weight-bold); +} +.markdown > blockquote { + font-size: 1rem; + margin: 1.5rem 0; + padding: 0.5rem 1.5rem; +} +.markdown > img { + border-radius: var(--tblr-border-radius); +} + +.placeholder:not(.btn):not([class*=bg-]) { + background-color: currentColor !important; +} +.placeholder:not(.avatar):not([class*=card-img-]) { + border-radius: var(--tblr-border-radius); +} + +.steps { + --tblr-steps-color: var(--tblr-primary); + --tblr-steps-inactive-color: var(--tblr-border-color); + --tblr-steps-dot-size: .5rem; + --tblr-steps-border-width: 2px; + display: flex; + flex-wrap: nowrap; + width: 100%; + padding: 0; + margin: 0; + list-style: none; +} + +.steps-blue { + --tblr-steps-color: var(--tblr-blue); +} + +.steps-azure { + --tblr-steps-color: var(--tblr-azure); +} + +.steps-indigo { + --tblr-steps-color: var(--tblr-indigo); +} + +.steps-purple { + --tblr-steps-color: var(--tblr-purple); +} + +.steps-pink { + --tblr-steps-color: var(--tblr-pink); +} + +.steps-red { + --tblr-steps-color: var(--tblr-red); +} + +.steps-orange { + --tblr-steps-color: var(--tblr-orange); +} + +.steps-yellow { + --tblr-steps-color: var(--tblr-yellow); +} + +.steps-lime { + --tblr-steps-color: var(--tblr-lime); +} + +.steps-green { + --tblr-steps-color: var(--tblr-green); +} + +.steps-teal { + --tblr-steps-color: var(--tblr-teal); +} + +.steps-cyan { + --tblr-steps-color: var(--tblr-cyan); +} + +.step-item { + position: relative; + flex: 1 1 0; + min-height: 1rem; + margin-top: 0; + color: inherit; + text-align: center; + cursor: default; + padding-top: calc(var(--tblr-steps-dot-size)); +} +a.step-item { + cursor: pointer; +} +a.step-item:hover { + color: inherit; +} + +.step-item:after, .step-item:before { + background: var(--tblr-steps-color); +} +.step-item:not(:last-child):after { + position: absolute; + right: 50%; + width: 100%; + content: ""; + transform: translateY(-50%); +} +.step-item:after { + top: calc(var(--tblr-steps-dot-size) * 0.5); + height: var(--tblr-steps-border-width); +} +.step-item:before { + content: ""; + position: absolute; + top: 0; + right: 50%; + z-index: 1; + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + transform: translateX(50%); + color: var(--tblr-white); + width: var(--tblr-steps-dot-size); + height: var(--tblr-steps-dot-size); +} +.step-item.active { + font-weight: var(--tblr-font-weight-bold); +} +.step-item.active:after { + background: var(--tblr-steps-inactive-color); +} +.step-item.active ~ .step-item { + color: var(--tblr-disabled-color); +} +.step-item.active ~ .step-item:after, .step-item.active ~ .step-item:before { + background: var(--tblr-steps-inactive-color); +} + +.steps-counter { + --tblr-steps-dot-size: 1.5rem; + counter-reset: steps; +} +.steps-counter .step-item { + counter-increment: steps; +} +.steps-counter .step-item:before { + content: counter(steps); +} + +.steps-vertical { + --tblr-steps-dot-offset: 6px; + flex-direction: column; +} +.steps-vertical.steps-counter { + --tblr-steps-dot-offset: -2px; +} +.steps-vertical .step-item { + text-align: right; + padding-top: 0; + padding-right: calc(var(--tblr-steps-dot-size) + 1rem); + min-height: auto; +} +.steps-vertical .step-item:not(:first-child) { + margin-top: 1rem; +} +.steps-vertical .step-item:before { + top: var(--tblr-steps-dot-offset); + right: 0; + transform: translate(0, 0); +} +.steps-vertical .step-item:not(:last-child):after { + position: absolute; + content: ""; + transform: translateX(50%); + top: var(--tblr-steps-dot-offset); + right: calc(var(--tblr-steps-dot-size) * 0.5); + width: var(--tblr-steps-border-width); + height: calc(100% + 1rem); +} + +@keyframes status-pulsate-main { + 40% { + transform: scale(1.25, 1.25); + } + 60% { + transform: scale(1.25, 1.25); + } +} +@keyframes status-pulsate-secondary { + 10% { + transform: scale(1, 1); + } + 30% { + transform: scale(3, 3); + } + 80% { + transform: scale(3, 3); + } + 100% { + transform: scale(1, 1); + } +} +@keyframes status-pulsate-tertiary { + 25% { + transform: scale(1, 1); + } + 80% { + transform: scale(3, 3); + opacity: 0; + } + 100% { + transform: scale(3, 3); + opacity: 0; + } +} +.status { + --tblr-status-height: 1.5rem; + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; + display: inline-flex; + align-items: center; + height: var(--tblr-status-height); + padding: 0.25rem 0.75rem; + gap: 0.5rem; + color: var(--tblr-status-color); + background: rgba(var(--tblr-status-color-rgb), 0.1); + font-size: 0.875rem; + text-transform: none; + letter-spacing: normal; + border-radius: 100rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + margin: 0; +} +.status .status-dot { + background: var(--tblr-status-color); +} +.status .icon { + font-size: 1.25rem; +} + +.status-lite { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + background: transparent !important; + color: var(--tblr-body-color) !important; +} + +.status-primary { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-secondary { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-success { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-info { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-warning { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-danger { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-light { + --tblr-status-color: #fcfdfe; + --tblr-status-color-rgb: 252, 253, 254; +} + +.status-dark { + --tblr-status-color: #182433; + --tblr-status-color-rgb: 24, 36, 51; +} + +.status-muted { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-blue { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-azure { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-indigo { + --tblr-status-color: #4263eb; + --tblr-status-color-rgb: 66, 99, 235; +} + +.status-purple { + --tblr-status-color: #ae3ec9; + --tblr-status-color-rgb: 174, 62, 201; +} + +.status-pink { + --tblr-status-color: #d6336c; + --tblr-status-color-rgb: 214, 51, 108; +} + +.status-red { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-orange { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-yellow { + --tblr-status-color: #f59f00; + --tblr-status-color-rgb: 245, 159, 0; +} + +.status-lime { + --tblr-status-color: #74b816; + --tblr-status-color-rgb: 116, 184, 22; +} + +.status-green { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-teal { + --tblr-status-color: #0ca678; + --tblr-status-color-rgb: 12, 166, 120; +} + +.status-cyan { + --tblr-status-color: #17a2b8; + --tblr-status-color-rgb: 23, 162, 184; +} + +.status-facebook { + --tblr-status-color: #1877f2; + --tblr-status-color-rgb: 24, 119, 242; +} + +.status-twitter { + --tblr-status-color: #1da1f2; + --tblr-status-color-rgb: 29, 161, 242; +} + +.status-linkedin { + --tblr-status-color: #0a66c2; + --tblr-status-color-rgb: 10, 102, 194; +} + +.status-google { + --tblr-status-color: #dc4e41; + --tblr-status-color-rgb: 220, 78, 65; +} + +.status-youtube { + --tblr-status-color: #ff0000; + --tblr-status-color-rgb: 255, 0, 0; +} + +.status-vimeo { + --tblr-status-color: #1ab7ea; + --tblr-status-color-rgb: 26, 183, 234; +} + +.status-dribbble { + --tblr-status-color: #ea4c89; + --tblr-status-color-rgb: 234, 76, 137; +} + +.status-github { + --tblr-status-color: #181717; + --tblr-status-color-rgb: 24, 23, 23; +} + +.status-instagram { + --tblr-status-color: #e4405f; + --tblr-status-color-rgb: 228, 64, 95; +} + +.status-pinterest { + --tblr-status-color: #bd081c; + --tblr-status-color-rgb: 189, 8, 28; +} + +.status-vk { + --tblr-status-color: #6383a8; + --tblr-status-color-rgb: 99, 131, 168; +} + +.status-rss { + --tblr-status-color: #ffa500; + --tblr-status-color-rgb: 255, 165, 0; +} + +.status-flickr { + --tblr-status-color: #0063dc; + --tblr-status-color-rgb: 0, 99, 220; +} + +.status-bitbucket { + --tblr-status-color: #0052cc; + --tblr-status-color-rgb: 0, 82, 204; +} + +.status-tabler { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-dot { + --tblr-status-dot-color: var(--tblr-status-color, #667382); + --tblr-status-size: 0.5rem; + position: relative; + display: inline-block; + width: var(--tblr-status-size); + height: var(--tblr-status-size); + background: var(--tblr-status-dot-color); + border-radius: 100rem; +} + +.status-dot-animated:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background: inherit; + border-radius: inherit; + opacity: 0.6; + animation: 1s linear 2s backwards infinite status-pulsate-tertiary; +} + +.status-indicator { + --tblr-status-indicator-size: 2.5rem; + --tblr-status-indicator-color: var(--tblr-status-color, #667382); + display: block; + position: relative; + width: var(--tblr-status-indicator-size); + height: var(--tblr-status-indicator-size); +} + +.status-indicator-circle { + --tblr-status-circle-size: .75rem; + position: absolute; + right: 50%; + top: 50%; + margin: calc(var(--tblr-status-circle-size) / -2) calc(var(--tblr-status-circle-size) / -2) 0 0; + width: var(--tblr-status-circle-size); + height: var(--tblr-status-circle-size); + border-radius: 100rem; + background: var(--tblr-status-color); +} +.status-indicator-circle:nth-child(1) { + z-index: 3; +} +.status-indicator-circle:nth-child(2) { + z-index: 2; + opacity: 0.1; +} +.status-indicator-circle:nth-child(3) { + z-index: 1; + opacity: 0.3; +} + +.status-indicator-animated .status-indicator-circle:nth-child(1) { + animation: 2s linear 1s infinite backwards status-pulsate-main; +} +.status-indicator-animated .status-indicator-circle:nth-child(2) { + animation: 2s linear 1s infinite backwards status-pulsate-secondary; +} +.status-indicator-animated .status-indicator-circle:nth-child(3) { + animation: 2s linear 1s infinite backwards status-pulsate-tertiary; +} + +.switch-icon { + display: inline-block; + line-height: 1; + border: 0; + padding: 0; + background: transparent; + width: 1.25rem; + height: 1.25rem; + vertical-align: bottom; + position: relative; + cursor: pointer; +} +.switch-icon.disabled { + pointer-events: none; + opacity: 0.4; +} +.switch-icon:focus { + outline: none; +} +.switch-icon svg { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a, +.switch-icon .switch-icon-b { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a { + opacity: 1; +} +.switch-icon .switch-icon-b { + position: absolute; + top: 0; + right: 0; + opacity: 0; +} +.switch-icon.active .switch-icon-a { + opacity: 0; +} +.switch-icon.active .switch-icon-b { + opacity: 1; +} + +.switch-icon-fade .switch-icon-a, +.switch-icon-fade .switch-icon-b { + transition: opacity 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-fade .switch-icon-a, + .switch-icon-fade .switch-icon-b { + transition: none; + } +} + +.switch-icon-scale .switch-icon-a, +.switch-icon-scale .switch-icon-b { + transition: opacity 0.5s, transform 0s 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale .switch-icon-a, + .switch-icon-scale .switch-icon-b { + transition: none; + } +} +.switch-icon-scale .switch-icon-b { + transform: scale(1.5); +} +.switch-icon-scale.active .switch-icon-a, +.switch-icon-scale.active .switch-icon-b { + transition: opacity 0s, transform 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale.active .switch-icon-a, + .switch-icon-scale.active .switch-icon-b { + transition: none; + } +} +.switch-icon-scale.active .switch-icon-b { + transform: scale(1); +} + +.switch-icon-flip { + perspective: 10em; +} +.switch-icon-flip .switch-icon-a, +.switch-icon-flip .switch-icon-b { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform-style: preserve-3d; + transition: opacity 0s 0.2s, transform 0.4s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-flip .switch-icon-a, + .switch-icon-flip .switch-icon-b { + transition: none; + } +} +.switch-icon-flip .switch-icon-a { + opacity: 1; + transform: rotateY(0deg); +} +.switch-icon-flip .switch-icon-b { + opacity: 1; + transform: rotateY(180deg); +} +.switch-icon-flip.active .switch-icon-a { + opacity: 1; + transform: rotateY(-180deg); +} +.switch-icon-flip.active .switch-icon-b { + opacity: 1; + transform: rotateY(0deg); +} + +.switch-icon-slide-up, +.switch-icon-slide-right, +.switch-icon-slide-left, +.switch-icon-slide-down { + overflow: hidden; +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-down .switch-icon-a, +.switch-icon-slide-down .switch-icon-b { + transition: opacity 0.3s, transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-slide-up .switch-icon-a, + .switch-icon-slide-up .switch-icon-b, + .switch-icon-slide-right .switch-icon-a, + .switch-icon-slide-right .switch-icon-b, + .switch-icon-slide-left .switch-icon-a, + .switch-icon-slide-left .switch-icon-b, + .switch-icon-slide-down .switch-icon-a, + .switch-icon-slide-down .switch-icon-b { + transition: none; + } +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-down .switch-icon-b { + transform: translateY(100%); +} +.switch-icon-slide-up.active .switch-icon-a, +.switch-icon-slide-right.active .switch-icon-a, +.switch-icon-slide-left.active .switch-icon-a, +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(-100%); +} +.switch-icon-slide-up.active .switch-icon-b, +.switch-icon-slide-right.active .switch-icon-b, +.switch-icon-slide-left.active .switch-icon-b, +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.switch-icon-slide-right .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-left .switch-icon-b { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-a { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-left .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-right .switch-icon-b { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-a { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-down .switch-icon-b { + transform: translateY(-100%); +} +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(100%); +} +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.table thead th, .markdown > table thead th { + color: var(--tblr-secondary); + background: var(--tblr-bg-surface-tertiary); + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + white-space: nowrap; +} +@media print { + .table thead th, .markdown > table thead th { + background: transparent; + } +} + +.table-responsive .table, .table-responsive .markdown > table { + margin-bottom: 0; +} +.table-responsive + .card-footer { + border-top: 0; +} + +.table-transparent thead th { + background: transparent; +} + +.table-nowrap > :not(caption) > * > * { + white-space: nowrap; +} + +.table-vcenter > :not(caption) > * > * { + vertical-align: middle; +} + +.table-center > :not(caption) > * > * { + text-align: center; +} + +.td-truncate { + max-width: 1px; + width: 100%; +} + +.table-mobile { + display: block; +} +.table-mobile thead { + display: none; +} +.table-mobile tbody, +.table-mobile tr { + display: flex; + flex-direction: column; +} +.table-mobile td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; +} +.table-mobile td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; +} +.table-mobile tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.table-mobile .btn { + display: block; +} +@media (max-width: 575.98px) { + .table-mobile-sm { + display: block; + } + .table-mobile-sm thead { + display: none; + } + .table-mobile-sm tbody, + .table-mobile-sm tr { + display: flex; + flex-direction: column; + } + .table-mobile-sm td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-sm td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-sm tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-sm .btn { + display: block; + } +} +@media (max-width: 767.98px) { + .table-mobile-md { + display: block; + } + .table-mobile-md thead { + display: none; + } + .table-mobile-md tbody, + .table-mobile-md tr { + display: flex; + flex-direction: column; + } + .table-mobile-md td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-md td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-md tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-md .btn { + display: block; + } +} +@media (max-width: 991.98px) { + .table-mobile-lg { + display: block; + } + .table-mobile-lg thead { + display: none; + } + .table-mobile-lg tbody, + .table-mobile-lg tr { + display: flex; + flex-direction: column; + } + .table-mobile-lg td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-lg td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-lg tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-lg .btn { + display: block; + } +} +@media (max-width: 1199.98px) { + .table-mobile-xl { + display: block; + } + .table-mobile-xl thead { + display: none; + } + .table-mobile-xl tbody, + .table-mobile-xl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xl .btn { + display: block; + } +} +@media (max-width: 1399.98px) { + .table-mobile-xxl { + display: block; + } + .table-mobile-xxl thead { + display: none; + } + .table-mobile-xxl tbody, + .table-mobile-xxl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xxl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xxl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xxl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xxl .btn { + display: block; + } +} + +/** +Table sort + */ +.table-sort { + font: inherit; + color: inherit; + text-transform: inherit; + letter-spacing: inherit; + border: 0; + background: inherit; + display: block; + width: 100%; + text-align: inherit; + transition: color 0.3s; + margin: -0.5rem -0.75rem; + padding: 0.5rem 0.75rem; +} +@media (prefers-reduced-motion: reduce) { + .table-sort { + transition: none; + } +} +.table-sort:hover, .table-sort.asc, .table-sort.desc { + color: var(--tblr-body-color); +} +.table-sort:after { + content: ""; + display: inline-flex; + width: 1rem; + height: 1rem; + vertical-align: bottom; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); + background: currentColor; + margin-right: 0.25rem; +} +.table-sort.asc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} +.table-sort.desc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} + +.table-borderless thead th { + background: transparent; +} + +.tag { + --tblr-tag-height: 1.5rem; + border: 1px solid var(--tblr-border-color); + display: inline-flex; + align-items: center; + height: var(--tblr-tag-height); + border-radius: var(--tblr-border-radius); + padding: 0 0.5rem; + background: var(--tblr-bg-surface); + box-shadow: var(--tblr-box-shadow-input); + gap: 0.5rem; +} +.tag .btn-close { + margin-left: -0.25rem; + margin-right: -0.125rem; + padding: 0; + width: 1rem; + height: 1rem; + font-size: 0.5rem; +} + +.tag-badge { + --tblr-badge-font-size: 0.625rem; + --tblr-badge-padding-x: .25rem; + --tblr-badge-padding-y: .125rem; + margin-left: -0.25rem; +} + +.tag-avatar, +.tag-flag, +.tag-payment, +.tag-icon, +.tag-check { + margin-right: -0.25rem; +} + +.tag-icon { + color: var(--tblr-secondary); + margin-left: -0.125rem; + width: 1rem; + height: 1rem; +} + +.tag-check { + width: 1rem; + height: 1rem; + background-size: 1rem; +} + +.tags-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.toast { + background: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.toast .toast-header { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.toast button[data-bs-dismiss=toast] { + outline: none; +} + +.toast-primary { + --tblr-toast-color: #0054a6; +} + +.toast-secondary { + --tblr-toast-color: #667382; +} + +.toast-success { + --tblr-toast-color: #2fb344; +} + +.toast-info { + --tblr-toast-color: #4299e1; +} + +.toast-warning { + --tblr-toast-color: #f76707; +} + +.toast-danger { + --tblr-toast-color: #d63939; +} + +.toast-light { + --tblr-toast-color: #fcfdfe; +} + +.toast-dark { + --tblr-toast-color: #182433; +} + +.toast-muted { + --tblr-toast-color: #667382; +} + +.toast-blue { + --tblr-toast-color: #0054a6; +} + +.toast-azure { + --tblr-toast-color: #4299e1; +} + +.toast-indigo { + --tblr-toast-color: #4263eb; +} + +.toast-purple { + --tblr-toast-color: #ae3ec9; +} + +.toast-pink { + --tblr-toast-color: #d6336c; +} + +.toast-red { + --tblr-toast-color: #d63939; +} + +.toast-orange { + --tblr-toast-color: #f76707; +} + +.toast-yellow { + --tblr-toast-color: #f59f00; +} + +.toast-lime { + --tblr-toast-color: #74b816; +} + +.toast-green { + --tblr-toast-color: #2fb344; +} + +.toast-teal { + --tblr-toast-color: #0ca678; +} + +.toast-cyan { + --tblr-toast-color: #17a2b8; +} + +.toast-facebook { + --tblr-toast-color: #1877f2; +} + +.toast-twitter { + --tblr-toast-color: #1da1f2; +} + +.toast-linkedin { + --tblr-toast-color: #0a66c2; +} + +.toast-google { + --tblr-toast-color: #dc4e41; +} + +.toast-youtube { + --tblr-toast-color: #ff0000; +} + +.toast-vimeo { + --tblr-toast-color: #1ab7ea; +} + +.toast-dribbble { + --tblr-toast-color: #ea4c89; +} + +.toast-github { + --tblr-toast-color: #181717; +} + +.toast-instagram { + --tblr-toast-color: #e4405f; +} + +.toast-pinterest { + --tblr-toast-color: #bd081c; +} + +.toast-vk { + --tblr-toast-color: #6383a8; +} + +.toast-rss { + --tblr-toast-color: #ffa500; +} + +.toast-flickr { + --tblr-toast-color: #0063dc; +} + +.toast-bitbucket { + --tblr-toast-color: #0052cc; +} + +.toast-tabler { + --tblr-toast-color: #0054a6; +} + +.toolbar { + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + margin: 0 -0.5rem; +} +.toolbar > * { + margin: 0 0.5rem; +} + +.tracking { + --tblr-tracking-height: 1.5rem; + --tblr-tracking-gap-width: 0.125rem; + --tblr-tracking-block-border-radius: var(--tblr-border-radius); + display: flex; + gap: var(--tblr-tracking-gap-width); +} + +.tracking-squares { + --tblr-tracking-block-border-radius: var(--tblr-border-radius-sm); +} +.tracking-squares .tracking-block { + height: auto; +} +.tracking-squares .tracking-block:before { + content: ""; + display: block; + padding-top: 100%; +} + +.tracking-block { + flex: 1; + border-radius: var(--tblr-tracking-block-border-radius); + height: var(--tblr-tracking-height); + min-width: 0.25rem; + background: var(--tblr-border-color); +} + +.timeline { + --tblr-timeline-icon-size: 2.5rem; + position: relative; + list-style: none; + padding: 0; +} + +.timeline-event { + position: relative; +} +.timeline-event:not(:last-child) { + margin-bottom: var(--tblr-page-padding); +} +.timeline-event:not(:last-child):before { + content: ""; + position: absolute; + top: var(--tblr-timeline-icon-size); + right: calc(var(--tblr-timeline-icon-size) / 2); + bottom: calc(-1 * var(--tblr-page-padding)); + width: var(--tblr-border-width); + background-color: var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.timeline-event-icon { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: var(--tblr-timeline-icon-size, 2.5rem); + height: var(--tblr-timeline-icon-size, 2.5rem); + background: var(--tblr-gray-200); + color: var(--tblr-secondary); + border-radius: var(--tblr-border-radius); + z-index: 5; +} + +.timeline-event-card { + margin-right: calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding)); +} + +.timeline-simple .timeline-event-icon { + display: none; +} +.timeline-simple .timeline-event-card { + margin-right: 0; +} + +/** +Horizontal rules + */ +/** +Hr text + */ +.hr-text { + display: flex; + align-items: center; + margin: 2rem 0; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + height: 1px; +} +.hr-text:after, .hr-text:before { + flex: 1 1 auto; + height: 1px; + background-color: var(--tblr-border-color); +} +.hr-text:before { + content: ""; + margin-left: 0.5rem; +} +.hr-text:after { + content: ""; + margin-right: 0.5rem; +} +.hr-text > *:first-child { + padding-left: 0.5rem; + padding-right: 0; + color: var(--tblr-secondary); +} +.hr-text.hr-text-right:before { + content: none; +} +.hr-text.hr-text-left > *:first-child { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.hr-text.hr-text-left:before { + content: ""; +} +.hr-text.hr-text-left:after { + content: none; +} +.hr-text.hr-text-right > *:first-child { + padding-left: 0; + padding-right: 0.5rem; +} +.card > .hr-text { + margin: 0; +} + +.hr-text-spaceless { + margin: -0.5rem 0; +} + +.lead { + line-height: 1.4; +} + +a { + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a, +.h1 a, +.h2 a, +.h3 a, +.h4 a, +.h5 a, +.h6 a { + color: inherit; +} +h1 a:hover, +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +h6 a:hover, +.h1 a:hover, +.h2 a:hover, +.h3 a:hover, +.h4 a:hover, +.h5 a:hover, +.h6 a:hover { + color: inherit; +} + +h1, +.h1 { + font-size: var(--tblr-font-size-h1); + line-height: var(--tblr-line-height-h1); +} + +h2, +.h2 { + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h2); +} + +h3, +.h3 { + font-size: var(--tblr-font-size-h3); + line-height: var(--tblr-line-height-h3); +} + +h4, +.h4 { + font-size: var(--tblr-font-size-h4); + line-height: var(--tblr-line-height-h4); +} + +h5, +.h5 { + font-size: var(--tblr-font-size-h5); + line-height: var(--tblr-line-height-h5); +} + +h6, +.h6 { + font-size: var(--tblr-font-size-h6); + line-height: var(--tblr-line-height-h6); +} + +strong, +.strong, +b { + font-weight: var(--tblr-font-weight-bold); +} + +blockquote { + padding-right: 1rem; + border-right: 2px var(--tblr-border-style) var(--tblr-border-color); +} +blockquote p { + margin-bottom: 1rem; +} +blockquote cite { + display: block; + text-align: left; +} +blockquote cite:before { + content: "— "; +} + +ul, ol { + padding-right: 1.5rem; +} + +hr, .hr { + margin: 2rem 0; +} + +dl dd:last-child { + margin-bottom: 0; +} + +pre { + padding: 1rem; + background: var(--tblr-bg-surface-dark); + color: var(--tblr-light); + border-radius: var(--tblr-border-radius); +} +pre code { + background: transparent; +} + +code { + background: var(--tblr-code-bg); + padding: 2px 4px; + border-radius: var(--tblr-border-radius); +} + +kbd, +.kbd { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + display: inline-block; + box-sizing: border-box; + max-width: 100%; + font-size: var(--tblr-font-size-h5); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + vertical-align: baseline; + border-radius: var(--tblr-border-radius); +} + +img { + max-width: 100%; +} + +.list-unstyled { + margin-right: 0; +} + +/** +Selection + */ +::-moz-selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} +::selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} + +/** +Links + */ +[class^=link-].disabled, [class*=" link-"].disabled { + color: var(--tblr-disabled-color); + pointer-events: none; +} + +/** +Subheader + */ +.subheader { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.chart { + display: block; + min-height: 10rem; +} +.chart text { + font-family: inherit; +} + +.chart-sm { + height: 2.5rem; +} + +.chart-lg { + height: 15rem; +} + +.chart-square { + height: 5.75rem; +} + +/** +Chart sparkline + */ +.chart-sparkline { + position: relative; + width: 4rem; + height: 2.5rem; + line-height: 1; + min-height: 0 !important; +} + +.chart-sparkline-sm { + height: 1.5rem; +} + +.chart-sparkline-square { + width: 2.5rem; +} + +.chart-sparkline-wide { + width: 6rem; +} + +.chart-sparkline-label { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.625rem; +} +.chart-sparkline-label .icon { + width: 1rem; + height: 1rem; + font-size: 1rem; +} + +.offcanvas-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14); +} + +.offcanvas-footer { + padding: 1.5rem 1.5rem; +} + +.offcanvas-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.5rem; +} + +.offcanvas-narrow { + width: 20rem; +} + +.chat-bubbles { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.chat-bubble { + background: var(--tblr-bg-surface-secondary); + border-radius: var(--tblr-border-radius-lg); + padding: 1rem; + position: relative; +} + +.chat-bubble-me { + background-color: var(--tblr-primary-lt); + box-shadow: none; +} + +.chat-bubble-title { + margin-bottom: 0.25rem; +} + +.chat-bubble-author { + font-weight: 600; +} + +.chat-bubble-date { + color: var(--tblr-secondary); +} + +.chat-bubble-body > *:last-child { + margin-bottom: 0; +} + +.bg-white-overlay { + color: #ffffff; + background-color: rgba(252, 253, 254, 0.24); +} + +.bg-dark-overlay { + color: #ffffff; + background-color: rgba(24, 36, 51, 0.24); +} + +.bg-cover { + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-primary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-primary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-primary { + border-color: #0054a6 !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-secondary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-secondary { + border-color: #667382 !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-success-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-success { + border-color: #2fb344 !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-info-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-info { + border-color: #4299e1 !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-warning-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-warning { + border-color: #f76707 !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-danger-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-danger { + border-color: #d63939 !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-light-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-light { + border-color: #fcfdfe !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dark-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dark { + border-color: #182433 !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-muted-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-muted { + border-color: #667382 !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-blue-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-blue { + border-color: #0054a6 !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-azure-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-azure { + border-color: #4299e1 !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-indigo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-indigo { + border-color: #4263eb !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-purple-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-purple { + border-color: #ae3ec9 !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pink-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pink { + border-color: #d6336c !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-red-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-red { + border-color: #d63939 !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-orange-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-orange { + border-color: #f76707 !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-yellow-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-yellow { + border-color: #f59f00 !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-lime-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-lime { + border-color: #74b816 !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-green-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-green { + border-color: #2fb344 !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-teal-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-teal { + border-color: #0ca678 !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-cyan-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-cyan { + border-color: #17a2b8 !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-facebook-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-facebook { + border-color: #1877f2 !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-twitter-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-twitter { + border-color: #1da1f2 !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-linkedin-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-linkedin { + border-color: #0a66c2 !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-google-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-google { + border-color: #dc4e41 !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-youtube-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-youtube { + border-color: #ff0000 !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vimeo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vimeo { + border-color: #1ab7ea !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dribbble-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dribbble { + border-color: #ea4c89 !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-github-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-github { + border-color: #181717 !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-instagram-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-instagram { + border-color: #e4405f !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pinterest-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pinterest { + border-color: #bd081c !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vk-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vk { + border-color: #6383a8 !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-rss-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-rss { + border-color: #ffa500 !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-flickr-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-flickr { + border-color: #0063dc !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-bitbucket-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-bitbucket { + border-color: #0052cc !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-tabler-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-tabler { + border-color: #0054a6 !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-white-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-white { + border-color: #ffffff !important; +} + +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-primary-fg { + color: var(--tblr-primary-fg) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary-fg { + color: var(--tblr-secondary-fg) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success-fg { + color: var(--tblr-success-fg) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info-fg { + color: var(--tblr-info-fg) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning-fg { + color: var(--tblr-warning-fg) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger-fg { + color: var(--tblr-danger-fg) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light-fg { + color: var(--tblr-light-fg) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark-fg { + color: var(--tblr-dark-fg) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted-fg { + color: var(--tblr-muted-fg) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-blue-fg { + color: var(--tblr-blue-fg) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure-fg { + color: var(--tblr-azure-fg) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo-fg { + color: var(--tblr-indigo-fg) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple-fg { + color: var(--tblr-purple-fg) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink-fg { + color: var(--tblr-pink-fg) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red-fg { + color: var(--tblr-red-fg) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange-fg { + color: var(--tblr-orange-fg) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow-fg { + color: var(--tblr-yellow-fg) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime-fg { + color: var(--tblr-lime-fg) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green-fg { + color: var(--tblr-green-fg) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal-fg { + color: var(--tblr-teal-fg) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan-fg { + color: var(--tblr-cyan-fg) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook-fg { + color: var(--tblr-facebook-fg) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter-fg { + color: var(--tblr-twitter-fg) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin-fg { + color: var(--tblr-linkedin-fg) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google-fg { + color: var(--tblr-google-fg) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube-fg { + color: var(--tblr-youtube-fg) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo-fg { + color: var(--tblr-vimeo-fg) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble-fg { + color: var(--tblr-dribbble-fg) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github-fg { + color: var(--tblr-github-fg) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram-fg { + color: var(--tblr-instagram-fg) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest-fg { + color: var(--tblr-pinterest-fg) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk-fg { + color: var(--tblr-vk-fg) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss-fg { + color: var(--tblr-rss-fg) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr-fg { + color: var(--tblr-flickr-fg) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket-fg { + color: var(--tblr-bitbucket-fg) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler-fg { + color: var(--tblr-tabler-fg) !important; +} + +.bg-gray-50 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-50-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-50-fg { + color: #182433 !important; +} + +.bg-gray-100 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-100-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-100-fg { + color: #182433 !important; +} + +.bg-gray-200 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-200-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-200-fg { + color: #182433 !important; +} + +.bg-gray-300 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-300-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-300-fg { + color: #182433 !important; +} + +.bg-gray-400 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-400-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-400-fg { + color: #fcfdfe !important; +} + +.bg-gray-500 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-500-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-500-fg { + color: #fcfdfe !important; +} + +.bg-gray-600 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-600-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-600-fg { + color: #fcfdfe !important; +} + +.bg-gray-700 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-700-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-700-fg { + color: #fcfdfe !important; +} + +.bg-gray-800 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-800-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-800-fg { + color: #fcfdfe !important; +} + +.bg-gray-900 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-900-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-900-fg { + color: #fcfdfe !important; +} + +/* +Scrollable +*/ +.scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.scrollable.hover { + overflow-y: hidden; +} +.scrollable.hover > * { + margin-top: -1px; +} +.scrollable.hover:hover, .scrollable.hover:focus, .scrollable.hover:active { + overflow: visible; + overflow-y: auto; +} +.touch .scrollable { + overflow-y: auto !important; +} + +.scroll-x, +.scroll-y { + overflow: hidden; + -webkit-overflow-scrolling: touch; +} + +.scroll-y { + overflow-y: auto; +} + +.scroll-x { + overflow-x: auto; +} + +.no-scroll { + overflow: hidden; +} + +.w-0 { + width: 0 !important; +} + +.h-0 { + height: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.w-auto { + width: auto !important; +} + +.h-auto { + height: auto !important; +} + +.w-px { + width: 1px !important; +} + +.h-px { + height: 1px !important; +} + +.w-full { + width: 100% !important; +} + +.h-full { + height: 100% !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-30 { + opacity: 0.3 !important; +} + +.opacity-35 { + opacity: 0.35 !important; +} + +.opacity-40 { + opacity: 0.4 !important; +} + +.opacity-45 { + opacity: 0.45 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-55 { + opacity: 0.55 !important; +} + +.opacity-60 { + opacity: 0.6 !important; +} + +.opacity-65 { + opacity: 0.65 !important; +} + +.opacity-70 { + opacity: 0.7 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-80 { + opacity: 0.8 !important; +} + +.opacity-85 { + opacity: 0.85 !important; +} + +.opacity-90 { + opacity: 0.9 !important; +} + +.opacity-95 { + opacity: 0.95 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.hover-shadow-sm:hover { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.hover-shadow:hover { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.hover-shadow-lg:hover { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.hover-shadow-none:hover { + box-shadow: none !important; +} + +/** +Antialiasing + */ +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} \ No newline at end of file diff --git a/public/css/tabler.rtl.min.css b/public/css/tabler.rtl.min.css new file mode 100644 index 0000000..8e94c65 --- /dev/null +++ b/public/css/tabler.rtl.min.css @@ -0,0 +1,13 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-blue:#0054a6;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#667382;--tblr-gray-dark:#182433;--tblr-gray-100:#f6f8fb;--tblr-gray-200:#eef1f4;--tblr-gray-300:#dadfe5;--tblr-gray-400:#bbc3cd;--tblr-gray-500:#929dab;--tblr-gray-600:#667382;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#0054a6;--tblr-secondary:#667382;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#fcfdfe;--tblr-dark:#182433;--tblr-muted:#667382;--tblr-blue:#0054a6;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-secondary-rgb:102,115,130;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:252,253,254;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:102,115,130;--tblr-blue-rgb:0,84,166;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-facebook-rgb:24,119,242;--tblr-twitter-rgb:29,161,242;--tblr-linkedin-rgb:10,102,194;--tblr-google-rgb:220,78,65;--tblr-youtube-rgb:255,0,0;--tblr-vimeo-rgb:26,183,234;--tblr-dribbble-rgb:234,76,137;--tblr-github-rgb:24,23,23;--tblr-instagram-rgb:228,64,95;--tblr-pinterest-rgb:189,8,28;--tblr-vk-rgb:99,131,168;--tblr-rss-rgb:255,165,0;--tblr-flickr-rgb:0,99,220;--tblr-bitbucket-rgb:0,82,204;--tblr-tabler-rgb:0,84,166;--tblr-primary-text-emphasis:#002242;--tblr-secondary-text-emphasis:#292e34;--tblr-success-text-emphasis:#13481b;--tblr-info-text-emphasis:#1a3d5a;--tblr-warning-text-emphasis:#632903;--tblr-danger-text-emphasis:#561717;--tblr-light-text-emphasis:#3a4859;--tblr-dark-text-emphasis:#3a4859;--tblr-primary-bg-subtle:#ccdded;--tblr-secondary-bg-subtle:#e0e3e6;--tblr-success-bg-subtle:#d5f0da;--tblr-info-bg-subtle:#d9ebf9;--tblr-warning-bg-subtle:#fde1cd;--tblr-danger-bg-subtle:#f7d7d7;--tblr-light-bg-subtle:#fbfcfd;--tblr-dark-bg-subtle:#bbc3cd;--tblr-primary-border-subtle:#99bbdb;--tblr-secondary-border-subtle:#c2c7cd;--tblr-success-border-subtle:#ace1b4;--tblr-info-border-subtle:#b3d6f3;--tblr-warning-border-subtle:#fcc29c;--tblr-danger-border-subtle:#efb0b0;--tblr-light-border-subtle:#eef1f4;--tblr-dark-border-subtle:#929dab;--tblr-white-rgb:255,255,255;--tblr-black-rgb:0,0,0;--tblr-font-sans-serif:-apple-system,BlinkMacSystemFont,San Francisco,Segoe UI,Roboto,Helvetica Neue,sans-serif;--tblr-font-monospace:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tblr-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--tblr-body-font-family:var(--tblr-font-sans-serif);--tblr-body-font-size:0.875rem;--tblr-body-font-weight:400;--tblr-body-line-height:1.4285714286;--tblr-body-color:#182433;--tblr-body-color-rgb:24,36,51;--tblr-body-bg:#f6f8fb;--tblr-body-bg-rgb:246,248,251;--tblr-emphasis-color:#182433;--tblr-emphasis-color-rgb:24,36,51;--tblr-secondary-color:rgba(24, 36, 51, 0.75);--tblr-secondary-color-rgb:24,36,51;--tblr-secondary-bg:#eef1f4;--tblr-secondary-bg-rgb:238,241,244;--tblr-tertiary-color:rgba(24, 36, 51, 0.5);--tblr-tertiary-color-rgb:24,36,51;--tblr-tertiary-bg:#f6f8fb;--tblr-tertiary-bg-rgb:246,248,251;--tblr-heading-color:inherit;--tblr-link-color:#0054a6;--tblr-link-color-rgb:0,84,166;--tblr-link-decoration:none;--tblr-link-hover-color:#004385;--tblr-link-hover-color-rgb:0,67,133;--tblr-link-hover-decoration:underline;--tblr-code-color:var(--tblr-gray-600);--tblr-highlight-bg:#fdeccc;--tblr-border-width:1px;--tblr-border-style:solid;--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-radius:4px;--tblr-border-radius-sm:2px;--tblr-border-radius-lg:8px;--tblr-border-radius-xl:1rem;--tblr-border-radius-xxl:2rem;--tblr-border-radius-2xl:var(--tblr-border-radius-xxl);--tblr-border-radius-pill:100rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--tblr-box-shadow-inset:0 0 transparent;--tblr-focus-ring-width:0.25rem;--tblr-focus-ring-opacity:0.25;--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), 0.25);--tblr-form-valid-color:#2fb344;--tblr-form-valid-border-color:#2fb344;--tblr-form-invalid-color:#d63939;--tblr-form-invalid-border-color:#d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-body-bg:#040a11;--tblr-body-bg-rgb:4,10,17;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-secondary-color:rgba(252, 253, 254, 0.75);--tblr-secondary-color-rgb:252,253,254;--tblr-secondary-bg:#182433;--tblr-secondary-bg-rgb:24,36,51;--tblr-tertiary-color:rgba(252, 253, 254, 0.5);--tblr-tertiary-color-rgb:252,253,254;--tblr-tertiary-bg:#0e1722;--tblr-tertiary-bg-rgb:14,23,34;--tblr-primary-text-emphasis:#6698ca;--tblr-secondary-text-emphasis:#a3abb4;--tblr-success-text-emphasis:#82d18f;--tblr-info-text-emphasis:#8ec2ed;--tblr-warning-text-emphasis:#faa46a;--tblr-danger-text-emphasis:#e68888;--tblr-light-text-emphasis:#f6f8fb;--tblr-dark-text-emphasis:#dadfe5;--tblr-primary-bg-subtle:#001121;--tblr-secondary-bg-subtle:#14171a;--tblr-success-bg-subtle:#09240e;--tblr-info-bg-subtle:#0d1f2d;--tblr-warning-bg-subtle:#311501;--tblr-danger-bg-subtle:#2b0b0b;--tblr-light-bg-subtle:#182433;--tblr-dark-bg-subtle:#0c121a;--tblr-primary-border-subtle:#003264;--tblr-secondary-border-subtle:#3d454e;--tblr-success-border-subtle:#1c6b29;--tblr-info-border-subtle:#285c87;--tblr-warning-border-subtle:#943e04;--tblr-danger-border-subtle:#802222;--tblr-light-border-subtle:#3a4859;--tblr-dark-border-subtle:#182433;--tblr-heading-color:inherit;--tblr-link-color:#6698ca;--tblr-link-hover-color:#85add5;--tblr-link-color-rgb:102,152,202;--tblr-link-hover-color-rgb:133,173,213;--tblr-code-color:var(--tblr-gray-300);--tblr-border-color:#1f2e41;--tblr-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-form-valid-color:#82d18f;--tblr-form-valid-border-color:#82d18f;--tblr-form-invalid-color:#e68888;--tblr-form-invalid-border-color:#e68888}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.hr,hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}.h1,h1{font-size:1.5rem}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1rem}.h4,h4{font-size:.875rem}.h5,h5{font-size:.75rem}.h6,h6{font-size:.625rem}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-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:85.714285%}.mark,mark{padding:.1875em;background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,1));text-decoration:none}a:hover{--tblr-link-color-rgb:var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:85.714285%;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:85.714285%;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:2px}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:.75rem;padding-bottom:.75rem;color:var(--tblr-secondary-color);text-align:right}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:right;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:right}::-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}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-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:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2rem;font-weight:300;line-height:1.2}.list-unstyled{padding-right:0;list-style:none}.list-inline{padding-right:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-left:.5rem}.initialism{font-size:85.714285%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:85.714285%;color:#667382}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:85.714285%;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--tblr-breakpoint-xs:0;--tblr-breakpoint-sm:576px;--tblr-breakpoint-md:768px;--tblr-breakpoint-lg:992px;--tblr-breakpoint-xl:1200px;--tblr-breakpoint-xxl:1400px}.row{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-left:calc(-.5 * var(--tblr-gutter-x));margin-right:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows,1),1fr);grid-template-columns:repeat(var(--tblr-columns,12),1fr);gap:var(--tblr-gap,var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.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.3333333333%}.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.6666666667%}.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-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--tblr-gutter-x:0}.g-0,.gy-0{--tblr-gutter-y:0}.g-1,.gx-1{--tblr-gutter-x:0.25rem}.g-1,.gy-1{--tblr-gutter-y:0.25rem}.g-2,.gx-2{--tblr-gutter-x:0.5rem}.g-2,.gy-2{--tblr-gutter-y:0.5rem}.g-3,.gx-3{--tblr-gutter-x:1rem}.g-3,.gy-3{--tblr-gutter-y:1rem}.g-4,.gx-4{--tblr-gutter-x:1.5rem}.g-4,.gy-4{--tblr-gutter-y:1.5rem}.g-5,.gx-5{--tblr-gutter-x:2rem}.g-5,.gy-5{--tblr-gutter-y:2rem}.g-6,.gx-6{--tblr-gutter-x:3rem}.g-6,.gy-6{--tblr-gutter-y:3rem}.g-7,.gx-7{--tblr-gutter-x:5rem}.g-7,.gy-7{--tblr-gutter-y:5rem}.g-8,.gx-8{--tblr-gutter-x:8rem}.g-8,.gy-8{--tblr-gutter-y:8rem}@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.3333333333%}.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.6666666667%}.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-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x:0}.g-sm-0,.gy-sm-0{--tblr-gutter-y:0}.g-sm-1,.gx-sm-1{--tblr-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x:1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y:1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x:2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y:2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x:3rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y:3rem}.g-sm-7,.gx-sm-7{--tblr-gutter-x:5rem}.g-sm-7,.gy-sm-7{--tblr-gutter-y:5rem}.g-sm-8,.gx-sm-8{--tblr-gutter-x:8rem}.g-sm-8,.gy-sm-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x:0}.g-md-0,.gy-md-0{--tblr-gutter-y:0}.g-md-1,.gx-md-1{--tblr-gutter-x:0.25rem}.g-md-1,.gy-md-1{--tblr-gutter-y:0.25rem}.g-md-2,.gx-md-2{--tblr-gutter-x:0.5rem}.g-md-2,.gy-md-2{--tblr-gutter-y:0.5rem}.g-md-3,.gx-md-3{--tblr-gutter-x:1rem}.g-md-3,.gy-md-3{--tblr-gutter-y:1rem}.g-md-4,.gx-md-4{--tblr-gutter-x:1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y:1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x:2rem}.g-md-5,.gy-md-5{--tblr-gutter-y:2rem}.g-md-6,.gx-md-6{--tblr-gutter-x:3rem}.g-md-6,.gy-md-6{--tblr-gutter-y:3rem}.g-md-7,.gx-md-7{--tblr-gutter-x:5rem}.g-md-7,.gy-md-7{--tblr-gutter-y:5rem}.g-md-8,.gx-md-8{--tblr-gutter-x:8rem}.g-md-8,.gy-md-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x:0}.g-lg-0,.gy-lg-0{--tblr-gutter-y:0}.g-lg-1,.gx-lg-1{--tblr-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x:1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y:1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x:2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y:2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x:3rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y:3rem}.g-lg-7,.gx-lg-7{--tblr-gutter-x:5rem}.g-lg-7,.gy-lg-7{--tblr-gutter-y:5rem}.g-lg-8,.gx-lg-8{--tblr-gutter-x:8rem}.g-lg-8,.gy-lg-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x:0}.g-xl-0,.gy-xl-0{--tblr-gutter-y:0}.g-xl-1,.gx-xl-1{--tblr-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x:1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y:1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x:2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y:2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x:3rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y:3rem}.g-xl-7,.gx-xl-7{--tblr-gutter-x:5rem}.g-xl-7,.gy-xl-7{--tblr-gutter-y:5rem}.g-xl-8,.gx-xl-8{--tblr-gutter-x:8rem}.g-xl-8,.gy-xl-8{--tblr-gutter-y:8rem}}@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.3333333333%}.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.6666666667%}.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-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x:0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y:0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x:2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y:2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x:3rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y:3rem}.g-xxl-7,.gx-xxl-7{--tblr-gutter-x:5rem}.g-xxl-7,.gy-xxl-7{--tblr-gutter-y:5rem}.g-xxl-8,.gx-xxl-8{--tblr-gutter-x:8rem}.g-xxl-8,.gy-xxl-8{--tblr-gutter-y:8rem}}.markdown>table,.table{--tblr-table-color-type:initial;--tblr-table-bg-type:initial;--tblr-table-color-state:initial;--tblr-table-bg-state:initial;--tblr-table-color:inherit;--tblr-table-bg:transparent;--tblr-table-border-color:var(--tblr-border-color-translucent);--tblr-table-accent-bg:transparent;--tblr-table-striped-color:inherit;--tblr-table-striped-bg:var(--tblr-bg-surface-tertiary);--tblr-table-active-color:inherit;--tblr-table-active-bg:rgba(0, 0, 0, 0.1);--tblr-table-hover-color:inherit;--tblr-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.markdown>table>:not(caption)>*>*,.table>:not(caption)>*>*{padding:.75rem .75rem;color:var(--tblr-table-color-state,var(--tblr-table-color-type,var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state,var(--tblr-table-bg-type,var(--tblr-table-accent-bg)))}.markdown>table>tbody,.table>tbody{vertical-align:inherit}.markdown>table>thead,.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.markdown>table>:not(caption)>*,.table-bordered>:not(caption)>*{border-width:var(--tblr-border-width) 0}.markdown>table>:not(caption)>*>*,.table-bordered>:not(caption)>*>*{border-width:0 var(--tblr-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(even)>*{--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state:var(--tblr-table-active-color);--tblr-table-bg-state:var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state:var(--tblr-table-hover-color);--tblr-table-bg-state:var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color:#182433;--tblr-table-bg:#ccdded;--tblr-table-border-color:#bacbda;--tblr-table-striped-bg:#c3d4e4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#bacbda;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#bfcfdf;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color:#182433;--tblr-table-bg:#e0e3e6;--tblr-table-border-color:#ccd0d4;--tblr-table-striped-bg:#d6d9dd;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#ccd0d4;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#d1d5d9;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color:#182433;--tblr-table-bg:#d5f0da;--tblr-table-border-color:#c2dcc9;--tblr-table-striped-bg:#cce6d2;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c2dcc9;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#c7e1cd;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color:#182433;--tblr-table-bg:#d9ebf9;--tblr-table-border-color:#c6d7e5;--tblr-table-striped-bg:#cfe1ef;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c6d7e5;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#cbdcea;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color:#182433;--tblr-table-bg:#fde1cd;--tblr-table-border-color:#e6cebe;--tblr-table-striped-bg:#f2d8c5;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e6cebe;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ecd3c1;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color:#182433;--tblr-table-bg:#f7d7d7;--tblr-table-border-color:#e1c5c7;--tblr-table-striped-bg:#eccecf;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e1c5c7;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#e6cacb;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color:#182433;--tblr-table-bg:#fcfdfe;--tblr-table-border-color:#e5e7ea;--tblr-table-striped-bg:#f1f2f4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e5e7ea;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ebedef;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color:#fcfdfe;--tblr-table-bg:#182433;--tblr-table-border-color:#2f3a47;--tblr-table-striped-bg:#232f3d;--tblr-table-striped-color:#fcfdfe;--tblr-table-active-bg:#2f3a47;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#293442;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.4285714286}.col-form-label-lg{padding-top:calc(.5rem + var(--tblr-border-width));padding-bottom:calc(.5rem + var(--tblr-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.125rem + var(--tblr-border-width));padding-bottom:calc(.125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:85.714285%;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.4285714286em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-webkit-input-placeholder{color:#929dab;opacity:1}.form-control:-ms-input-placeholder{color:#929dab;opacity:1}.form-control::-ms-input-placeholder{color:#929dab;opacity:1}.form-control::placeholder{color:#929dab;opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::-webkit-file-upload-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.4285714286;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2));padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-sm::file-selector-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2));padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}.form-control-lg::file-selector-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}textarea.form-control{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-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='%23929dab' 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:.5625rem .75rem .5625rem 2.25rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon,none);background-repeat:no-repeat;background-position:left .75rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-left:.75rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.125rem;padding-bottom:.125rem;padding-right:.25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-right:.75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-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='%23fcfdfe' 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.25rem;padding-right:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:right;margin-right:-2rem}.form-check-reverse{padding-left:2rem;padding-right:0;text-align:left}.form-check-reverse .form-check-input{float:left;margin-left:-2rem;margin-right:0}.form-check-input{--tblr-form-check-bg:var(--tblr-bg-forms);width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80aad3;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-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='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-right:2.5rem}.form-switch .form-check-input{--tblr-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='%23dadfe5'/%3e%3c/svg%3e");width:2rem;margin-right:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:right center;border-radius:2rem;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--tblr-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='%2380aad3'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:left center;--tblr-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='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-left:2.5rem;padding-right:0}.form-switch.form-check-reverse .form-check-input{margin-left:-2.5rem;margin-right:0}.form-check-inline{display:inline-block;margin-left: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:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-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.25rem;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 #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;-webkit-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3cce4}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3cce4}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-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(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;right:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:100% 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-ms-input-placeholder)~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-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 .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#667382}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--tblr-bg-surface-secondary)}.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:.5625rem .75rem;font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-secondary);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-left: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-left-radius:0;border-bottom-left-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-left-radius:0;border-bottom-left-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--tblr-border-width) * -1);border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-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(--tblr-form-valid-border-color);padding-left:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-left:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) left calc(.3571428572em + .28125rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--tblr-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"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-left:4.125rem;background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--tblr-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--tblr-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-right:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-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(--tblr-form-invalid-border-color);padding-left:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-left:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) left calc(.3571428572em + .28125rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--tblr-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"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-left:4.125rem;background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--tblr-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-right:.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{--tblr-btn-padding-x:1rem;--tblr-btn-padding-y:0.5625rem;--tblr-btn-font-family:var(--tblr-font-sans-serif);--tblr-btn-font-size:0.875rem;--tblr-btn-font-weight:var(--tblr-font-weight-medium);--tblr-btn-line-height:1.4285714286;--tblr-btn-color:var(--tblr-body-color);--tblr-btn-bg:transparent;--tblr-btn-border-width:var(--tblr-border-width);--tblr-btn-border-color:transparent;--tblr-btn-border-radius:var(--tblr-border-radius);--tblr-btn-hover-border-color:transparent;--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-disabled-opacity:0.4;--tblr-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.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(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight:400;--tblr-btn-color:var(--tblr-link-color);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-link-hover-color);--tblr-btn-hover-border-color:transparent;--tblr-btn-active-color:var(--tblr-link-hover-color);--tblr-btn-active-border-color:transparent;--tblr-btn-disabled-color:#667382;--tblr-btn-disabled-border-color:transparent;--tblr-btn-box-shadow:0 0 0 #000;--tblr-btn-focus-shadow-rgb:38,109,179;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--tblr-btn-padding-y:0.5rem;--tblr-btn-padding-x:0.75rem;--tblr-btn-font-size:1.25rem;--tblr-btn-border-radius:var(--tblr-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--tblr-btn-padding-y:0.125rem;--tblr-btn-padding-x:0.25rem;--tblr-btn-font-size:0.75rem;--tblr-btn-border-radius:var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(45deg)}.dropdown-menu{--tblr-dropdown-zindex:1000;--tblr-dropdown-min-width:11rem;--tblr-dropdown-padding-x:0;--tblr-dropdown-padding-y:0.25rem;--tblr-dropdown-spacer:1px;--tblr-dropdown-font-size:0.875rem;--tblr-dropdown-color:var(--tblr-body-color);--tblr-dropdown-bg:var(--tblr-bg-surface);--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-border-radius:var(--tblr-border-radius);--tblr-dropdown-border-width:var(--tblr-border-width);--tblr-dropdown-inner-border-radius:calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y:var(--tblr-spacer);--tblr-dropdown-box-shadow:var(--tblr-box-shadow-dropdown);--tblr-dropdown-link-color:inherit;--tblr-dropdown-link-hover-color:inherit;--tblr-dropdown-link-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x:0.75rem;--tblr-dropdown-item-padding-y:0.5rem;--tblr-dropdown-header-color:#667382;--tblr-dropdown-header-padding-x:0.75rem;--tblr-dropdown-header-padding-y:0.25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:right;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;right:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:0;right:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:0;right:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:0;right:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:0;right:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(-135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;left:auto;right:100%;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(135deg)}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;left:100%;right:auto;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(-45deg)}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color:#dadfe5;--tblr-dropdown-bg:#182433;--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-link-color:#dadfe5;--tblr-dropdown-link-hover-color:#ffffff;--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:#929dab;--tblr-dropdown-header-color:#929dab}.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(--tblr-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-right:calc(var(--tblr-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-left-radius:0;border-bottom-left-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-right-radius:0;border-bottom-right-radius:0}.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-right:0}.dropstart .dropdown-toggle-split::before{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.1875rem;padding-right:.1875rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.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(--tblr-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-right-radius:0;border-top-left-radius:0}.nav{--tblr-nav-link-padding-x:0.75rem;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-secondary);--tblr-nav-link-hover-color:var(--tblr-link-hover-color);--tblr-nav-link-disabled-color:var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-right:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width:var(--tblr-border-width);--tblr-nav-tabs-border-color:var(--tblr-border-color);--tblr-nav-tabs-border-radius:var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color:var(--tblr-body-color);--tblr-nav-tabs-link-active-bg:var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-right-radius:var(--tblr-nav-tabs-border-radius);border-top-left-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-right-radius:0;border-top-left-radius:0}.nav-pills{--tblr-nav-pills-border-radius:var(--tblr-border-radius);--tblr-nav-pills-link-active-color:var(--tblr-primary);--tblr-nav-pills-link-active-bg:var(--tblr-active-bg)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap:1rem;--tblr-nav-underline-border-width:0.125rem;--tblr-nav-underline-link-active-color:var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-left:0;padding-right:0;border-bottom:var(--tblr-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:600;color:var(--tblr-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{--tblr-navbar-padding-x:0;--tblr-navbar-padding-y:0.25rem;--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-hover-color:rgba(var(--tblr-emphasis-color-rgb), 0.8);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:var(--tblr-body-color) color;--tblr-navbar-brand-padding-y:0.5rem;--tblr-navbar-brand-margin-end:1rem;--tblr-navbar-brand-font-size:1.25rem;--tblr-navbar-brand-color:var(--tblr-body-color);--tblr-navbar-brand-hover-color:var(--tblr-body-color) color;--tblr-navbar-nav-link-padding-x:0.75rem;--tblr-navbar-toggler-padding-y:0;--tblr-navbar-toggler-padding-x:0;--tblr-navbar-toggler-font-size:1rem;--tblr-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%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color:rgba(var(--tblr-emphasis-color-rgb), 0.15);--tblr-navbar-toggler-border-radius:var(--tblr-border-radius);--tblr-navbar-toggler-focus-width:0;--tblr-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(--tblr-navbar-padding-y) var(--tblr-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(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-left:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x:0;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-navbar-color);--tblr-nav-link-hover-color:var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color:var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-right:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-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(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-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;box-shadow:none;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],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color:rgba(255, 255, 255, 0.7);--tblr-navbar-hover-color:rgba(255, 255, 255, 0.75);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:#ffffff;--tblr-navbar-brand-color:#ffffff;--tblr-navbar-brand-hover-color:#ffffff;--tblr-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--tblr-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.7%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,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-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.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y:1.25rem;--tblr-card-spacer-x:1.25rem;--tblr-card-title-spacer-y:1.25rem;--tblr-card-border-width:var(--tblr-border-width);--tblr-card-border-color:var(--tblr-border-color-translucent);--tblr-card-border-radius:var(--tblr-border-radius);--tblr-card-box-shadow:var(--tblr-shadow-card);--tblr-card-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-card-cap-padding-y:1.25rem;--tblr-card-cap-padding-x:1.25rem;--tblr-card-cap-bg:var(--tblr-bg-surface-tertiary);--tblr-card-cap-color:inherit;--tblr-card-color:inherit;--tblr-card-bg:var(--tblr-bg-surface);--tblr-card-img-overlay-padding:1rem;--tblr-card-group-margin:1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>.hr,.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-right-radius:var(--tblr-card-inner-border-radius);border-top-left-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-left-radius:var(--tblr-card-inner-border-radius);border-bottom-right-radius:var(--tblr-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(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-right:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));margin-right:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;left:0;bottom:0;right:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-right-radius:var(--tblr-card-inner-border-radius);border-top-left-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--tblr-card-inner-border-radius);border-bottom-right-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-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-right:0;border-right:0}.card-group>.card:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-right-radius:0}}.accordion{--tblr-accordion-color:var(--tblr-body-color);--tblr-accordion-bg:transparent;--tblr-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;--tblr-accordion-border-color:var(--tblr-border-color-translucent);--tblr-accordion-border-width:var(--tblr-border-width);--tblr-accordion-border-radius:var(--tblr-border-radius);--tblr-accordion-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-btn-padding-x:1.25rem;--tblr-accordion-btn-padding-y:1rem;--tblr-accordion-btn-color:var(--tblr-body-color);--tblr-accordion-btn-bg:transparent;--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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");--tblr-accordion-btn-icon-width:1rem;--tblr-accordion-btn-icon-transform:rotate(-180deg);--tblr-accordion-btn-icon-transition:transform 0.2s ease-in-out;--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%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");--tblr-accordion-btn-focus-border-color:var(--tblr-border-color-translucent);--tblr-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-accordion-body-padding-x:1.25rem;--tblr-accordion-body-padding-y:1rem;--tblr-accordion-active-color:inherit;--tblr-accordion-active-bg:transparent}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x);font-size:.875rem;color:var(--tblr-accordion-btn-color);text-align:right;background-color:var(--tblr-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--tblr-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--tblr-accordion-active-color);background-color:var(--tblr-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--tblr-accordion-btn-active-icon);transform:var(--tblr-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--tblr-accordion-btn-icon-width);height:var(--tblr-accordion-btn-icon-width);margin-right:auto;content:"";background-image:var(--tblr-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--tblr-accordion-btn-icon-width);transition:var(--tblr-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(--tblr-accordion-btn-focus-border-color);outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--tblr-accordion-color);background-color:var(--tblr-accordion-bg);border:var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-right-radius:var(--tblr-accordion-border-radius);border-top-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-right-radius:var(--tblr-accordion-inner-border-radius);border-top-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-left-radius:var(--tblr-accordion-border-radius);border-bottom-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-left-radius:var(--tblr-accordion-inner-border-radius);border-bottom-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-left-radius:var(--tblr-accordion-border-radius);border-bottom-right-radius:var(--tblr-accordion-border-radius)}.accordion-body{padding:var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-right:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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");--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%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{--tblr-breadcrumb-padding-x:0;--tblr-breadcrumb-padding-y:0;--tblr-breadcrumb-margin-bottom:1rem;--tblr-breadcrumb-divider-color:var(--tblr-secondary);--tblr-breadcrumb-item-padding-x:0.5rem;--tblr-breadcrumb-item-active-color:inherit;display:flex;flex-wrap:wrap;padding:var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x);margin-bottom:var(--tblr-breadcrumb-margin-bottom);font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-right:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:right;padding-left:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color)}.pagination{--tblr-pagination-padding-x:0.25rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.875rem;--tblr-pagination-color:var(--tblr-secondary);--tblr-pagination-bg:transparent;--tblr-pagination-border-width:0;--tblr-pagination-border-color:var(--tblr-border-color);--tblr-pagination-border-radius:var(--tblr-border-radius);--tblr-pagination-hover-color:var(--tblr-link-hover-color);--tblr-pagination-hover-bg:var(--tblr-tertiary-bg);--tblr-pagination-hover-border-color:var(--tblr-border-color);--tblr-pagination-focus-color:var(--tblr-link-hover-color);--tblr-pagination-focus-bg:var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-pagination-active-color:#ffffff;--tblr-pagination-active-bg:var(--tblr-primary);--tblr-pagination-active-border-color:var(--tblr-primary);--tblr-pagination-disabled-color:var(--tblr-disabled-color);--tblr-pagination-disabled-bg:transparent;--tblr-pagination-disabled-border-color:var(--tblr-border-color);display:flex;padding-right:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-right:calc(0 * -1)}.page-item:first-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x:1.5rem;--tblr-pagination-padding-y:0.75rem;--tblr-pagination-font-size:1.09375rem;--tblr-pagination-border-radius:var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x:0.5rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.765625rem;--tblr-pagination-border-radius:var(--tblr-border-radius-sm)}.badge{--tblr-badge-padding-x:0.5em;--tblr-badge-padding-y:0.25em;--tblr-badge-font-size:85.714285%;--tblr-badge-font-weight:var(--tblr-font-weight-medium);--tblr-badge-color:var(--tblr-secondary);--tblr-badge-border-radius:var(--tblr-border-radius);display:inline-block;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-size:var(--tblr-badge-font-size);font-weight:var(--tblr-badge-font-weight);line-height:1;color:var(--tblr-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--tblr-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--tblr-alert-bg:transparent;--tblr-alert-padding-x:1rem;--tblr-alert-padding-y:0.75rem;--tblr-alert-margin-bottom:1rem;--tblr-alert-color:inherit;--tblr-alert-border-color:transparent;--tblr-alert-border:var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius:var(--tblr-border-radius);--tblr-alert-link-color:inherit;position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);color:var(--tblr-alert-color);background-color:var(--tblr-alert-bg);border:var(--tblr-alert-border);border-radius:var(--tblr-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-dismissible{padding-left:3rem}.alert-dismissible .btn-close{position:absolute;top:0;left:0;z-index:2;padding:.9375rem 1rem}.alert-primary{--tblr-alert-color:var(--tblr-primary-text-emphasis);--tblr-alert-bg:var(--tblr-primary-bg-subtle);--tblr-alert-border-color:var(--tblr-primary-border-subtle);--tblr-alert-link-color:var(--tblr-primary-text-emphasis)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary-text-emphasis);--tblr-alert-bg:var(--tblr-secondary-bg-subtle);--tblr-alert-border-color:var(--tblr-secondary-border-subtle);--tblr-alert-link-color:var(--tblr-secondary-text-emphasis)}.alert-success{--tblr-alert-color:var(--tblr-success-text-emphasis);--tblr-alert-bg:var(--tblr-success-bg-subtle);--tblr-alert-border-color:var(--tblr-success-border-subtle);--tblr-alert-link-color:var(--tblr-success-text-emphasis)}.alert-info{--tblr-alert-color:var(--tblr-info-text-emphasis);--tblr-alert-bg:var(--tblr-info-bg-subtle);--tblr-alert-border-color:var(--tblr-info-border-subtle);--tblr-alert-link-color:var(--tblr-info-text-emphasis)}.alert-warning{--tblr-alert-color:var(--tblr-warning-text-emphasis);--tblr-alert-bg:var(--tblr-warning-bg-subtle);--tblr-alert-border-color:var(--tblr-warning-border-subtle);--tblr-alert-link-color:var(--tblr-warning-text-emphasis)}.alert-danger{--tblr-alert-color:var(--tblr-danger-text-emphasis);--tblr-alert-bg:var(--tblr-danger-bg-subtle);--tblr-alert-border-color:var(--tblr-danger-border-subtle);--tblr-alert-link-color:var(--tblr-danger-text-emphasis)}.alert-light{--tblr-alert-color:var(--tblr-light-text-emphasis);--tblr-alert-bg:var(--tblr-light-bg-subtle);--tblr-alert-border-color:var(--tblr-light-border-subtle);--tblr-alert-link-color:var(--tblr-light-text-emphasis)}.alert-dark{--tblr-alert-color:var(--tblr-dark-text-emphasis);--tblr-alert-bg:var(--tblr-dark-bg-subtle);--tblr-alert-border-color:var(--tblr-dark-border-subtle);--tblr-alert-link-color:var(--tblr-dark-text-emphasis)}.alert-muted{--tblr-alert-color:var(--tblr-muted-text-emphasis);--tblr-alert-bg:var(--tblr-muted-bg-subtle);--tblr-alert-border-color:var(--tblr-muted-border-subtle);--tblr-alert-link-color:var(--tblr-muted-text-emphasis)}.alert-blue{--tblr-alert-color:var(--tblr-blue-text-emphasis);--tblr-alert-bg:var(--tblr-blue-bg-subtle);--tblr-alert-border-color:var(--tblr-blue-border-subtle);--tblr-alert-link-color:var(--tblr-blue-text-emphasis)}.alert-azure{--tblr-alert-color:var(--tblr-azure-text-emphasis);--tblr-alert-bg:var(--tblr-azure-bg-subtle);--tblr-alert-border-color:var(--tblr-azure-border-subtle);--tblr-alert-link-color:var(--tblr-azure-text-emphasis)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo-text-emphasis);--tblr-alert-bg:var(--tblr-indigo-bg-subtle);--tblr-alert-border-color:var(--tblr-indigo-border-subtle);--tblr-alert-link-color:var(--tblr-indigo-text-emphasis)}.alert-purple{--tblr-alert-color:var(--tblr-purple-text-emphasis);--tblr-alert-bg:var(--tblr-purple-bg-subtle);--tblr-alert-border-color:var(--tblr-purple-border-subtle);--tblr-alert-link-color:var(--tblr-purple-text-emphasis)}.alert-pink{--tblr-alert-color:var(--tblr-pink-text-emphasis);--tblr-alert-bg:var(--tblr-pink-bg-subtle);--tblr-alert-border-color:var(--tblr-pink-border-subtle);--tblr-alert-link-color:var(--tblr-pink-text-emphasis)}.alert-red{--tblr-alert-color:var(--tblr-red-text-emphasis);--tblr-alert-bg:var(--tblr-red-bg-subtle);--tblr-alert-border-color:var(--tblr-red-border-subtle);--tblr-alert-link-color:var(--tblr-red-text-emphasis)}.alert-orange{--tblr-alert-color:var(--tblr-orange-text-emphasis);--tblr-alert-bg:var(--tblr-orange-bg-subtle);--tblr-alert-border-color:var(--tblr-orange-border-subtle);--tblr-alert-link-color:var(--tblr-orange-text-emphasis)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow-text-emphasis);--tblr-alert-bg:var(--tblr-yellow-bg-subtle);--tblr-alert-border-color:var(--tblr-yellow-border-subtle);--tblr-alert-link-color:var(--tblr-yellow-text-emphasis)}.alert-lime{--tblr-alert-color:var(--tblr-lime-text-emphasis);--tblr-alert-bg:var(--tblr-lime-bg-subtle);--tblr-alert-border-color:var(--tblr-lime-border-subtle);--tblr-alert-link-color:var(--tblr-lime-text-emphasis)}.alert-green{--tblr-alert-color:var(--tblr-green-text-emphasis);--tblr-alert-bg:var(--tblr-green-bg-subtle);--tblr-alert-border-color:var(--tblr-green-border-subtle);--tblr-alert-link-color:var(--tblr-green-text-emphasis)}.alert-teal{--tblr-alert-color:var(--tblr-teal-text-emphasis);--tblr-alert-bg:var(--tblr-teal-bg-subtle);--tblr-alert-border-color:var(--tblr-teal-border-subtle);--tblr-alert-link-color:var(--tblr-teal-text-emphasis)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan-text-emphasis);--tblr-alert-bg:var(--tblr-cyan-bg-subtle);--tblr-alert-border-color:var(--tblr-cyan-border-subtle);--tblr-alert-link-color:var(--tblr-cyan-text-emphasis)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook-text-emphasis);--tblr-alert-bg:var(--tblr-facebook-bg-subtle);--tblr-alert-border-color:var(--tblr-facebook-border-subtle);--tblr-alert-link-color:var(--tblr-facebook-text-emphasis)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter-text-emphasis);--tblr-alert-bg:var(--tblr-twitter-bg-subtle);--tblr-alert-border-color:var(--tblr-twitter-border-subtle);--tblr-alert-link-color:var(--tblr-twitter-text-emphasis)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin-text-emphasis);--tblr-alert-bg:var(--tblr-linkedin-bg-subtle);--tblr-alert-border-color:var(--tblr-linkedin-border-subtle);--tblr-alert-link-color:var(--tblr-linkedin-text-emphasis)}.alert-google{--tblr-alert-color:var(--tblr-google-text-emphasis);--tblr-alert-bg:var(--tblr-google-bg-subtle);--tblr-alert-border-color:var(--tblr-google-border-subtle);--tblr-alert-link-color:var(--tblr-google-text-emphasis)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube-text-emphasis);--tblr-alert-bg:var(--tblr-youtube-bg-subtle);--tblr-alert-border-color:var(--tblr-youtube-border-subtle);--tblr-alert-link-color:var(--tblr-youtube-text-emphasis)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo-text-emphasis);--tblr-alert-bg:var(--tblr-vimeo-bg-subtle);--tblr-alert-border-color:var(--tblr-vimeo-border-subtle);--tblr-alert-link-color:var(--tblr-vimeo-text-emphasis)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble-text-emphasis);--tblr-alert-bg:var(--tblr-dribbble-bg-subtle);--tblr-alert-border-color:var(--tblr-dribbble-border-subtle);--tblr-alert-link-color:var(--tblr-dribbble-text-emphasis)}.alert-github{--tblr-alert-color:var(--tblr-github-text-emphasis);--tblr-alert-bg:var(--tblr-github-bg-subtle);--tblr-alert-border-color:var(--tblr-github-border-subtle);--tblr-alert-link-color:var(--tblr-github-text-emphasis)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram-text-emphasis);--tblr-alert-bg:var(--tblr-instagram-bg-subtle);--tblr-alert-border-color:var(--tblr-instagram-border-subtle);--tblr-alert-link-color:var(--tblr-instagram-text-emphasis)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest-text-emphasis);--tblr-alert-bg:var(--tblr-pinterest-bg-subtle);--tblr-alert-border-color:var(--tblr-pinterest-border-subtle);--tblr-alert-link-color:var(--tblr-pinterest-text-emphasis)}.alert-vk{--tblr-alert-color:var(--tblr-vk-text-emphasis);--tblr-alert-bg:var(--tblr-vk-bg-subtle);--tblr-alert-border-color:var(--tblr-vk-border-subtle);--tblr-alert-link-color:var(--tblr-vk-text-emphasis)}.alert-rss{--tblr-alert-color:var(--tblr-rss-text-emphasis);--tblr-alert-bg:var(--tblr-rss-bg-subtle);--tblr-alert-border-color:var(--tblr-rss-border-subtle);--tblr-alert-link-color:var(--tblr-rss-text-emphasis)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr-text-emphasis);--tblr-alert-bg:var(--tblr-flickr-bg-subtle);--tblr-alert-border-color:var(--tblr-flickr-border-subtle);--tblr-alert-link-color:var(--tblr-flickr-text-emphasis)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket-text-emphasis);--tblr-alert-bg:var(--tblr-bitbucket-bg-subtle);--tblr-alert-border-color:var(--tblr-bitbucket-border-subtle);--tblr-alert-link-color:var(--tblr-bitbucket-text-emphasis)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler-text-emphasis);--tblr-alert-bg:var(--tblr-tabler-bg-subtle);--tblr-alert-border-color:var(--tblr-tabler-border-subtle);--tblr-alert-link-color:var(--tblr-tabler-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--tblr-progress-height:0.5rem;--tblr-progress-font-size:0.65625rem;--tblr-progress-bg:var(--tblr-border-color);--tblr-progress-border-radius:var(--tblr-border-radius);--tblr-progress-box-shadow:var(--tblr-box-shadow-inset);--tblr-progress-bar-color:#ffffff;--tblr-progress-bar-bg:var(--tblr-primary);--tblr-progress-bar-transition:width 0.6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-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{--tblr-list-group-color:var(--tblr-body-color);--tblr-list-group-bg:inherit;--tblr-list-group-border-color:var(--tblr-border-color);--tblr-list-group-border-width:var(--tblr-border-width);--tblr-list-group-border-radius:var(--tblr-border-radius);--tblr-list-group-item-padding-x:1.25rem;--tblr-list-group-item-padding-y:1.25rem;--tblr-list-group-action-color:inherit;--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-list-group-action-active-color:var(--tblr-body-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-bg);--tblr-list-group-disabled-color:var(--tblr-secondary-color);--tblr-list-group-disabled-bg:inherit;--tblr-list-group-active-color:inherit;--tblr-list-group-active-bg:var(--tblr-active-bg);--tblr-list-group-active-border-color:var(--tblr-border-color);display:flex;flex-direction:column;padding-right:0;margin-bottom:0;border-radius:var(--tblr-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(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-right-radius:inherit;border-top-left-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-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(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-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-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-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-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-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-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-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-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-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-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-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(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color:var(--tblr-primary-text-emphasis);--tblr-list-group-bg:var(--tblr-primary-bg-subtle);--tblr-list-group-border-color:var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-primary-border-subtle);--tblr-list-group-active-color:var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color:var(--tblr-secondary-text-emphasis);--tblr-list-group-bg:var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color:var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-active-color:var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color:var(--tblr-success-text-emphasis);--tblr-list-group-bg:var(--tblr-success-bg-subtle);--tblr-list-group-border-color:var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-success-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-success-border-subtle);--tblr-list-group-active-color:var(--tblr-success-bg-subtle);--tblr-list-group-active-bg:var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color:var(--tblr-info-text-emphasis);--tblr-list-group-bg:var(--tblr-info-bg-subtle);--tblr-list-group-border-color:var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-info-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-info-border-subtle);--tblr-list-group-active-color:var(--tblr-info-bg-subtle);--tblr-list-group-active-bg:var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color:var(--tblr-warning-text-emphasis);--tblr-list-group-bg:var(--tblr-warning-bg-subtle);--tblr-list-group-border-color:var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-warning-border-subtle);--tblr-list-group-active-color:var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg:var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color:var(--tblr-danger-text-emphasis);--tblr-list-group-bg:var(--tblr-danger-bg-subtle);--tblr-list-group-border-color:var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-danger-border-subtle);--tblr-list-group-active-color:var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg:var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color:var(--tblr-light-text-emphasis);--tblr-list-group-bg:var(--tblr-light-bg-subtle);--tblr-list-group-border-color:var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-light-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-light-border-subtle);--tblr-list-group-active-color:var(--tblr-light-bg-subtle);--tblr-list-group-active-bg:var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color:var(--tblr-dark-text-emphasis);--tblr-list-group-bg:var(--tblr-dark-bg-subtle);--tblr-list-group-border-color:var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dark-border-subtle);--tblr-list-group-active-color:var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color:var(--tblr-muted-text-emphasis);--tblr-list-group-bg:var(--tblr-muted-bg-subtle);--tblr-list-group-border-color:var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-muted-border-subtle);--tblr-list-group-active-color:var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg:var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color:var(--tblr-blue-text-emphasis);--tblr-list-group-bg:var(--tblr-blue-bg-subtle);--tblr-list-group-border-color:var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-blue-border-subtle);--tblr-list-group-active-color:var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg:var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color:var(--tblr-azure-text-emphasis);--tblr-list-group-bg:var(--tblr-azure-bg-subtle);--tblr-list-group-border-color:var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-azure-border-subtle);--tblr-list-group-active-color:var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg:var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color:var(--tblr-indigo-text-emphasis);--tblr-list-group-bg:var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color:var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-active-color:var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color:var(--tblr-purple-text-emphasis);--tblr-list-group-bg:var(--tblr-purple-bg-subtle);--tblr-list-group-border-color:var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-purple-border-subtle);--tblr-list-group-active-color:var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg:var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color:var(--tblr-pink-text-emphasis);--tblr-list-group-bg:var(--tblr-pink-bg-subtle);--tblr-list-group-border-color:var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pink-border-subtle);--tblr-list-group-active-color:var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color:var(--tblr-red-text-emphasis);--tblr-list-group-bg:var(--tblr-red-bg-subtle);--tblr-list-group-border-color:var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-red-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-red-border-subtle);--tblr-list-group-active-color:var(--tblr-red-bg-subtle);--tblr-list-group-active-bg:var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color:var(--tblr-orange-text-emphasis);--tblr-list-group-bg:var(--tblr-orange-bg-subtle);--tblr-list-group-border-color:var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-orange-border-subtle);--tblr-list-group-active-color:var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg:var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color:var(--tblr-yellow-text-emphasis);--tblr-list-group-bg:var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color:var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-active-color:var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg:var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color:var(--tblr-lime-text-emphasis);--tblr-list-group-bg:var(--tblr-lime-bg-subtle);--tblr-list-group-border-color:var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-lime-border-subtle);--tblr-list-group-active-color:var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg:var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color:var(--tblr-green-text-emphasis);--tblr-list-group-bg:var(--tblr-green-bg-subtle);--tblr-list-group-border-color:var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-green-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-green-border-subtle);--tblr-list-group-active-color:var(--tblr-green-bg-subtle);--tblr-list-group-active-bg:var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color:var(--tblr-teal-text-emphasis);--tblr-list-group-bg:var(--tblr-teal-bg-subtle);--tblr-list-group-border-color:var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-teal-border-subtle);--tblr-list-group-active-color:var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg:var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color:var(--tblr-cyan-text-emphasis);--tblr-list-group-bg:var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color:var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-active-color:var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg:var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-cyan-text-emphasis)}.list-group-item-facebook{--tblr-list-group-color:var(--tblr-facebook-text-emphasis);--tblr-list-group-bg:var(--tblr-facebook-bg-subtle);--tblr-list-group-border-color:var(--tblr-facebook-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-active-color:var(--tblr-facebook-bg-subtle);--tblr-list-group-active-bg:var(--tblr-facebook-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-facebook-text-emphasis)}.list-group-item-twitter{--tblr-list-group-color:var(--tblr-twitter-text-emphasis);--tblr-list-group-bg:var(--tblr-twitter-bg-subtle);--tblr-list-group-border-color:var(--tblr-twitter-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-active-color:var(--tblr-twitter-bg-subtle);--tblr-list-group-active-bg:var(--tblr-twitter-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-twitter-text-emphasis)}.list-group-item-linkedin{--tblr-list-group-color:var(--tblr-linkedin-text-emphasis);--tblr-list-group-bg:var(--tblr-linkedin-bg-subtle);--tblr-list-group-border-color:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-active-color:var(--tblr-linkedin-bg-subtle);--tblr-list-group-active-bg:var(--tblr-linkedin-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-linkedin-text-emphasis)}.list-group-item-google{--tblr-list-group-color:var(--tblr-google-text-emphasis);--tblr-list-group-bg:var(--tblr-google-bg-subtle);--tblr-list-group-border-color:var(--tblr-google-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-google-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-google-border-subtle);--tblr-list-group-active-color:var(--tblr-google-bg-subtle);--tblr-list-group-active-bg:var(--tblr-google-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-google-text-emphasis)}.list-group-item-youtube{--tblr-list-group-color:var(--tblr-youtube-text-emphasis);--tblr-list-group-bg:var(--tblr-youtube-bg-subtle);--tblr-list-group-border-color:var(--tblr-youtube-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-active-color:var(--tblr-youtube-bg-subtle);--tblr-list-group-active-bg:var(--tblr-youtube-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-youtube-text-emphasis)}.list-group-item-vimeo{--tblr-list-group-color:var(--tblr-vimeo-text-emphasis);--tblr-list-group-bg:var(--tblr-vimeo-bg-subtle);--tblr-list-group-border-color:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-active-color:var(--tblr-vimeo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vimeo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vimeo-text-emphasis)}.list-group-item-dribbble{--tblr-list-group-color:var(--tblr-dribbble-text-emphasis);--tblr-list-group-bg:var(--tblr-dribbble-bg-subtle);--tblr-list-group-border-color:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-active-color:var(--tblr-dribbble-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dribbble-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dribbble-text-emphasis)}.list-group-item-github{--tblr-list-group-color:var(--tblr-github-text-emphasis);--tblr-list-group-bg:var(--tblr-github-bg-subtle);--tblr-list-group-border-color:var(--tblr-github-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-github-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-github-border-subtle);--tblr-list-group-active-color:var(--tblr-github-bg-subtle);--tblr-list-group-active-bg:var(--tblr-github-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-github-text-emphasis)}.list-group-item-instagram{--tblr-list-group-color:var(--tblr-instagram-text-emphasis);--tblr-list-group-bg:var(--tblr-instagram-bg-subtle);--tblr-list-group-border-color:var(--tblr-instagram-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-active-color:var(--tblr-instagram-bg-subtle);--tblr-list-group-active-bg:var(--tblr-instagram-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-instagram-text-emphasis)}.list-group-item-pinterest{--tblr-list-group-color:var(--tblr-pinterest-text-emphasis);--tblr-list-group-bg:var(--tblr-pinterest-bg-subtle);--tblr-list-group-border-color:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-active-color:var(--tblr-pinterest-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pinterest-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pinterest-text-emphasis)}.list-group-item-vk{--tblr-list-group-color:var(--tblr-vk-text-emphasis);--tblr-list-group-bg:var(--tblr-vk-bg-subtle);--tblr-list-group-border-color:var(--tblr-vk-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vk-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vk-border-subtle);--tblr-list-group-active-color:var(--tblr-vk-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vk-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vk-text-emphasis)}.list-group-item-rss{--tblr-list-group-color:var(--tblr-rss-text-emphasis);--tblr-list-group-bg:var(--tblr-rss-bg-subtle);--tblr-list-group-border-color:var(--tblr-rss-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-rss-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-rss-border-subtle);--tblr-list-group-active-color:var(--tblr-rss-bg-subtle);--tblr-list-group-active-bg:var(--tblr-rss-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-rss-text-emphasis)}.list-group-item-flickr{--tblr-list-group-color:var(--tblr-flickr-text-emphasis);--tblr-list-group-bg:var(--tblr-flickr-bg-subtle);--tblr-list-group-border-color:var(--tblr-flickr-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-active-color:var(--tblr-flickr-bg-subtle);--tblr-list-group-active-bg:var(--tblr-flickr-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-flickr-text-emphasis)}.list-group-item-bitbucket{--tblr-list-group-color:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-bg:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-border-color:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-active-color:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-active-bg:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-bitbucket-text-emphasis)}.list-group-item-tabler{--tblr-list-group-color:var(--tblr-tabler-text-emphasis);--tblr-list-group-bg:var(--tblr-tabler-bg-subtle);--tblr-list-group-border-color:var(--tblr-tabler-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-active-color:var(--tblr-tabler-bg-subtle);--tblr-list-group-active-bg:var(--tblr-tabler-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-tabler-text-emphasis)}.btn-close{--tblr-btn-close-color:#182433;--tblr-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%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");--tblr-btn-close-opacity:0.4;--tblr-btn-close-hover-opacity:0.75;--tblr-btn-close-focus-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-btn-close-focus-opacity:1;--tblr-btn-close-disabled-opacity:0.25;--tblr-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--tblr-btn-close-color);background:transparent var(--tblr-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:4px;opacity:var(--tblr-btn-close-opacity)}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.btn-close-white{filter:var(--tblr-btn-close-white-filter)}[data-bs-theme=dark] .btn-close,body[data-bs-theme=dark] [data-bs-theme=light] .btn-close{filter:var(--tblr-btn-close-white-filter)}.toast{--tblr-toast-zindex:1090;--tblr-toast-padding-x:0.75rem;--tblr-toast-padding-y:0.5rem;--tblr-toast-spacing:calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width:350px;--tblr-toast-font-size:0.875rem;--tblr-toast-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-border-width:var(--tblr-border-width);--tblr-toast-border-color:var(--tblr-border-color);--tblr-toast-border-radius:var(--tblr-border-radius);--tblr-toast-box-shadow:var(--tblr-box-shadow);--tblr-toast-header-color:var(--tblr-secondary);--tblr-toast-header-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-header-border-color:var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex:1090;position:absolute;z-index:var(--tblr-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(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-left:calc(-.5 * var(--tblr-toast-padding-x));margin-right:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex:1055;--tblr-modal-width:540px;--tblr-modal-padding:1.5rem;--tblr-modal-margin:0.5rem;--tblr-modal-bg:var(--tblr-bg-surface);--tblr-modal-border-color:transparent;--tblr-modal-border-width:var(--tblr-border-width);--tblr-modal-border-radius:var(--tblr-border-radius-lg);--tblr-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-modal-inner-border-radius:calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x:1.5rem;--tblr-modal-header-padding-y:1.5rem;--tblr-modal-header-padding:1.5rem;--tblr-modal-header-border-color:var(--tblr-border-color);--tblr-modal-header-border-width:var(--tblr-border-width);--tblr-modal-title-line-height:1.4285714286;--tblr-modal-footer-gap:0.75rem;--tblr-modal-footer-bg:var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color:var(--tblr-border-color);--tblr-modal-footer-border-width:var(--tblr-border-width);position:fixed;top:0;right:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-1rem)}@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(--tblr-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(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex:1050;--tblr-backdrop-bg:#182433;--tblr-backdrop-opacity:0.24;position:fixed;top:0;right:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-right-radius:var(--tblr-modal-inner-border-radius);border-top-left-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin:calc(-.5 * var(--tblr-modal-header-padding-y)) auto calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x))}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-left-radius:var(--tblr-modal-inner-border-radius);border-bottom-right-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--tblr-modal-margin:1.75rem;--tblr-modal-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0}.modal-dialog{max-width:var(--tblr-modal-width);margin-left:auto;margin-right:auto}.modal-sm{--tblr-modal-width:380px}}@media (min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width:720px}}@media (min-width:1200px){.modal-xl{--tblr-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{--tblr-tooltip-zindex:1080;--tblr-tooltip-max-width:200px;--tblr-tooltip-padding-x:var(--tblr-spacer-2);--tblr-tooltip-padding-y:var(--tblr-spacer-2);--tblr-tooltip-font-size:0.765625rem;--tblr-tooltip-color:var(--tblr-light);--tblr-tooltip-bg:var(--tblr-bg-surface-dark);--tblr-tooltip-border-radius:var(--tblr-border-radius);--tblr-tooltip-opacity:0.9;--tblr-tooltip-arrow-width:0.8rem;--tblr-tooltip-arrow-height:0.4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:right;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(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-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(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--tblr-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(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-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(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex:1070;--tblr-popover-max-width:276px;--tblr-popover-font-size:0.765625rem;--tblr-popover-bg:var(--tblr-bg-surface);--tblr-popover-border-width:var(--tblr-border-width);--tblr-popover-border-color:var(--tblr-border-color);--tblr-popover-border-radius:var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius:calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-popover-header-padding-x:1rem;--tblr-popover-header-padding-y:0.5rem;--tblr-popover-header-font-size:0.875rem;--tblr-popover-header-color:inherit;--tblr-popover-header-bg:transparent;--tblr-popover-body-padding-x:1rem;--tblr-popover-body-padding-y:1rem;--tblr-popover-body-color:inherit;--tblr-popover-arrow-width:1rem;--tblr-popover-arrow-height:0.5rem;--tblr-popover-arrow-border:var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:right;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(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-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(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-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(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;right:50%;display:block;width:var(--tblr-popover-arrow-width);margin-right:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-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(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-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(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-right-radius:var(--tblr-popover-inner-border-radius);border-top-left-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-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:right;width:100%;margin-left:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(-100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{right:0}.carousel-control-next{left:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;left:0;bottom:0;right:0;z-index:2;display:flex;justify-content:center;padding:0;margin-left:15%;margin-bottom:1rem;margin-right:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-left:3px;margin-right:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;left:15%;bottom:1.25rem;right: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(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-border-width:2px;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-left-color:transparent}.spinner-border-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem;--tblr-spinner-border-width:1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--tblr-offcanvas-zindex:1045;--tblr-offcanvas-width:400px;--tblr-offcanvas-height:30vh;--tblr-offcanvas-padding-x:1.5rem;--tblr-offcanvas-padding-y:1.5rem;--tblr-offcanvas-color:var(--tblr-body-color);--tblr-offcanvas-bg:var(--tblr-bg-surface);--tblr-offcanvas-border-width:var(--tblr-border-width);--tblr-offcanvas-border-color:var(--tblr-border-color);--tblr-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-offcanvas-transition:transform 0.3s ease-in-out;--tblr-offcanvas-title-line-height:1.4285714286}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-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;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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{--tblr-offcanvas-height:auto;--tblr-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(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-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;right:0;z-index:1040;width:100vw;height:100vh;background-color:#182433}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-left:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 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:#fcfdfe!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-secondary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-success{color:#fcfdfe!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-info{color:#fcfdfe!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-warning{color:#fcfdfe!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-danger{color:#fcfdfe!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-light{color:#182433!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dark{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-muted{color:#fcfdfe!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-blue{color:#fcfdfe!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-azure{color:#fcfdfe!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-indigo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-purple{color:#fcfdfe!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pink{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-red{color:#fcfdfe!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-orange{color:#fcfdfe!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-yellow{color:#fcfdfe!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-lime{color:#fcfdfe!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-green{color:#fcfdfe!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-teal{color:#fcfdfe!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-cyan{color:#fcfdfe!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-facebook{color:#fcfdfe!important;background-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-twitter{color:#fcfdfe!important;background-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-linkedin{color:#fcfdfe!important;background-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-google{color:#fcfdfe!important;background-color:RGBA(var(--tblr-google-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-youtube{color:#fcfdfe!important;background-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vimeo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dribbble{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-github{color:#fcfdfe!important;background-color:RGBA(var(--tblr-github-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-instagram{color:#fcfdfe!important;background-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pinterest{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vk{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vk-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-rss{color:#fcfdfe!important;background-color:RGBA(var(--tblr-rss-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-flickr{color:#fcfdfe!important;background-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-bitbucket{color:#fcfdfe!important;background-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-tabler{color:#fcfdfe!important;background-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-bg-opacity,1))!important}.link-primary{color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--tblr-success-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--tblr-info-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--tblr-light-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(253,253,254,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(19,29,41,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important}.link-muted{color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important}.link-muted:focus,.link-muted:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-blue{color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important}.link-blue:focus,.link-blue:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-azure{color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important}.link-azure:focus,.link-azure:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-indigo{color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-indigo:focus,.link-indigo:hover{color:RGBA(53,79,188,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important}.link-purple{color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important}.link-purple:focus,.link-purple:hover{color:RGBA(139,50,161,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important}.link-pink{color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pink:focus,.link-pink:hover{color:RGBA(171,41,86,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important}.link-red{color:RGBA(var(--tblr-red-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important}.link-red:focus,.link-red:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-orange{color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important}.link-orange:focus,.link-orange:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-yellow{color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important}.link-yellow:focus,.link-yellow:hover{color:RGBA(196,127,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important}.link-lime{color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important}.link-lime:focus,.link-lime:hover{color:RGBA(93,147,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important}.link-green{color:RGBA(var(--tblr-green-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important}.link-green:focus,.link-green:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-teal{color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important}.link-teal:focus,.link-teal:hover{color:RGBA(10,133,96,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important}.link-cyan{color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important}.link-cyan:focus,.link-cyan:hover{color:RGBA(18,130,147,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important}.link-facebook{color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important}.link-facebook:focus,.link-facebook:hover{color:RGBA(19,95,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important}.link-twitter{color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important}.link-twitter:focus,.link-twitter:hover{color:RGBA(23,129,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important}.link-linkedin{color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important}.link-linkedin:focus,.link-linkedin:hover{color:RGBA(8,82,155,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important}.link-google{color:RGBA(var(--tblr-google-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important}.link-google:focus,.link-google:hover{color:RGBA(176,62,52,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important}.link-youtube{color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important}.link-youtube:focus,.link-youtube:hover{color:RGBA(204,0,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important}.link-vimeo{color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vimeo:focus,.link-vimeo:hover{color:RGBA(21,146,187,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important}.link-dribbble{color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dribbble:focus,.link-dribbble:hover{color:RGBA(187,61,110,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important}.link-github{color:RGBA(var(--tblr-github-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important}.link-github:focus,.link-github:hover{color:RGBA(19,18,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important}.link-instagram{color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important}.link-instagram:focus,.link-instagram:hover{color:RGBA(182,51,76,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important}.link-pinterest{color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pinterest:focus,.link-pinterest:hover{color:RGBA(151,6,22,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important}.link-vk{color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vk:focus,.link-vk:hover{color:RGBA(79,105,134,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important}.link-rss{color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important}.link-rss:focus,.link-rss:hover{color:RGBA(204,132,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important}.link-flickr{color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important}.link-flickr:focus,.link-flickr:hover{color:RGBA(0,79,176,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important}.link-bitbucket{color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important}.link-bitbucket:focus,.link-bitbucket:hover{color:RGBA(0,66,163,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important}.link-tabler{color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important}.link-tabler:focus,.link-tabler:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x,0) var(--tblr-focus-ring-y,0) var(--tblr-focus-ring-blur,0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--tblr-icon-link-transform,translate3d(-.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;right:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio:100%}.ratio-2x1{--tblr-aspect-ratio:50%}.ratio-1x2{--tblr-aspect-ratio:200%}.ratio-3x1{--tblr-aspect-ratio:33.3333333333%}.ratio-1x3{--tblr-aspect-ratio:300%}.ratio-4x3{--tblr-aspect-ratio:75%}.ratio-3x4{--tblr-aspect-ratio:133.3333333333%}.ratio-16x9{--tblr-aspect-ratio:56.25%}.ratio-9x16{--tblr-aspect-ratio:177.7777777778%}.ratio-21x9{--tblr-aspect-ratio:42.8571428571%}.ratio-9x21{--tblr-aspect-ratio:233.3333333333%}.fixed-top{position:fixed;top:0;left:0;right:0;z-index:1030}.fixed-bottom{position:fixed;left:0;bottom:0;right: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;left:0;bottom:0;right:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.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:right!important}.float-end{float:left!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color:rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color:rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color:rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color:rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color:rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color:rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color:rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color:rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color:rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color:rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color:rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color:rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color:rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color:rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color:rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color:rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color:rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color:rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color:rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color:rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-facebook{--tblr-focus-ring-color:rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-twitter{--tblr-focus-ring-color:rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-linkedin{--tblr-focus-ring-color:rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-google{--tblr-focus-ring-color:rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-youtube{--tblr-focus-ring-color:rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vimeo{--tblr-focus-ring-color:rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dribbble{--tblr-focus-ring-color:rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-github{--tblr-focus-ring-color:rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-instagram{--tblr-focus-ring-color:rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pinterest{--tblr-focus-ring-color:rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vk{--tblr-focus-ring-color:rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-rss{--tblr-focus-ring-color:rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-flickr{--tblr-focus-ring-color:rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-bitbucket{--tblr-focus-ring-color:rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-tabler{--tblr-focus-ring-color:rgba(var(--tblr-tabler-rgb), var(--tblr-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{right:0!important}.start-50{right:50%!important}.start-100{right:100%!important}.end-0{left:0!important}.end-50{left:50%!important}.end-100{left: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(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-wide{border:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-0{border-top:0!important}.border-end{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-0{border-left:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-0{border-right:0!important}.border-primary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-primary-rgb),var(--tblr-border-opacity))!important}.border-secondary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-secondary-rgb),var(--tblr-border-opacity))!important}.border-success{--tblr-border-opacity:1;border-color:rgba(var(--tblr-success-rgb),var(--tblr-border-opacity))!important}.border-info{--tblr-border-opacity:1;border-color:rgba(var(--tblr-info-rgb),var(--tblr-border-opacity))!important}.border-warning{--tblr-border-opacity:1;border-color:rgba(var(--tblr-warning-rgb),var(--tblr-border-opacity))!important}.border-danger{--tblr-border-opacity:1;border-color:rgba(var(--tblr-danger-rgb),var(--tblr-border-opacity))!important}.border-light{--tblr-border-opacity:1;border-color:rgba(var(--tblr-light-rgb),var(--tblr-border-opacity))!important}.border-dark{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dark-rgb),var(--tblr-border-opacity))!important}.border-muted{--tblr-border-opacity:1;border-color:rgba(var(--tblr-muted-rgb),var(--tblr-border-opacity))!important}.border-blue{--tblr-border-opacity:1;border-color:rgba(var(--tblr-blue-rgb),var(--tblr-border-opacity))!important}.border-azure{--tblr-border-opacity:1;border-color:rgba(var(--tblr-azure-rgb),var(--tblr-border-opacity))!important}.border-indigo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-indigo-rgb),var(--tblr-border-opacity))!important}.border-purple{--tblr-border-opacity:1;border-color:rgba(var(--tblr-purple-rgb),var(--tblr-border-opacity))!important}.border-pink{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pink-rgb),var(--tblr-border-opacity))!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-orange{--tblr-border-opacity:1;border-color:rgba(var(--tblr-orange-rgb),var(--tblr-border-opacity))!important}.border-yellow{--tblr-border-opacity:1;border-color:rgba(var(--tblr-yellow-rgb),var(--tblr-border-opacity))!important}.border-lime{--tblr-border-opacity:1;border-color:rgba(var(--tblr-lime-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-teal{--tblr-border-opacity:1;border-color:rgba(var(--tblr-teal-rgb),var(--tblr-border-opacity))!important}.border-cyan{--tblr-border-opacity:1;border-color:rgba(var(--tblr-cyan-rgb),var(--tblr-border-opacity))!important}.border-facebook{--tblr-border-opacity:1;border-color:rgba(var(--tblr-facebook-rgb),var(--tblr-border-opacity))!important}.border-twitter{--tblr-border-opacity:1;border-color:rgba(var(--tblr-twitter-rgb),var(--tblr-border-opacity))!important}.border-linkedin{--tblr-border-opacity:1;border-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-border-opacity))!important}.border-google{--tblr-border-opacity:1;border-color:rgba(var(--tblr-google-rgb),var(--tblr-border-opacity))!important}.border-youtube{--tblr-border-opacity:1;border-color:rgba(var(--tblr-youtube-rgb),var(--tblr-border-opacity))!important}.border-vimeo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-border-opacity))!important}.border-dribbble{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-border-opacity))!important}.border-github{--tblr-border-opacity:1;border-color:rgba(var(--tblr-github-rgb),var(--tblr-border-opacity))!important}.border-instagram{--tblr-border-opacity:1;border-color:rgba(var(--tblr-instagram-rgb),var(--tblr-border-opacity))!important}.border-pinterest{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-border-opacity))!important}.border-vk{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vk-rgb),var(--tblr-border-opacity))!important}.border-rss{--tblr-border-opacity:1;border-color:rgba(var(--tblr-rss-rgb),var(--tblr-border-opacity))!important}.border-flickr{--tblr-border-opacity:1;border-color:rgba(var(--tblr-flickr-rgb),var(--tblr-border-opacity))!important}.border-bitbucket{--tblr-border-opacity:1;border-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-border-opacity))!important}.border-tabler{--tblr-border-opacity:1;border-color:rgba(var(--tblr-tabler-rgb),var(--tblr-border-opacity))!important}.border-black{--tblr-border-opacity:1;border-color:rgba(var(--tblr-black-rgb),var(--tblr-border-opacity))!important}.border-white{--tblr-border-opacity:1;border-color:rgba(var(--tblr-white-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-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{--tblr-border-opacity:0.1}.border-opacity-25{--tblr-border-opacity:0.25}.border-opacity-50{--tblr-border-opacity:0.5}.border-opacity-75{--tblr-border-opacity:0.75}.border-opacity-100{--tblr-border-opacity:1}.w-0{width:0!important}.w-1{width:.25rem!important}.w-2{width:.5rem!important}.w-3{width:1rem!important}.w-4{width:1.5rem!important}.w-5{width:2rem!important}.w-6{width:3rem!important}.w-7{width:5rem!important}.w-8{width:8rem!important}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!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-0{height:0!important}.h-1{height:.25rem!important}.h-2{height:.5rem!important}.h-3{height:1rem!important}.h-4{height:1.5rem!important}.h-5{height:2rem!important}.h-6{height:3rem!important}.h-7{height:5rem!important}.h-8{height:8rem!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:3rem!important}.m-7{margin:5rem!important}.m-8{margin:8rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:2rem!important;margin-right:2rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.mx-7{margin-left:5rem!important;margin-right:5rem!important}.mx-8{margin-left:8rem!important;margin-right:8rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:3rem!important}.mt-7{margin-top:5rem!important}.mt-8{margin-top:8rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:2rem!important}.me-6{margin-left:3rem!important}.me-7{margin-left:5rem!important}.me-8{margin-left:8rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:3rem!important}.mb-7{margin-bottom:5rem!important}.mb-8{margin-bottom:8rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:2rem!important}.ms-6{margin-right:3rem!important}.ms-7{margin-right:5rem!important}.ms-8{margin-right:8rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:3rem!important}.p-7{padding:5rem!important}.p-8{padding:8rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:2rem!important;padding-right:2rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.px-7{padding-left:5rem!important;padding-right:5rem!important}.px-8{padding-left:8rem!important;padding-right:8rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:3rem!important}.pt-7{padding-top:5rem!important}.pt-8{padding-top:8rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:2rem!important}.pe-6{padding-left:3rem!important}.pe-7{padding-left:5rem!important}.pe-8{padding-left:8rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:3rem!important}.pb-7{padding-bottom:5rem!important}.pb-8{padding-bottom:8rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:2rem!important}.ps-6{padding-right:3rem!important}.ps-7{padding-right:5rem!important}.ps-8{padding-right:8rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:3rem!important}.gap-7{gap:5rem!important}.gap-8{gap:8rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:3rem!important}.row-gap-7{row-gap:5rem!important}.row-gap-8{row-gap:8rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!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:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:right!important}.text-end{text-align:left!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-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity:1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity:1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--tblr-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity:1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity:1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity:1;color:inherit!important}.text-opacity-25{--tblr-text-opacity:0.25}.text-opacity-50{--tblr-text-opacity:0.5}.text-opacity-75{--tblr-text-opacity:0.75}.text-opacity-100{--tblr-text-opacity:1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10{--tblr-link-opacity:0.1}.link-opacity-10-hover:hover{--tblr-link-opacity:0.1}.link-opacity-25{--tblr-link-opacity:0.25}.link-opacity-25-hover:hover{--tblr-link-opacity:0.25}.link-opacity-50{--tblr-link-opacity:0.5}.link-opacity-50-hover:hover{--tblr-link-opacity:0.5}.link-opacity-75{--tblr-link-opacity:0.75}.link-opacity-75-hover:hover{--tblr-link-opacity:0.75}.link-opacity-100{--tblr-link-opacity:1}.link-opacity-100-hover:hover{--tblr-link-opacity:1}.link-offset-1{text-underline-offset:.125em!important}.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2{text-underline-offset:.25em!important}.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3{text-underline-offset:.375em!important}.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-facebook{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-twitter{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-linkedin{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-google{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-youtube{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vimeo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dribbble{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-github{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-instagram{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pinterest{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vk{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-rss{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-flickr{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-bitbucket{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-tabler{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-underline-opacity-0{--tblr-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity:0}.link-underline-opacity-10{--tblr-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity:0.1}.link-underline-opacity-25{--tblr-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity:0.25}.link-underline-opacity-50{--tblr-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity:0.5}.link-underline-opacity-75{--tblr-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity:0.75}.link-underline-opacity-100{--tblr-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity:1}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity:0.1}.bg-opacity-25{--tblr-bg-opacity:0.25}.bg-opacity-50{--tblr-bg-opacity:0.5}.bg-opacity-75{--tblr-bg-opacity:0.75}.bg-opacity-100{--tblr-bg-opacity:1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-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;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-right-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-right-radius:0!important;border-top-left-radius:0!important}.rounded-top-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-right-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-right-radius:50%!important;border-top-left-radius:50%!important}.rounded-top-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-left-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-end-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-left-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-end-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-left-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-bottom-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-bottom-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-right-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-start-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-right-radius:50%!important;border-top-right-radius:50%!important}.rounded-start-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-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}.object-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-scale-down{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-none{-o-object-fit:none!important;object-fit:none!important}.tracking-tight{letter-spacing:-.05em!important}.tracking-normal{letter-spacing:0!important}.tracking-wide{letter-spacing:.05em!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:-webkit-grab!important;cursor:grab!important}.cursor-grabbing{cursor:-webkit-grabbing!important;cursor:grabbing!important}.border-x{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-0{border-right:0!important;border-left:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{-moz-columns:2!important;columns:2!important}.columns-3{-moz-columns:3!important;columns:3!important}.columns-4{-moz-columns:4!important;columns:4!important}@media (min-width:576px){.float-sm-start{float:right!important}.float-sm-end{float:left!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:3rem!important}.m-sm-7{margin:5rem!important}.m-sm-8{margin:8rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:2rem!important;margin-right:2rem!important}.mx-sm-6{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-7{margin-left:5rem!important;margin-right:5rem!important}.mx-sm-8{margin-left:8rem!important;margin-right:8rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-sm-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:3rem!important}.mt-sm-7{margin-top:5rem!important}.mt-sm-8{margin-top:8rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:2rem!important}.me-sm-6{margin-left:3rem!important}.me-sm-7{margin-left:5rem!important}.me-sm-8{margin-left:8rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:3rem!important}.mb-sm-7{margin-bottom:5rem!important}.mb-sm-8{margin-bottom:8rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:2rem!important}.ms-sm-6{margin-right:3rem!important}.ms-sm-7{margin-right:5rem!important}.ms-sm-8{margin-right:8rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:3rem!important}.p-sm-7{padding:5rem!important}.p-sm-8{padding:8rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:2rem!important;padding-right:2rem!important}.px-sm-6{padding-left:3rem!important;padding-right:3rem!important}.px-sm-7{padding-left:5rem!important;padding-right:5rem!important}.px-sm-8{padding-left:8rem!important;padding-right:8rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-sm-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-sm-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:3rem!important}.pt-sm-7{padding-top:5rem!important}.pt-sm-8{padding-top:8rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:2rem!important}.pe-sm-6{padding-left:3rem!important}.pe-sm-7{padding-left:5rem!important}.pe-sm-8{padding-left:8rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:3rem!important}.pb-sm-7{padding-bottom:5rem!important}.pb-sm-8{padding-bottom:8rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:2rem!important}.ps-sm-6{padding-right:3rem!important}.ps-sm-7{padding-right:5rem!important}.ps-sm-8{padding-right:8rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:3rem!important}.gap-sm-7{gap:5rem!important}.gap-sm-8{gap:8rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:3rem!important}.row-gap-sm-7{row-gap:5rem!important}.row-gap-sm-8{row-gap:8rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-sm-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-sm-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-sm-start{text-align:right!important}.text-sm-end{text-align:left!important}.text-sm-center{text-align:center!important}.columns-sm-2{-moz-columns:2!important;columns:2!important}.columns-sm-3{-moz-columns:3!important;columns:3!important}.columns-sm-4{-moz-columns:4!important;columns:4!important}}@media (min-width:768px){.float-md-start{float:right!important}.float-md-end{float:left!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:3rem!important}.m-md-7{margin:5rem!important}.m-md-8{margin:8rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:2rem!important;margin-right:2rem!important}.mx-md-6{margin-left:3rem!important;margin-right:3rem!important}.mx-md-7{margin-left:5rem!important;margin-right:5rem!important}.mx-md-8{margin-left:8rem!important;margin-right:8rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-md-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:3rem!important}.mt-md-7{margin-top:5rem!important}.mt-md-8{margin-top:8rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:2rem!important}.me-md-6{margin-left:3rem!important}.me-md-7{margin-left:5rem!important}.me-md-8{margin-left:8rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:3rem!important}.mb-md-7{margin-bottom:5rem!important}.mb-md-8{margin-bottom:8rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:2rem!important}.ms-md-6{margin-right:3rem!important}.ms-md-7{margin-right:5rem!important}.ms-md-8{margin-right:8rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:3rem!important}.p-md-7{padding:5rem!important}.p-md-8{padding:8rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:2rem!important;padding-right:2rem!important}.px-md-6{padding-left:3rem!important;padding-right:3rem!important}.px-md-7{padding-left:5rem!important;padding-right:5rem!important}.px-md-8{padding-left:8rem!important;padding-right:8rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-md-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-md-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:3rem!important}.pt-md-7{padding-top:5rem!important}.pt-md-8{padding-top:8rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:2rem!important}.pe-md-6{padding-left:3rem!important}.pe-md-7{padding-left:5rem!important}.pe-md-8{padding-left:8rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:3rem!important}.pb-md-7{padding-bottom:5rem!important}.pb-md-8{padding-bottom:8rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:2rem!important}.ps-md-6{padding-right:3rem!important}.ps-md-7{padding-right:5rem!important}.ps-md-8{padding-right:8rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:3rem!important}.gap-md-7{gap:5rem!important}.gap-md-8{gap:8rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:3rem!important}.row-gap-md-7{row-gap:5rem!important}.row-gap-md-8{row-gap:8rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-md-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-md-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-md-start{text-align:right!important}.text-md-end{text-align:left!important}.text-md-center{text-align:center!important}.columns-md-2{-moz-columns:2!important;columns:2!important}.columns-md-3{-moz-columns:3!important;columns:3!important}.columns-md-4{-moz-columns:4!important;columns:4!important}}@media (min-width:992px){.float-lg-start{float:right!important}.float-lg-end{float:left!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:3rem!important}.m-lg-7{margin:5rem!important}.m-lg-8{margin:8rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:2rem!important;margin-right:2rem!important}.mx-lg-6{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-7{margin-left:5rem!important;margin-right:5rem!important}.mx-lg-8{margin-left:8rem!important;margin-right:8rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-lg-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:3rem!important}.mt-lg-7{margin-top:5rem!important}.mt-lg-8{margin-top:8rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:2rem!important}.me-lg-6{margin-left:3rem!important}.me-lg-7{margin-left:5rem!important}.me-lg-8{margin-left:8rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:3rem!important}.mb-lg-7{margin-bottom:5rem!important}.mb-lg-8{margin-bottom:8rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:2rem!important}.ms-lg-6{margin-right:3rem!important}.ms-lg-7{margin-right:5rem!important}.ms-lg-8{margin-right:8rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:3rem!important}.p-lg-7{padding:5rem!important}.p-lg-8{padding:8rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:2rem!important;padding-right:2rem!important}.px-lg-6{padding-left:3rem!important;padding-right:3rem!important}.px-lg-7{padding-left:5rem!important;padding-right:5rem!important}.px-lg-8{padding-left:8rem!important;padding-right:8rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-lg-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-lg-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:3rem!important}.pt-lg-7{padding-top:5rem!important}.pt-lg-8{padding-top:8rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:2rem!important}.pe-lg-6{padding-left:3rem!important}.pe-lg-7{padding-left:5rem!important}.pe-lg-8{padding-left:8rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:3rem!important}.pb-lg-7{padding-bottom:5rem!important}.pb-lg-8{padding-bottom:8rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:2rem!important}.ps-lg-6{padding-right:3rem!important}.ps-lg-7{padding-right:5rem!important}.ps-lg-8{padding-right:8rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:3rem!important}.gap-lg-7{gap:5rem!important}.gap-lg-8{gap:8rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:3rem!important}.row-gap-lg-7{row-gap:5rem!important}.row-gap-lg-8{row-gap:8rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-lg-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-lg-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-lg-start{text-align:right!important}.text-lg-end{text-align:left!important}.text-lg-center{text-align:center!important}.columns-lg-2{-moz-columns:2!important;columns:2!important}.columns-lg-3{-moz-columns:3!important;columns:3!important}.columns-lg-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1200px){.float-xl-start{float:right!important}.float-xl-end{float:left!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:3rem!important}.m-xl-7{margin:5rem!important}.m-xl-8{margin:8rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:2rem!important;margin-right:2rem!important}.mx-xl-6{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-7{margin-left:5rem!important;margin-right:5rem!important}.mx-xl-8{margin-left:8rem!important;margin-right:8rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:3rem!important}.mt-xl-7{margin-top:5rem!important}.mt-xl-8{margin-top:8rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:2rem!important}.me-xl-6{margin-left:3rem!important}.me-xl-7{margin-left:5rem!important}.me-xl-8{margin-left:8rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:3rem!important}.mb-xl-7{margin-bottom:5rem!important}.mb-xl-8{margin-bottom:8rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:2rem!important}.ms-xl-6{margin-right:3rem!important}.ms-xl-7{margin-right:5rem!important}.ms-xl-8{margin-right:8rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:3rem!important}.p-xl-7{padding:5rem!important}.p-xl-8{padding:8rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:2rem!important;padding-right:2rem!important}.px-xl-6{padding-left:3rem!important;padding-right:3rem!important}.px-xl-7{padding-left:5rem!important;padding-right:5rem!important}.px-xl-8{padding-left:8rem!important;padding-right:8rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:3rem!important}.pt-xl-7{padding-top:5rem!important}.pt-xl-8{padding-top:8rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:2rem!important}.pe-xl-6{padding-left:3rem!important}.pe-xl-7{padding-left:5rem!important}.pe-xl-8{padding-left:8rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:3rem!important}.pb-xl-7{padding-bottom:5rem!important}.pb-xl-8{padding-bottom:8rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:2rem!important}.ps-xl-6{padding-right:3rem!important}.ps-xl-7{padding-right:5rem!important}.ps-xl-8{padding-right:8rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:3rem!important}.gap-xl-7{gap:5rem!important}.gap-xl-8{gap:8rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:3rem!important}.row-gap-xl-7{row-gap:5rem!important}.row-gap-xl-8{row-gap:8rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xl-start{text-align:right!important}.text-xl-end{text-align:left!important}.text-xl-center{text-align:center!important}.columns-xl-2{-moz-columns:2!important;columns:2!important}.columns-xl-3{-moz-columns:3!important;columns:3!important}.columns-xl-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1400px){.float-xxl-start{float:right!important}.float-xxl-end{float:left!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:3rem!important}.m-xxl-7{margin:5rem!important}.m-xxl-8{margin:8rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:2rem!important;margin-right:2rem!important}.mx-xxl-6{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-7{margin-left:5rem!important;margin-right:5rem!important}.mx-xxl-8{margin-left:8rem!important;margin-right:8rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xxl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:3rem!important}.mt-xxl-7{margin-top:5rem!important}.mt-xxl-8{margin-top:8rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:2rem!important}.me-xxl-6{margin-left:3rem!important}.me-xxl-7{margin-left:5rem!important}.me-xxl-8{margin-left:8rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:3rem!important}.mb-xxl-7{margin-bottom:5rem!important}.mb-xxl-8{margin-bottom:8rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:2rem!important}.ms-xxl-6{margin-right:3rem!important}.ms-xxl-7{margin-right:5rem!important}.ms-xxl-8{margin-right:8rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:3rem!important}.p-xxl-7{padding:5rem!important}.p-xxl-8{padding:8rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:2rem!important;padding-right:2rem!important}.px-xxl-6{padding-left:3rem!important;padding-right:3rem!important}.px-xxl-7{padding-left:5rem!important;padding-right:5rem!important}.px-xxl-8{padding-left:8rem!important;padding-right:8rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xxl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xxl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:3rem!important}.pt-xxl-7{padding-top:5rem!important}.pt-xxl-8{padding-top:8rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:2rem!important}.pe-xxl-6{padding-left:3rem!important}.pe-xxl-7{padding-left:5rem!important}.pe-xxl-8{padding-left:8rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:3rem!important}.pb-xxl-7{padding-bottom:5rem!important}.pb-xxl-8{padding-bottom:8rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:2rem!important}.ps-xxl-6{padding-right:3rem!important}.ps-xxl-7{padding-right:5rem!important}.ps-xxl-8{padding-right:8rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:3rem!important}.gap-xxl-7{gap:5rem!important}.gap-xxl-8{gap:8rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:3rem!important}.row-gap-xxl-7{row-gap:5rem!important}.row-gap-xxl-8{row-gap:8rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xxl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xxl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xxl-start{text-align:right!important}.text-xxl-end{text-align:left!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{-moz-columns:2!important;columns:2!important}.columns-xxl-3{-moz-columns:3!important;columns:3!important}.columns-xxl-4{-moz-columns:4!important;columns:4!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}}:host,:root{font-size:16px;height:100%}:host,:root,[data-bs-theme=light]{--tblr-primary:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-primary-fg:var(--tblr-light);--tblr-primary-darken:#004c95;--tblr-primary-lt:#e6eef6;--tblr-primary-lt-rgb:230,238,246;--tblr-secondary:#667382;--tblr-secondary-rgb:102,115,130;--tblr-secondary-fg:var(--tblr-light);--tblr-secondary-darken:#5c6875;--tblr-secondary-lt:#f0f1f3;--tblr-secondary-lt-rgb:240,241,243;--tblr-success:#2fb344;--tblr-success-rgb:47,179,68;--tblr-success-fg:var(--tblr-light);--tblr-success-darken:#2aa13d;--tblr-success-lt:#eaf7ec;--tblr-success-lt-rgb:234,247,236;--tblr-info:#4299e1;--tblr-info-rgb:66,153,225;--tblr-info-fg:var(--tblr-light);--tblr-info-darken:#3b8acb;--tblr-info-lt:#ecf5fc;--tblr-info-lt-rgb:236,245,252;--tblr-warning:#f76707;--tblr-warning-rgb:247,103,7;--tblr-warning-fg:var(--tblr-light);--tblr-warning-darken:#de5d06;--tblr-warning-lt:#fef0e6;--tblr-warning-lt-rgb:254,240,230;--tblr-danger:#d63939;--tblr-danger-rgb:214,57,57;--tblr-danger-fg:var(--tblr-light);--tblr-danger-darken:#c13333;--tblr-danger-lt:#fbebeb;--tblr-danger-lt-rgb:251,235,235;--tblr-light:#fcfdfe;--tblr-light-rgb:252,253,254;--tblr-light-fg:var(--tblr-dark);--tblr-light-darken:#e3e4e5;--tblr-light-lt:white;--tblr-light-lt-rgb:255,255,255;--tblr-dark:#182433;--tblr-dark-rgb:24,36,51;--tblr-dark-fg:var(--tblr-light);--tblr-dark-darken:#16202e;--tblr-dark-lt:#e8e9eb;--tblr-dark-lt-rgb:232,233,235;--tblr-muted:#667382;--tblr-muted-rgb:102,115,130;--tblr-muted-fg:var(--tblr-light);--tblr-muted-darken:#5c6875;--tblr-muted-lt:#f0f1f3;--tblr-muted-lt-rgb:240,241,243;--tblr-blue:#0054a6;--tblr-blue-rgb:0,84,166;--tblr-blue-fg:var(--tblr-light);--tblr-blue-darken:#004c95;--tblr-blue-lt:#e6eef6;--tblr-blue-lt-rgb:230,238,246;--tblr-azure:#4299e1;--tblr-azure-rgb:66,153,225;--tblr-azure-fg:var(--tblr-light);--tblr-azure-darken:#3b8acb;--tblr-azure-lt:#ecf5fc;--tblr-azure-lt-rgb:236,245,252;--tblr-indigo:#4263eb;--tblr-indigo-rgb:66,99,235;--tblr-indigo-fg:var(--tblr-light);--tblr-indigo-darken:#3b59d4;--tblr-indigo-lt:#eceffd;--tblr-indigo-lt-rgb:236,239,253;--tblr-purple:#ae3ec9;--tblr-purple-rgb:174,62,201;--tblr-purple-fg:var(--tblr-light);--tblr-purple-darken:#9d38b5;--tblr-purple-lt:#f7ecfa;--tblr-purple-lt-rgb:247,236,250;--tblr-pink:#d6336c;--tblr-pink-rgb:214,51,108;--tblr-pink-fg:var(--tblr-light);--tblr-pink-darken:#c12e61;--tblr-pink-lt:#fbebf0;--tblr-pink-lt-rgb:251,235,240;--tblr-red:#d63939;--tblr-red-rgb:214,57,57;--tblr-red-fg:var(--tblr-light);--tblr-red-darken:#c13333;--tblr-red-lt:#fbebeb;--tblr-red-lt-rgb:251,235,235;--tblr-orange:#f76707;--tblr-orange-rgb:247,103,7;--tblr-orange-fg:var(--tblr-light);--tblr-orange-darken:#de5d06;--tblr-orange-lt:#fef0e6;--tblr-orange-lt-rgb:254,240,230;--tblr-yellow:#f59f00;--tblr-yellow-rgb:245,159,0;--tblr-yellow-fg:var(--tblr-light);--tblr-yellow-darken:#dd8f00;--tblr-yellow-lt:#fef5e6;--tblr-yellow-lt-rgb:254,245,230;--tblr-lime:#74b816;--tblr-lime-rgb:116,184,22;--tblr-lime-fg:var(--tblr-light);--tblr-lime-darken:#68a614;--tblr-lime-lt:#f1f8e8;--tblr-lime-lt-rgb:241,248,232;--tblr-green:#2fb344;--tblr-green-rgb:47,179,68;--tblr-green-fg:var(--tblr-light);--tblr-green-darken:#2aa13d;--tblr-green-lt:#eaf7ec;--tblr-green-lt-rgb:234,247,236;--tblr-teal:#0ca678;--tblr-teal-rgb:12,166,120;--tblr-teal-fg:var(--tblr-light);--tblr-teal-darken:#0b956c;--tblr-teal-lt:#e7f6f2;--tblr-teal-lt-rgb:231,246,242;--tblr-cyan:#17a2b8;--tblr-cyan-rgb:23,162,184;--tblr-cyan-fg:var(--tblr-light);--tblr-cyan-darken:#1592a6;--tblr-cyan-lt:#e8f6f8;--tblr-cyan-lt-rgb:232,246,248;--tblr-facebook:#1877f2;--tblr-facebook-rgb:24,119,242;--tblr-facebook-fg:var(--tblr-light);--tblr-facebook-darken:#166bda;--tblr-facebook-lt:#e8f1fe;--tblr-facebook-lt-rgb:232,241,254;--tblr-twitter:#1da1f2;--tblr-twitter-rgb:29,161,242;--tblr-twitter-fg:var(--tblr-light);--tblr-twitter-darken:#1a91da;--tblr-twitter-lt:#e8f6fe;--tblr-twitter-lt-rgb:232,246,254;--tblr-linkedin:#0a66c2;--tblr-linkedin-rgb:10,102,194;--tblr-linkedin-fg:var(--tblr-light);--tblr-linkedin-darken:#095caf;--tblr-linkedin-lt:#e7f0f9;--tblr-linkedin-lt-rgb:231,240,249;--tblr-google:#dc4e41;--tblr-google-rgb:220,78,65;--tblr-google-fg:var(--tblr-light);--tblr-google-darken:#c6463b;--tblr-google-lt:#fcedec;--tblr-google-lt-rgb:252,237,236;--tblr-youtube:#ff0000;--tblr-youtube-rgb:255,0,0;--tblr-youtube-fg:var(--tblr-light);--tblr-youtube-darken:#e60000;--tblr-youtube-lt:#ffe6e6;--tblr-youtube-lt-rgb:255,230,230;--tblr-vimeo:#1ab7ea;--tblr-vimeo-rgb:26,183,234;--tblr-vimeo-fg:var(--tblr-light);--tblr-vimeo-darken:#17a5d3;--tblr-vimeo-lt:#e8f8fd;--tblr-vimeo-lt-rgb:232,248,253;--tblr-dribbble:#ea4c89;--tblr-dribbble-rgb:234,76,137;--tblr-dribbble-fg:var(--tblr-light);--tblr-dribbble-darken:#d3447b;--tblr-dribbble-lt:#fdedf3;--tblr-dribbble-lt-rgb:253,237,243;--tblr-github:#181717;--tblr-github-rgb:24,23,23;--tblr-github-fg:var(--tblr-light);--tblr-github-darken:#161515;--tblr-github-lt:#e8e8e8;--tblr-github-lt-rgb:232,232,232;--tblr-instagram:#e4405f;--tblr-instagram-rgb:228,64,95;--tblr-instagram-fg:var(--tblr-light);--tblr-instagram-darken:#cd3a56;--tblr-instagram-lt:#fcecef;--tblr-instagram-lt-rgb:252,236,239;--tblr-pinterest:#bd081c;--tblr-pinterest-rgb:189,8,28;--tblr-pinterest-fg:var(--tblr-light);--tblr-pinterest-darken:#aa0719;--tblr-pinterest-lt:#f8e6e8;--tblr-pinterest-lt-rgb:248,230,232;--tblr-vk:#6383a8;--tblr-vk-rgb:99,131,168;--tblr-vk-fg:var(--tblr-light);--tblr-vk-darken:#597697;--tblr-vk-lt:#eff3f6;--tblr-vk-lt-rgb:239,243,246;--tblr-rss:#ffa500;--tblr-rss-rgb:255,165,0;--tblr-rss-fg:var(--tblr-light);--tblr-rss-darken:#e69500;--tblr-rss-lt:#fff6e6;--tblr-rss-lt-rgb:255,246,230;--tblr-flickr:#0063dc;--tblr-flickr-rgb:0,99,220;--tblr-flickr-fg:var(--tblr-light);--tblr-flickr-darken:#0059c6;--tblr-flickr-lt:#e6effc;--tblr-flickr-lt-rgb:230,239,252;--tblr-bitbucket:#0052cc;--tblr-bitbucket-rgb:0,82,204;--tblr-bitbucket-fg:var(--tblr-light);--tblr-bitbucket-darken:#004ab8;--tblr-bitbucket-lt:#e6eefa;--tblr-bitbucket-lt-rgb:230,238,250;--tblr-tabler:#0054a6;--tblr-tabler-rgb:0,84,166;--tblr-tabler-fg:var(--tblr-light);--tblr-tabler-darken:#004c95;--tblr-tabler-lt:#e6eef6;--tblr-tabler-lt-rgb:230,238,246;--tblr-gray-50:#fcfdfe;--tblr-gray-50-rgb:252,253,254;--tblr-gray-50-fg:var(--tblr-dark);--tblr-gray-50-darken:#e3e4e5;--tblr-gray-50-lt:white;--tblr-gray-50-lt-rgb:255,255,255;--tblr-gray-100:#f6f8fb;--tblr-gray-100-rgb:246,248,251;--tblr-gray-100-fg:var(--tblr-dark);--tblr-gray-100-darken:#dddfe2;--tblr-gray-100-lt:#fefeff;--tblr-gray-100-lt-rgb:254,254,255;--tblr-gray-200:#eef1f4;--tblr-gray-200-rgb:238,241,244;--tblr-gray-200-fg:var(--tblr-dark);--tblr-gray-200-darken:#d6d9dc;--tblr-gray-200-lt:#fdfefe;--tblr-gray-200-lt-rgb:253,254,254;--tblr-gray-300:#dadfe5;--tblr-gray-300-rgb:218,223,229;--tblr-gray-300-fg:var(--tblr-dark);--tblr-gray-300-darken:#c4c9ce;--tblr-gray-300-lt:#fbfcfc;--tblr-gray-300-lt-rgb:251,252,252;--tblr-gray-400:#bbc3cd;--tblr-gray-400-rgb:187,195,205;--tblr-gray-400-fg:var(--tblr-light);--tblr-gray-400-darken:#a8b0b9;--tblr-gray-400-lt:#f8f9fa;--tblr-gray-400-lt-rgb:248,249,250;--tblr-gray-500:#929dab;--tblr-gray-500-rgb:146,157,171;--tblr-gray-500-fg:var(--tblr-light);--tblr-gray-500-darken:#838d9a;--tblr-gray-500-lt:#f4f5f7;--tblr-gray-500-lt-rgb:244,245,247;--tblr-gray-600:#667382;--tblr-gray-600-rgb:102,115,130;--tblr-gray-600-fg:var(--tblr-light);--tblr-gray-600-darken:#5c6875;--tblr-gray-600-lt:#f0f1f3;--tblr-gray-600-lt-rgb:240,241,243;--tblr-gray-700:#3a4859;--tblr-gray-700-rgb:58,72,89;--tblr-gray-700-fg:var(--tblr-light);--tblr-gray-700-darken:#344150;--tblr-gray-700-lt:#ebedee;--tblr-gray-700-lt-rgb:235,237,238;--tblr-gray-800:#182433;--tblr-gray-800-rgb:24,36,51;--tblr-gray-800-fg:var(--tblr-light);--tblr-gray-800-darken:#16202e;--tblr-gray-800-lt:#e8e9eb;--tblr-gray-800-lt-rgb:232,233,235;--tblr-gray-900:#040a11;--tblr-gray-900-rgb:4,10,17;--tblr-gray-900-fg:var(--tblr-light);--tblr-gray-900-darken:#04090f;--tblr-gray-900-lt:#e6e7e7;--tblr-gray-900-lt-rgb:230,231,231;--tblr-spacer-0:0;--tblr-spacer-1:0.25rem;--tblr-spacer-2:0.5rem;--tblr-spacer-3:1rem;--tblr-spacer-4:1.5rem;--tblr-spacer-5:2rem;--tblr-spacer-6:3rem;--tblr-spacer-7:5rem;--tblr-spacer-8:8rem;--tblr-spacer:1rem;--tblr-bg-surface:var(--tblr-white);--tblr-bg-surface-secondary:var(--tblr-gray-100);--tblr-bg-surface-tertiary:var(--tblr-gray-50);--tblr-bg-surface-dark:var(--tblr-dark);--tblr-bg-forms:var(--tblr-bg-surface);--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-dark-color:#bbc3cd;--tblr-border-dark-color-translucent:rgba(4, 32, 69, 0.27);--tblr-border-active-color:#b6bcc3;--tblr-icon-color:var(--tblr-gray-500);--tblr-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-disabled-bg:var(--tblr-bg-surface-secondary);--tblr-disabled-color:var(--tblr-gray-300);--tblr-code-color:var(--tblr-gray-600);--tblr-code-bg:var(--tblr-bg-surface-secondary);--tblr-dark-mode-border-color:#1f2e41;--tblr-dark-mode-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-dark-mode-border-color-active:#2c415d;--tblr-dark-mode-border-dark-color:#1f2e41;--tblr-page-padding:var(--tblr-spacer-3);--tblr-page-padding-y:var(--tblr-spacer-4);--tblr-font-weight-light:300;--tblr-font-weight-normal:400;--tblr-font-weight-medium:500;--tblr-font-weight-bold:600;--tblr-font-weight-headings:var(--tblr-font-weight-bold);--tblr-font-size-h1:1.5rem;--tblr-font-size-h2:1.25rem;--tblr-font-size-h3:1rem;--tblr-font-size-h4:0.875rem;--tblr-font-size-h5:0.75rem;--tblr-font-size-h6:0.625rem;--tblr-line-height-h1:2rem;--tblr-line-height-h2:1.75rem;--tblr-line-height-h3:1.5rem;--tblr-line-height-h4:1.25rem;--tblr-line-height-h5:1rem;--tblr-line-height-h6:1rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-border:inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-box-shadow-transparent:0 0 0 0 transparent;--tblr-box-shadow-input:0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06);--tblr-box-shadow-card:0 0 4px rgba(var(--tblr-body-color-rgb), 0.04);--tblr-box-shadow-card-hover:rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0;--tblr-box-shadow-dropdown:0 16px 24px 2px rgba(0, 0, 0, 0.07),0 6px 30px 5px rgba(0, 0, 0, 0.06),0 8px 10px -5px rgba(0, 0, 0, 0.1)}@media (max-width:991.98px){:host,:root,[data-bs-theme=light]{--tblr-page-padding:var(--tblr-spacer-2)}}@keyframes pulse{from{opacity:1;transform:scale3d(.8,.8,.8)}50%{transform:scale3d(1,1,1);opacity:1}to{opacity:1;transform:scale3d(.8,.8,.8)}}@keyframes tada{0%{transform:scale3d(1,1,1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}50%{transform:scale3d(1,1,1)}}@keyframes rotate-360{from{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes blink{from{opacity:0}50%{opacity:1}to{opacity:0}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0;position:relative;min-height:100%;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:0 0}}*{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){::-webkit-scrollbar{-webkit-transition:none;transition:none}}::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}::-webkit-scrollbar-track{background:0 0}:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}::-webkit-scrollbar-corner{background:0 0}.layout-fluid .container,.layout-fluid [class*=" container-"],.layout-fluid [class^=container-]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius:0;--tblr-theme-boxed-width:1320px}@media (min-width:768px){.layout-boxed{background:#182433 linear-gradient(to left,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius:4px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media (min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-right-radius:var(--tblr-theme-boxed-border-radius);border-top-left-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg:var(--tblr-bg-surface);--tblr-navbar-border-width:var(--tblr-border-width);--tblr-navbar-active-border-color:var(--tblr-primary);--tblr-navbar-active-bg:rgba(0, 0, 0, 0.06);--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-border-color:var(--tblr-border-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2rem;min-height:2rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;left:.375rem;transform:translate(-50%,-50%)}.navbar-nav{margin:0;padding:0}@media (max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s;position:relative}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon:after,.navbar-toggler-icon:before{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;right:0;transition:inherit}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon:after,.navbar-toggler-icon:before{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(-45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media (prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color:transparent!important;background:0 0!important}.navbar-nav{align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media (min-width:576px){.navbar-vertical.navbar-expand-sm{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:576px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media (min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-right:15rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-vertical.navbar-expand-md{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media (min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-right:15rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:992px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-right:15rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1200px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-right:15rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1400px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-right:15rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}@media (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-right:15rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;right:0;left:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center .container{margin-top:auto;margin-bottom:auto}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y)}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media (min-width:768px){.page-cover{min-height:12rem}}@media (min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;top:0;right:0;left:0;bottom:0;background-image:linear-gradient(-180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h4);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-left:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur:20px;--tblr-page-cover-padding:1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur,0));right:calc(-2 * var(--tblr-page-cover-blur,0));left:calc(-2 * var(--tblr-page-cover-blur,0));bottom:calc(-2 * var(--tblr-page-cover-blur,0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:#fff;padding:2rem 0;color:var(--tblr-secondary);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}body.theme-dark .hide-theme-dark,body[data-bs-theme=dark] .hide-theme-dark{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-muted:#3a4859;--tblr-body-bg:#151f2c;--tblr-body-bg-rgb:21,31,44;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-bg-forms:#151f2c;--tblr-bg-surface:#182433;--tblr-bg-surface-dark:#151f2c;--tblr-bg-surface-secondary:#1b293a;--tblr-bg-surface-tertiary:#151f2c;--tblr-link-color:#0069cf;--tblr-link-hover-color:#0054a6;--tblr-active-bg:#1b293a;--tblr-disabled-color:var(--tblr-gray-700);--tblr-border-color:var(--tblr-dark-mode-border-color);--tblr-border-color-translucent:var( + --tblr-dark-mode-border-color-translucent + );--tblr-border-dark-color:var(--tblr-dark-mode-border-dark-color);--tblr-border-color-active:var( + --tblr-dark-mode-border-color-active + );--tblr-btn-color:#151f2c;--tblr-code-color:var(--tblr-body-color);--tblr-code-bg:#1f2e41;--tblr-primary-lt:#16293f;--tblr-primary-lt-rgb:22,41,63;--tblr-secondary-lt:#202c3b;--tblr-secondary-lt-rgb:32,44,59;--tblr-success-lt:#1a3235;--tblr-success-lt-rgb:26,50,53;--tblr-info-lt:#1c3044;--tblr-info-lt-rgb:28,48,68;--tblr-warning-lt:#2e2b2f;--tblr-warning-lt-rgb:46,43,47;--tblr-danger-lt:#2b2634;--tblr-danger-lt-rgb:43,38,52;--tblr-light-lt:#2f3a47;--tblr-light-lt-rgb:47,58,71;--tblr-dark-lt:#182433;--tblr-dark-lt-rgb:24,36,51;--tblr-muted-lt:#202c3b;--tblr-muted-lt-rgb:32,44,59;--tblr-blue-lt:#16293f;--tblr-blue-lt-rgb:22,41,63;--tblr-azure-lt:#1c3044;--tblr-azure-lt-rgb:28,48,68;--tblr-indigo-lt:#1c2a45;--tblr-indigo-lt-rgb:28,42,69;--tblr-purple-lt:#272742;--tblr-purple-lt-rgb:39,39,66;--tblr-pink-lt:#2b2639;--tblr-pink-lt-rgb:43,38,57;--tblr-red-lt:#2b2634;--tblr-red-lt-rgb:43,38,52;--tblr-orange-lt:#2e2b2f;--tblr-orange-lt-rgb:46,43,47;--tblr-yellow-lt:#2e302e;--tblr-yellow-lt-rgb:46,48,46;--tblr-lime-lt:#213330;--tblr-lime-lt-rgb:33,51,48;--tblr-green-lt:#1a3235;--tblr-green-lt-rgb:26,50,53;--tblr-teal-lt:#17313a;--tblr-teal-lt-rgb:23,49,58;--tblr-cyan-lt:#183140;--tblr-cyan-lt-rgb:24,49,64;--tblr-facebook-lt:#182c46;--tblr-facebook-lt-rgb:24,44,70;--tblr-twitter-lt:#193146;--tblr-twitter-lt-rgb:25,49,70;--tblr-linkedin-lt:#172b41;--tblr-linkedin-lt-rgb:23,43,65;--tblr-google-lt:#2c2834;--tblr-google-lt-rgb:44,40,52;--tblr-youtube-lt:#2f202e;--tblr-youtube-lt-rgb:47,32,46;--tblr-vimeo-lt:#183345;--tblr-vimeo-lt-rgb:24,51,69;--tblr-dribbble-lt:#2d283c;--tblr-dribbble-lt-rgb:45,40,60;--tblr-github-lt:#182330;--tblr-github-lt-rgb:24,35,48;--tblr-instagram-lt:#2c2737;--tblr-instagram-lt-rgb:44,39,55;--tblr-pinterest-lt:#292131;--tblr-pinterest-lt-rgb:41,33,49;--tblr-vk-lt:#202e3f;--tblr-vk-lt-rgb:32,46,63;--tblr-rss-lt:#2f312e;--tblr-rss-lt-rgb:47,49,46;--tblr-flickr-lt:#162a44;--tblr-flickr-lt-rgb:22,42,68;--tblr-bitbucket-lt:#162942;--tblr-bitbucket-lt-rgb:22,41,66;--tblr-tabler-lt:#16293f;--tblr-tabler-lt-rgb:22,41,63}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color:var(--tblr-body-color)}.accordion-button:focus:not(:focus-visible){outline:0;box-shadow:none}.accordion-button:after{opacity:.7}.accordion-button:not(.collapsed){font-weight:var(--tblr-font-weight-bold);border-bottom-color:transparent;box-shadow:none}.accordion-button:not(.collapsed):after{opacity:1}.alert{--tblr-alert-color:var(--tblr-secondary);--tblr-alert-bg:var(--tblr-surface);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-right:.25rem var(--tblr-border-style) var(--tblr-alert-color);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.alert>:last-child{margin-bottom:0}.alert-important{border-color:transparent;background:var(--tblr-alert-color);color:#fff}.alert-important .alert-icon,.alert-important .alert-link,.alert-important .alert-title{color:inherit}.alert-important .alert-link:hover{color:inherit}.alert-important .btn-close{filter:var(--tblr-btn-close-white-filter)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-primary{--tblr-alert-color:var(--tblr-primary)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary)}.alert-success{--tblr-alert-color:var(--tblr-success)}.alert-info{--tblr-alert-color:var(--tblr-info)}.alert-warning{--tblr-alert-color:var(--tblr-warning)}.alert-danger{--tblr-alert-color:var(--tblr-danger)}.alert-light{--tblr-alert-color:var(--tblr-light)}.alert-dark{--tblr-alert-color:var(--tblr-dark)}.alert-muted{--tblr-alert-color:var(--tblr-muted)}.alert-blue{--tblr-alert-color:var(--tblr-blue)}.alert-azure{--tblr-alert-color:var(--tblr-azure)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo)}.alert-purple{--tblr-alert-color:var(--tblr-purple)}.alert-pink{--tblr-alert-color:var(--tblr-pink)}.alert-red{--tblr-alert-color:var(--tblr-red)}.alert-orange{--tblr-alert-color:var(--tblr-orange)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow)}.alert-lime{--tblr-alert-color:var(--tblr-lime)}.alert-green{--tblr-alert-color:var(--tblr-green)}.alert-teal{--tblr-alert-color:var(--tblr-teal)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin)}.alert-google{--tblr-alert-color:var(--tblr-google)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble)}.alert-github{--tblr-alert-color:var(--tblr-github)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest)}.alert-vk{--tblr-alert-color:var(--tblr-vk)}.alert-rss{--tblr-alert-color:var(--tblr-rss)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler)}.alert-icon{color:var(--tblr-alert-color);width:1.5rem!important;height:1.5rem!important;margin:-.125rem 0 -.125rem 1rem}.alert-title{font-size:.875rem;line-height:1.25rem;font-weight:var(--tblr-font-weight-bold);margin-bottom:.25rem;color:var(--tblr-alert-color)}.avatar{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-bg:var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow:var(--tblr-box-shadow-border);--tblr-avatar-font-size:1rem;--tblr-avatar-icon-size:1.5rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow)}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;left:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size)/ 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size:1rem;--tblr-avatar-status-size:0.25rem;--tblr-avatar-font-size:0.5rem;--tblr-avatar-icon-size:0.75rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size:1.25rem;--tblr-avatar-status-size:0.375rem;--tblr-avatar-font-size:0.625rem;--tblr-avatar-icon-size:1rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size:2rem;--tblr-avatar-status-size:0.5rem;--tblr-avatar-font-size:0.75rem;--tblr-avatar-icon-size:1.25rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:0.875rem;--tblr-avatar-icon-size:1.5rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size:3rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:1.25rem;--tblr-avatar-icon-size:2rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size:5rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:2rem;--tblr-avatar-icon-size:3rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size:7rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:3rem;--tblr-avatar-icon-size:5rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap:0}.avatar-list-stacked .avatar{margin-left:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-cap-bg,var(--tblr-card-bg,var(--tblr-bg-surface)))}.avatar-upload{width:4rem;height:4rem;border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);flex-direction:column;transition:color .3s,background-color .3s}@media (prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-body-bg))}.badge{justify-content:center;align-items:center;background:var(--tblr-bg-surface-secondary);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;min-width:1.35714285em;font-weight:var(--tblr-font-weight-bold);letter-spacing:.04em;vertical-align:bottom}a.badge{color:var(--tblr-bg-surface)}.badge .avatar{box-sizing:content-box;width:1.25rem;height:1.25rem;margin:0 -.5rem 0 .5rem}.badge .icon{width:1em;height:1em;font-size:1rem;stroke-width:2}.badge-empty,.badge:empty{display:inline-block;width:.5rem;height:.5rem;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;left:0!important;transform:translate(-50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.breadcrumb{--tblr-breadcrumb-item-active-font-weight:var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color:var(--tblr-disabled-color);--tblr-breadcrumb-link-color:var(--tblr-link-color);padding:0;margin:0;background:0 0}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color:var(--tblr-secondary)}.breadcrumb-item.active{font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-dots{--tblr-breadcrumb-divider:"·"}.breadcrumb-arrows{--tblr-breadcrumb-divider:"›"}.breadcrumb-bullets{--tblr-breadcrumb-divider:"•"}.btn{--tblr-btn-icon-size:1.25rem;--tblr-btn-bg:var(--tblr-bg-surface);--tblr-btn-color:var(--tblr-body-color);--tblr-btn-border-color:var(--tblr-border-color);--tblr-btn-hover-bg:var(--tblr-btn-bg);--tblr-btn-hover-border-color:var(--tblr-border-color-active);--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-active-color:var(--tblr-primary);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-btn-active-border-color:var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2);vertical-align:bottom;color:inherit}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2)}.btn .icon-right{margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#0054a6;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#004385;border-color:transparent}.btn-primary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-primary-fg);--tblr-btn-bg:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-border-color:var(--tblr-primary)}.btn-secondary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-secondary-fg);--tblr-btn-bg:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-border-color:var(--tblr-secondary)}.btn-success{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-success-fg);--tblr-btn-bg:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-border-color:var(--tblr-success)}.btn-info{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-info-fg);--tblr-btn-bg:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-border-color:var(--tblr-info)}.btn-warning{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-warning-fg);--tblr-btn-bg:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-border-color:var(--tblr-warning)}.btn-danger{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-danger-fg);--tblr-btn-bg:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-border-color:var(--tblr-danger)}.btn-light{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-light-fg);--tblr-btn-bg:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-border-color:var(--tblr-light)}.btn-dark{--tblr-btn-border-color:var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-active-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-color:var(--tblr-dark-fg);--tblr-btn-bg:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-border-color:var(--tblr-dark)}.btn-muted{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-muted-fg);--tblr-btn-bg:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-border-color:var(--tblr-muted)}.btn-blue{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-blue-fg);--tblr-btn-bg:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-border-color:var(--tblr-blue)}.btn-azure{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-azure-fg);--tblr-btn-bg:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-border-color:var(--tblr-azure)}.btn-indigo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-indigo-fg);--tblr-btn-bg:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-border-color:var(--tblr-indigo)}.btn-purple{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-purple-fg);--tblr-btn-bg:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-border-color:var(--tblr-purple)}.btn-pink{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pink-fg);--tblr-btn-bg:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-border-color:var(--tblr-pink)}.btn-red{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-red-fg);--tblr-btn-bg:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-border-color:var(--tblr-red)}.btn-orange{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-orange-fg);--tblr-btn-bg:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-border-color:var(--tblr-orange)}.btn-yellow{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-yellow-fg);--tblr-btn-bg:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-border-color:var(--tblr-yellow)}.btn-lime{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-lime-fg);--tblr-btn-bg:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-border-color:var(--tblr-lime)}.btn-green{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-green-fg);--tblr-btn-bg:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-border-color:var(--tblr-green)}.btn-teal{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-teal-fg);--tblr-btn-bg:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-border-color:var(--tblr-teal)}.btn-cyan{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-cyan-fg);--tblr-btn-bg:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-border-color:var(--tblr-cyan)}.btn-facebook{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-facebook-fg);--tblr-btn-bg:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-border-color:var(--tblr-facebook)}.btn-twitter{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-twitter-fg);--tblr-btn-bg:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-border-color:var(--tblr-twitter)}.btn-linkedin{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-linkedin-fg);--tblr-btn-bg:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-border-color:var(--tblr-linkedin)}.btn-google{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-google-fg);--tblr-btn-bg:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-border-color:var(--tblr-google)}.btn-youtube{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-youtube-fg);--tblr-btn-bg:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-border-color:var(--tblr-youtube)}.btn-vimeo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vimeo-fg);--tblr-btn-bg:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-border-color:var(--tblr-vimeo)}.btn-dribbble{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-dribbble-fg);--tblr-btn-bg:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-border-color:var(--tblr-dribbble)}.btn-github{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-github-fg);--tblr-btn-bg:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-border-color:var(--tblr-github)}.btn-instagram{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-instagram-fg);--tblr-btn-bg:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-border-color:var(--tblr-instagram)}.btn-pinterest{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pinterest-fg);--tblr-btn-bg:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-border-color:var(--tblr-pinterest)}.btn-vk{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vk-fg);--tblr-btn-bg:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-border-color:var(--tblr-vk)}.btn-rss{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-rss-fg);--tblr-btn-bg:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-border-color:var(--tblr-rss)}.btn-flickr{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-flickr-fg);--tblr-btn-bg:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-border-color:var(--tblr-flickr)}.btn-bitbucket{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-bitbucket-fg);--tblr-btn-bg:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-border-color:var(--tblr-bitbucket)}.btn-tabler{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-tabler-fg);--tblr-btn-bg:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-border-color:var(--tblr-tabler)}.btn-ghost-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-hover-border-color:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-hover-border-color:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-hover-border-color:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-hover-border-color:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-hover-border-color:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-hover-border-color:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-hover-border-color:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-hover-border-color:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-hover-border-color:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-hover-border-color:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-hover-border-color:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-hover-border-color:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-hover-border-color:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-hover-border-color:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-hover-border-color:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-hover-border-color:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-hover-border-color:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-hover-border-color:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-hover-border-color:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-hover-border-color:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-hover-border-color:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-hover-border-color:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-hover-border-color:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-hover-border-color:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-hover-border-color:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-hover-border-color:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-hover-border-color:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-hover-border-color:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-hover-border-color:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-hover-border-color:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-hover-border-color:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-hover-border-color:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-hover-border-color:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-hover-border-color:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-hover-border-color:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-hover-border-color:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-group-sm>.btn,.btn-sm{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:.75rem}.btn-group-lg>.btn,.btn-lg{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:2rem}.btn-pill{padding-left:1.5em;padding-right:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon{min-width:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);padding-right:0;padding-left:0}.btn-icon .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1.5rem;left:1.5rem;border-radius:100rem}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-left-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);right:calc(50% - var(--tblr-btn-icon-size)/ 2);top:calc(50% - var(--tblr-btn-icon-size)/ 2);animation:spinner-border .75s linear infinite}.btn-action{padding:0;border:0;color:var(--tblr-secondary);display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:var(--tblr-border-radius);background:0 0}.btn-action:after{content:none}.btn-action:focus{outline:0;box-shadow:none}.btn-action.show,.btn-action:hover{color:var(--tblr-body-color);background:var(--tblr-active-bg)}.btn-action.show{color:var(--tblr-primary)}.btn-action .icon{margin:0;width:1.25rem;height:1.25rem;font-size:1.25rem;stroke-width:1}.btn-actions{display:flex}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-box-shadow-input)}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group>.btn-check:checked+.btn,.btn-group>.btn.active,.btn-group>.btn:active{z-index:5}.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.next-month,.calendar-date.prev-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:100% 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media (prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;left:0;right:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-end .date-item,.calendar-range.range-start .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{right:50%}.calendar-range.range-end:before{left:50%}.carousel-indicators-vertical{right:auto;top:0;margin:0 0 0 1rem;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0 3px;width:3px;height:30px;border:0;border-right:10px var(--tblr-border-style) transparent;border-left:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0;margin:0 3px;opacity:.75}@media (min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio,100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;right:0;left:0;bottom:0;height:90%;background:linear-gradient(0deg,rgba(24,36,51,.9),rgba(24,36,51,0))}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media (prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px 0}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-footer,.card-borderless .card-header{border-color:transparent}.card-stamp{--tblr-stamp-size:7rem;position:absolute;top:0;left:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-left-radius:4px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size:13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg,var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);left:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(-10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(-180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color:var(--tblr-primary);--tblr-card-bg:var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.25rem;text-align:center;transition:background .3s;border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}@media (prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset:.25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));left:var(--tblr-card-stacked-offset);right:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1.25rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;top:0;left:0;bottom:0;right:0;content:"";background:rgba(24,36,51,.48)}.card-cover:first-child,.card-cover:first-child:before{border-radius:4px 4px 0 0}.card-cover-blurred:before{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-actions{margin:-.5rem auto -.5rem -.5rem;padding-right:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:0 0}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left{transform:rotate(1.5deg)}.card-rotate-right{transform:rotate(-1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px 0 rgba(0,0,0,.08)}.card-link-rotate:hover{transform:rotate(-1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:0 0;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 .25rem 0 0;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media (min-width:768px){.card-md>.card-body{padding:2.5rem}}@media (min-width:768px){.card-lg>.card-body{padding:2rem}}@media (min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;left:.75rem;display:flex;margin-right:auto}.card-options-link{display:inline-block;min-width:1rem;margin-right:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;left:auto;bottom:0;width:2px;height:100%;border-radius:0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-right:1.25rem;border-right:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-left:1.25rem;border-left:0}.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child{border-top:0}.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th,.card-table thead tr:first-child td,.card-table thead tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-right:auto;margin-left:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-left:1.25rem;padding-right:1.25rem;border-left:0;border-right:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg,var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-right:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-right-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-left-radius:0}.card-tabs .card{border-bottom-right-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-right-radius:var(--tblr-card-border-radius);border-top-right-radius:0}.card-note{--tblr-card-bg:#fff7dd;--tblr-card-border-color:#fff1c9}.btn-close{cursor:pointer}.btn-close:focus{outline:0}.dropdown-menu{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-left:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-left:.5rem;margin-right:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;right:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0,9px,9px,0)}.dropdown-menu-arrow.dropdown-menu-end:before{left:.75rem;right:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-right:-.25rem}.dropend .dropdown-toggle:after{margin-right:auto}.dropdown-menu-card{padding:0}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding:1.5rem;--tblr-datagrid-item-width:15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media (min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-img img{height:8rem;width:auto}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-subtitle,.empty-title{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:16rem}.container-tight{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:30rem}.container-narrow{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:45rem}.row-0{margin-left:0;margin-right:0}.row-0>.col,.row-0>[class*=col-]{padding-left:0;padding-right:0}.row-0 .card{margin-bottom:0}.row-sm{margin-left:-.375rem;margin-right:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-left:.375rem;padding-right:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-left:-1.5rem;margin-right:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-left:1.5rem;padding-right:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-left:-3rem;margin-right:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-left:3rem;padding-right:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:3rem}.space-x-6{display:flex;gap:3rem}.space-y-7{display:flex;flex-direction:column;gap:5rem}.space-x-7{display:flex;gap:5rem}.space-y-8{display:flex;flex-direction:column;gap:8rem}.space-x-8{display:flex;gap:8rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-right:1rem!important}.divide-x>:not(template):not(:last-child){padding-left:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-right:0!important}.divide-x-0>:not(template):not(:last-child){padding-left:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-right:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-left:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-right:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-left:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-right:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-left:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-right:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-left:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-right:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-left:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:3rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:3rem!important}.divide-x-6>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-right:3rem!important}.divide-x-6>:not(template):not(:last-child){padding-left:3rem!important}.divide-y-7>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-7>:not(template):not(:first-child){padding-top:5rem!important}.divide-y-7>:not(template):not(:last-child){padding-bottom:5rem!important}.divide-x-7>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-7>:not(template):not(:first-child){padding-right:5rem!important}.divide-x-7>:not(template):not(:last-child){padding-left:5rem!important}.divide-y-8>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-8>:not(template):not(:first-child){padding-top:8rem!important}.divide-y-8>:not(template):not(:last-child){padding-bottom:8rem!important}.divide-x-8>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-8>:not(template):not(:first-child){padding-right:8rem!important}.divide-x-8>:not(template):not(:last-child){padding-left:8rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size:1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size:1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size:1rem;stroke-width:1}.icon-md{--tblr-icon-size:2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size:3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio:75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2)}.img-responsive-1x1{--tblr-img-responsive-ratio:100%}.img-responsive-2x1{--tblr-img-responsive-ratio:50%}.img-responsive-1x2{--tblr-img-responsive-ratio:200%}.img-responsive-3x1{--tblr-img-responsive-ratio:33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio:300%}.img-responsive-4x3{--tblr-img-responsive-ratio:75%}.img-responsive-3x4{--tblr-img-responsive-ratio:133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio:56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio:177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio:42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio:233.3333333333%}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-right:.25rem;color:#d63939}.form-label-description{float:left;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.form-control+.form-hint,.form-select+.form-hint,.input-group+.form-hint{margin-top:.5rem}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-body-bg) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control.disabled,.form-control:disabled{color:var(--tblr-secondary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:rgba(0,0,0,.1);color:#fff;border-color:transparent}.form-control-dark:focus{background-color:rgba(0,0,0,.1);box-shadow:none;border-color:rgba(255,255,255,.24)}.form-control-dark::-webkit-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark:-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::placeholder{color:rgba(255,255,255,.6)}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:0 0!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-body-bg);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-box-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .btn,.input-group .form-control{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80aad3!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-left:0}.input-group-flat .form-control:not(:first-child){border-right:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-left:0}.input-group-flat .input-group-text:last-child{padding-right:0}.form-file-button{margin-right:0;border-right:0}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{left:0;right:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:3px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.form-colorinput-color:before{position:absolute;top:0;right:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;right:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.form-imagecheck-image:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 0 -.5rem -.5rem;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 0 .5rem .5rem}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;right:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-box-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;left:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:right;padding:1.25rem 1.25rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-check{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0;box-shadow:var(--tblr-box-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-right:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single{margin:0}.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0}.form-switch-lg{padding-right:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-right:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-control.is-invalid-lite,.form-control.is-valid-lite,.form-select.is-invalid-lite,.form-select.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size:0.75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-right:0;margin-left:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-secondary);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);border-right-color:#0054a6;border-right-width:2px}.list-group-item:active,.list-group-item:focus,.list-group-item:hover{background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-group-item.disabled,.list-group-item:disabled{color:#929dab;background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item-actions.show,.list-group-hoverable .list-group-item:hover .list-group-item-actions{opacity:1}.list-group-transparent{--tblr-list-group-border-radius:0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:0 0;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated-item{padding:1rem 0}.list-separated-item:first-child{padding-top:0}.list-separated-item:last-child{padding-bottom:0}.list-separated-item+.list-separated-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-inline-item:not(:last-child){margin-left:auto;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" · ";-webkit-margin-end:.5rem;margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#0054a6;vertical-align:middle}.loader:after{position:absolute;top:0;right:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-right-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;left:0;right:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translateX(100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content .btn-close{position:absolute;top:0;left:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{-webkit-transition:none;transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.modal-body::-webkit-scrollbar-corner{background:0 0}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;right:0;left:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:0 0;padding:0 1.5rem 0 3.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-right:1.25rem;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-right:.5rem}.nav-vertical .nav-item.show .nav-link,.nav-vertical .nav-link.active{font-weight:var(--tblr-font-weight-bold)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-right:1.25rem}.nav-bordered .nav-link{padding-right:0;padding-left:0;margin:0 0 -var(--tblr-border-width);border:0;border-bottom:2px var(--tblr-border-style) transparent;color:var(--tblr-secondary)}.nav-bordered .nav-item.show .nav-link,.nav-bordered .nav-link.active{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-link{display:flex;transition:color .3s;align-items:center}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link-toggle{margin-right:auto;padding:0 .25rem;transition:transform .3s}@media (prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(-180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-left:.5rem;color:var(--tblr-icon-color)}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#bbc3cd;font-size:.75rem}.stars .star:not(:first-child){margin-right:.25rem}.pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.page-link{min-width:1.75rem;border-radius:var(--tblr-border-radius)}.page-item{text-align:center}.page-item:not(.active) .page-link:hover{background:0 0}.page-item.page-next,.page-item.page-prev{flex:0 0 50%;text-align:right}.page-item.page-next{margin-right:auto;text-align:left}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#0054a6}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}@keyframes progress-indeterminate{0%{left:100%;right:-35%}100%,60%{left:-90%;right:100%}}.progress{position:relative;width:100%;line-height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;right:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg,var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;height:100%;background:0 0;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-right:auto;padding-right:2rem}.ribbon{--tblr-ribbon-margin:0.25rem;--tblr-ribbon-border-radius:var(--tblr-border-radius);position:absolute;top:.75rem;left:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;left:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));left:.75rem;width:2rem;padding:.5rem 0;border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;left:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon-top.ribbon-start{left:auto;right:.75rem}.ribbon-top.ribbon-start:before{top:0;left:100%;right:auto}.ribbon-start{left:auto;right:calc(-1 * var(--tblr-ribbon-margin))}.ribbon-start:before{top:auto;bottom:100%;right:0;border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-right:.25rem;border-radius:0 0 0 var(--tblr-ribbon-border-radius)}.ribbon-bookmark:after{position:absolute;top:0;left:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-left-width:0;border-right-color:transparent;border-right-width:.5rem}.ribbon-bookmark.ribbon-left{padding-left:.5rem}.ribbon-bookmark.ribbon-left:after{left:auto;right:100%;border-left-color:transparent;border-left-width:.5rem;border-right-width:0}.ribbon-bookmark.ribbon-top{padding-left:0;padding-bottom:.25rem;padding-right:0;border-radius:var(--tblr-ribbon-border-radius) 0 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;left:0;right:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:1.7142857143}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media (min-width:768px){.markdown>.hr,.markdown>hr{margin-top:3em;margin-bottom:3em}}.markdown>.h1,.markdown>.h2,.markdown>.h3,.markdown>.h4,.markdown>.h5,.markdown>.h6,.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{font-weight:var(--tblr-font-weight-bold)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img{border-radius:var(--tblr-border-radius)}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.steps{--tblr-steps-color:var(--tblr-primary);--tblr-steps-inactive-color:var(--tblr-border-color);--tblr-steps-dot-size:.5rem;--tblr-steps-border-width:2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color:var(--tblr-blue)}.steps-azure{--tblr-steps-color:var(--tblr-azure)}.steps-indigo{--tblr-steps-color:var(--tblr-indigo)}.steps-purple{--tblr-steps-color:var(--tblr-purple)}.steps-pink{--tblr-steps-color:var(--tblr-pink)}.steps-red{--tblr-steps-color:var(--tblr-red)}.steps-orange{--tblr-steps-color:var(--tblr-orange)}.steps-yellow{--tblr-steps-color:var(--tblr-yellow)}.steps-lime{--tblr-steps-color:var(--tblr-lime)}.steps-green{--tblr-steps-color:var(--tblr-green)}.steps-teal{--tblr-steps-color:var(--tblr-teal)}.steps-cyan{--tblr-steps-color:var(--tblr-cyan)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;right:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;right:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translateX(50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size:1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset:6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset:-2px}.steps-vertical .step-item{text-align:right;padding-top:0;padding-right:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);right:0;transform:translate(0,0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translateX(50%);top:var(--tblr-steps-dot-offset);right:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25,1.25)}60%{transform:scale(1.25,1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1,1)}30%{transform:scale(3,3)}80%{transform:scale(3,3)}100%{transform:scale(1,1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1,1)}80%{transform:scale(3,3);opacity:0}100%{transform:scale(3,3);opacity:0}}.status{--tblr-status-height:1.5rem;--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:0 0!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-secondary{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-success{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-info{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-warning{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-danger{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-light{--tblr-status-color:#fcfdfe;--tblr-status-color-rgb:252,253,254}.status-dark{--tblr-status-color:#182433;--tblr-status-color-rgb:24,36,51}.status-muted{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-blue{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-azure{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-indigo{--tblr-status-color:#4263eb;--tblr-status-color-rgb:66,99,235}.status-purple{--tblr-status-color:#ae3ec9;--tblr-status-color-rgb:174,62,201}.status-pink{--tblr-status-color:#d6336c;--tblr-status-color-rgb:214,51,108}.status-red{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-orange{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-yellow{--tblr-status-color:#f59f00;--tblr-status-color-rgb:245,159,0}.status-lime{--tblr-status-color:#74b816;--tblr-status-color-rgb:116,184,22}.status-green{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-teal{--tblr-status-color:#0ca678;--tblr-status-color-rgb:12,166,120}.status-cyan{--tblr-status-color:#17a2b8;--tblr-status-color-rgb:23,162,184}.status-facebook{--tblr-status-color:#1877f2;--tblr-status-color-rgb:24,119,242}.status-twitter{--tblr-status-color:#1da1f2;--tblr-status-color-rgb:29,161,242}.status-linkedin{--tblr-status-color:#0a66c2;--tblr-status-color-rgb:10,102,194}.status-google{--tblr-status-color:#dc4e41;--tblr-status-color-rgb:220,78,65}.status-youtube{--tblr-status-color:#ff0000;--tblr-status-color-rgb:255,0,0}.status-vimeo{--tblr-status-color:#1ab7ea;--tblr-status-color-rgb:26,183,234}.status-dribbble{--tblr-status-color:#ea4c89;--tblr-status-color-rgb:234,76,137}.status-github{--tblr-status-color:#181717;--tblr-status-color-rgb:24,23,23}.status-instagram{--tblr-status-color:#e4405f;--tblr-status-color-rgb:228,64,95}.status-pinterest{--tblr-status-color:#bd081c;--tblr-status-color-rgb:189,8,28}.status-vk{--tblr-status-color:#6383a8;--tblr-status-color-rgb:99,131,168}.status-rss{--tblr-status-color:#ffa500;--tblr-status-color-rgb:255,165,0}.status-flickr{--tblr-status-color:#0063dc;--tblr-status-color-rgb:0,99,220}.status-bitbucket{--tblr-status-color:#0052cc;--tblr-status-color-rgb:0,82,204}.status-tabler{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-dot{--tblr-status-dot-color:var(--tblr-status-color, #667382);--tblr-status-size:0.5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size:2.5rem;--tblr-status-indicator-color:var(--tblr-status-color, #667382);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size:.75rem;position:absolute;right:50%;top:50%;margin:calc(var(--tblr-status-circle-size)/ -2) calc(var(--tblr-status-circle-size)/ -2) 0 0;width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:0 0;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:0}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;right:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media (prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media (prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-down,.switch-icon-slide-left,.switch-icon-slide-right,.switch-icon-slide-up{overflow:hidden}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:opacity .3s,transform .3s}@media (prefers-reduced-motion:reduce){.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:none}}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-up .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-up.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-up.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-right .switch-icon-a{transform:translateX(0)}.switch-icon-slide-left .switch-icon-b{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-a{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-left .switch-icon-a{transform:translateX(0)}.switch-icon-slide-right .switch-icon-b{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-a{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.markdown>table thead th,.table thead th{color:var(--tblr-secondary);background:var(--tblr-bg-surface-tertiary);font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.markdown>table thead th,.table thead th{background:0 0}}.table-responsive .markdown>table,.table-responsive .table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:0 0}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media (max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media (max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media (max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media (max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media (max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s;margin:-.5rem -.75rem;padding:.5rem .75rem}@media (prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort.asc,.table-sort.desc,.table-sort:hover{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,");background:currentColor;margin-right:.25rem}.table-sort.asc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:0 0}.tag{--tblr-tag-height:1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-box-shadow-input);gap:.5rem}.tag .btn-close{margin-left:-.25rem;margin-right:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size:0.625rem;--tblr-badge-padding-x:.25rem;--tblr-badge-padding-y:.125rem;margin-left:-.25rem}.tag-avatar,.tag-check,.tag-flag,.tag-icon,.tag-payment{margin-right:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-left:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{background:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.toast .toast-header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toast button[data-bs-dismiss=toast]{outline:0}.toast-primary{--tblr-toast-color:#0054a6}.toast-secondary{--tblr-toast-color:#667382}.toast-success{--tblr-toast-color:#2fb344}.toast-info{--tblr-toast-color:#4299e1}.toast-warning{--tblr-toast-color:#f76707}.toast-danger{--tblr-toast-color:#d63939}.toast-light{--tblr-toast-color:#fcfdfe}.toast-dark{--tblr-toast-color:#182433}.toast-muted{--tblr-toast-color:#667382}.toast-blue{--tblr-toast-color:#0054a6}.toast-azure{--tblr-toast-color:#4299e1}.toast-indigo{--tblr-toast-color:#4263eb}.toast-purple{--tblr-toast-color:#ae3ec9}.toast-pink{--tblr-toast-color:#d6336c}.toast-red{--tblr-toast-color:#d63939}.toast-orange{--tblr-toast-color:#f76707}.toast-yellow{--tblr-toast-color:#f59f00}.toast-lime{--tblr-toast-color:#74b816}.toast-green{--tblr-toast-color:#2fb344}.toast-teal{--tblr-toast-color:#0ca678}.toast-cyan{--tblr-toast-color:#17a2b8}.toast-facebook{--tblr-toast-color:#1877f2}.toast-twitter{--tblr-toast-color:#1da1f2}.toast-linkedin{--tblr-toast-color:#0a66c2}.toast-google{--tblr-toast-color:#dc4e41}.toast-youtube{--tblr-toast-color:#ff0000}.toast-vimeo{--tblr-toast-color:#1ab7ea}.toast-dribbble{--tblr-toast-color:#ea4c89}.toast-github{--tblr-toast-color:#181717}.toast-instagram{--tblr-toast-color:#e4405f}.toast-pinterest{--tblr-toast-color:#bd081c}.toast-vk{--tblr-toast-color:#6383a8}.toast-rss{--tblr-toast-color:#ffa500}.toast-flickr{--tblr-toast-color:#0063dc}.toast-bitbucket{--tblr-toast-color:#0052cc}.toast-tabler{--tblr-toast-color:#0054a6}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height:1.5rem;--tblr-tracking-gap-width:0.125rem;--tblr-tracking-block-border-radius:var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius:var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size:2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);right:calc(var(--tblr-timeline-icon-size)/ 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size,2.5rem);height:var(--tblr-timeline-icon-size,2.5rem);background:var(--tblr-gray-200);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-right:calc(var(--tblr-timeline-icon-size,2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-right:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-left:.5rem}.hr-text:after{content:"";margin-right:.5rem}.hr-text>:first-child{padding-left:.5rem;padding-right:0;color:var(--tblr-secondary)}.hr-text.hr-text-right:before{content:none}.hr-text.hr-text-left>:first-child{padding-left:.5rem;padding-right:.5rem}.hr-text.hr-text-left:before{content:""}.hr-text.hr-text-left:after{content:none}.hr-text.hr-text-right>:first-child{padding-left:0;padding-right:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{line-height:1.4}a{-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:inherit}.h1,h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}.h2,h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}.h3,h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}.h4,h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}.h5,h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}.h6,h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.strong,b,strong{font-weight:var(--tblr-font-weight-bold)}blockquote{padding-right:1rem;border-right:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:left}blockquote cite:before{content:"— "}ol,ul{padding-right:1.5rem}.hr,hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius)}pre code{background:0 0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}.kbd,kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%}.list-unstyled{margin-right:0}::-moz-selection{background-color:rgba(var(--tblr-primary-rgb),.16)}::selection{background-color:rgba(var(--tblr-primary-rgb),.16)}[class*=" link-"].disabled,[class^=link-].disabled{color:var(--tblr-disabled-color);pointer-events:none}.subheader{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)}.offcanvas-footer{padding:1.5rem 1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>:last-child{margin-bottom:0}.bg-white-overlay{color:#fff;background-color:rgba(252,253,254,.24)}.bg-dark-overlay{color:#fff;background-color:rgba(24,36,51,.24)}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-primary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-primary-lt-rgb),var(--tblr-bg-opacity))!important}.border-primary{border-color:#0054a6!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-secondary-lt-rgb),var(--tblr-bg-opacity))!important}.border-secondary{border-color:#667382!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-success-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-success-lt-rgb),var(--tblr-bg-opacity))!important}.border-success{border-color:#2fb344!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-info-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-info-lt-rgb),var(--tblr-bg-opacity))!important}.border-info{border-color:#4299e1!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-warning-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-warning-lt-rgb),var(--tblr-bg-opacity))!important}.border-warning{border-color:#f76707!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-danger-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-danger-lt-rgb),var(--tblr-bg-opacity))!important}.border-danger{border-color:#d63939!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-light-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-light-lt-rgb),var(--tblr-bg-opacity))!important}.border-light{border-color:#fcfdfe!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-dark-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dark-lt-rgb),var(--tblr-bg-opacity))!important}.border-dark{border-color:#182433!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-muted-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-muted-lt-rgb),var(--tblr-bg-opacity))!important}.border-muted{border-color:#667382!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-blue-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-blue-lt-rgb),var(--tblr-bg-opacity))!important}.border-blue{border-color:#0054a6!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-azure-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-azure-lt-rgb),var(--tblr-bg-opacity))!important}.border-azure{border-color:#4299e1!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-indigo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-indigo-lt-rgb),var(--tblr-bg-opacity))!important}.border-indigo{border-color:#4263eb!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-purple-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-purple-lt-rgb),var(--tblr-bg-opacity))!important}.border-purple{border-color:#ae3ec9!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-pink-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pink-lt-rgb),var(--tblr-bg-opacity))!important}.border-pink{border-color:#d6336c!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-red-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-red-lt-rgb),var(--tblr-bg-opacity))!important}.border-red{border-color:#d63939!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-orange-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-orange-lt-rgb),var(--tblr-bg-opacity))!important}.border-orange{border-color:#f76707!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-yellow-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-yellow-lt-rgb),var(--tblr-bg-opacity))!important}.border-yellow{border-color:#f59f00!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-lime-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-lime-lt-rgb),var(--tblr-bg-opacity))!important}.border-lime{border-color:#74b816!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-green-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-green-lt-rgb),var(--tblr-bg-opacity))!important}.border-green{border-color:#2fb344!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-teal-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-teal-lt-rgb),var(--tblr-bg-opacity))!important}.border-teal{border-color:#0ca678!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-cyan-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-cyan-lt-rgb),var(--tblr-bg-opacity))!important}.border-cyan{border-color:#17a2b8!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-facebook-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-facebook-lt-rgb),var(--tblr-bg-opacity))!important}.border-facebook{border-color:#1877f2!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-twitter-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-twitter-lt-rgb),var(--tblr-bg-opacity))!important}.border-twitter{border-color:#1da1f2!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-linkedin-lt-rgb),var(--tblr-bg-opacity))!important}.border-linkedin{border-color:#0a66c2!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-google-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-google-lt-rgb),var(--tblr-bg-opacity))!important}.border-google{border-color:#dc4e41!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-youtube-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-youtube-lt-rgb),var(--tblr-bg-opacity))!important}.border-youtube{border-color:red!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vimeo-lt-rgb),var(--tblr-bg-opacity))!important}.border-vimeo{border-color:#1ab7ea!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dribbble-lt-rgb),var(--tblr-bg-opacity))!important}.border-dribbble{border-color:#ea4c89!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-github-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-github-lt-rgb),var(--tblr-bg-opacity))!important}.border-github{border-color:#181717!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-instagram-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-instagram-lt-rgb),var(--tblr-bg-opacity))!important}.border-instagram{border-color:#e4405f!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pinterest-lt-rgb),var(--tblr-bg-opacity))!important}.border-pinterest{border-color:#bd081c!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-vk-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vk-lt-rgb),var(--tblr-bg-opacity))!important}.border-vk{border-color:#6383a8!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-rss-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-rss-lt-rgb),var(--tblr-bg-opacity))!important}.border-rss{border-color:orange!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-flickr-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-flickr-lt-rgb),var(--tblr-bg-opacity))!important}.border-flickr{border-color:#0063dc!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-bitbucket-lt-rgb),var(--tblr-bg-opacity))!important}.border-bitbucket{border-color:#0052cc!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-tabler-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-tabler-lt-rgb),var(--tblr-bg-opacity))!important}.border-tabler{border-color:#0054a6!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-white-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-white-lt-rgb),var(--tblr-bg-opacity))!important}.border-white{border-color:#fff!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-google-fg{color:var(--tblr-google-fg)!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-github-fg{color:var(--tblr-github-fg)!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-gray-50{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-50-rgb),var(--tblr-bg-opacity))!important}.text-gray-50-fg{color:#182433!important}.bg-gray-100{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-100-rgb),var(--tblr-bg-opacity))!important}.text-gray-100-fg{color:#182433!important}.bg-gray-200{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-200-rgb),var(--tblr-bg-opacity))!important}.text-gray-200-fg{color:#182433!important}.bg-gray-300{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-300-rgb),var(--tblr-bg-opacity))!important}.text-gray-300-fg{color:#182433!important}.bg-gray-400{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-400-rgb),var(--tblr-bg-opacity))!important}.text-gray-400-fg{color:#fcfdfe!important}.bg-gray-500{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-500-rgb),var(--tblr-bg-opacity))!important}.text-gray-500-fg{color:#fcfdfe!important}.bg-gray-600{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-600-rgb),var(--tblr-bg-opacity))!important}.text-gray-600-fg{color:#fcfdfe!important}.bg-gray-700{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-700-rgb),var(--tblr-bg-opacity))!important}.text-gray-700-fg{color:#fcfdfe!important}.bg-gray-800{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-800-rgb),var(--tblr-bg-opacity))!important}.text-gray-800-fg{color:#fcfdfe!important}.bg-gray-900{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-900-rgb),var(--tblr-bg-opacity))!important}.text-gray-900-fg{color:#fcfdfe!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:active,.scrollable.hover:focus,.scrollable.hover:hover{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:3rem!important}.h-6{height:3rem!important}.w-7{width:5rem!important}.h-7{height:5rem!important}.w-8{width:8rem!important}.h-8{height:8rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:.35!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:.7!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:.95!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto} \ No newline at end of file diff --git a/public/js/demo-theme.js b/public/js/demo-theme.js index 749ccd6..5379684 100644 --- a/public/js/demo-theme.js +++ b/public/js/demo-theme.js @@ -1,6 +1,6 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna @@ -12,7 +12,7 @@ })((function () { 'use strict'; var themeStorageKey = "tablerTheme"; - var defaultTheme = "dark"; + var defaultTheme = "light"; var selectedTheme; var params = new Proxy(new URLSearchParams(window.location.search), { get: function get(searchParams, prop) { diff --git a/public/js/demo-theme.min.js b/public/js/demo-theme.min.js new file mode 100644 index 0000000..8d987b9 --- /dev/null +++ b/public/js/demo-theme.min.js @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t="tablerTheme",a=new Proxy(new URLSearchParams(window.location.search),{get:function(e,t){return e.get(t)}});if(a.theme)localStorage.setItem(t,a.theme),e=a.theme;else{var n=localStorage.getItem(t);e=n||"light"}"dark"===e?document.body.setAttribute("data-bs-theme",e):document.body.removeAttribute("data-bs-theme")})); \ No newline at end of file diff --git a/public/js/demo.js b/public/js/demo.js index e3f33ff..a104ca5 100644 --- a/public/js/demo.js +++ b/public/js/demo.js @@ -1,6 +1,6 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna diff --git a/public/js/demo.min.js b/public/js/demo.min.js index 3b870f3..d28f535 100644 --- a/public/js/demo.min.js +++ b/public/js/demo.min.js @@ -1,6 +1,6 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna diff --git a/public/js/dweebui.js b/public/js/dweebui.js new file mode 100644 index 0000000..a8743aa --- /dev/null +++ b/public/js/dweebui.js @@ -0,0 +1,27 @@ +var themeStorageKey = "tablerTheme"; +var defaultTheme = "dark"; +var selectedTheme; + +(function () { + 'use strict'; + + var storedTheme = localStorage.getItem(themeStorageKey); + selectedTheme = storedTheme ? storedTheme : defaultTheme; + + if (selectedTheme === 'dark') { + document.body.setAttribute("data-bs-theme", selectedTheme); + } else { + document.body.removeAttribute("data-bs-theme"); + } +})(); + +function toggleTheme(button) { + if (button.value == 'dark-theme') { + document.body.setAttribute("data-bs-theme", 'dark'); + localStorage.setItem(themeStorageKey, 'dark'); + } + else if (button.value == 'light-theme') { + document.body.removeAttribute("data-bs-theme"); + localStorage.setItem(themeStorageKey, 'light'); + } +} \ No newline at end of file diff --git a/public/js/htmx-sse.js b/public/js/htmx-sse.js index 943d80a..9f5af5c 100644 --- a/public/js/htmx-sse.js +++ b/public/js/htmx-sse.js @@ -6,350 +6,285 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions */ (function() { + /** @type {import("../htmx").HtmxInternalApi} */ + var api - /** @type {import("../htmx").HtmxInternalApi} */ - var api; + htmx.defineExtension('sse', { - htmx.defineExtension("sse", { + /** + * Init saves the provided reference to the internal HTMX API. + * + * @param {import("../htmx").HtmxInternalApi} api + * @returns void + */ + init: function(apiRef) { + // store a reference to the internal API. + api = apiRef - /** - * Init saves the provided reference to the internal HTMX API. - * - * @param {import("../htmx").HtmxInternalApi} api - * @returns void - */ - init: function(apiRef) { - // store a reference to the internal API. - api = apiRef; + // set a function in the public API for creating new EventSource objects + if (htmx.createEventSource == undefined) { + htmx.createEventSource = createEventSource + } + }, - // set a function in the public API for creating new EventSource objects - if (htmx.createEventSource == undefined) { - htmx.createEventSource = createEventSource; - } - }, + getSelectors: function() { + return ['[sse-connect]', '[data-sse-connect]', '[sse-swap]', '[data-sse-swap]'] + }, - /** - * onEvent handles all events passed to this extension. - * - * @param {string} name - * @param {Event} evt - * @returns void - */ - onEvent: function(name, evt) { + /** + * onEvent handles all events passed to this extension. + * + * @param {string} name + * @param {Event} evt + * @returns void + */ + onEvent: function(name, evt) { + var parent = evt.target || evt.detail.elt + switch (name) { + case 'htmx:beforeCleanupElement': + var internalData = api.getInternalData(parent) + // Try to remove remove an EventSource when elements are removed + var source = internalData.sseEventSource + if (source) { + api.triggerEvent(parent, 'htmx:sseClose', { + source, + type: 'nodeReplaced', + }) + internalData.sseEventSource.close() + } - switch (name) { + return - case "htmx:beforeCleanupElement": - var internalData = api.getInternalData(evt.target) - // Try to remove remove an EventSource when elements are removed - if (internalData.sseEventSource) { - internalData.sseEventSource.close(); - } + // Try to create EventSources when elements are processed + case 'htmx:afterProcessNode': + ensureEventSourceOnElement(parent) + } + } + }) - return; + /// //////////////////////////////////////////// + // HELPER FUNCTIONS + /// //////////////////////////////////////////// - // Try to create EventSources when elements are processed - case "htmx:afterProcessNode": - ensureEventSourceOnElement(evt.target); - registerSSE(evt.target); - } - } - }); + /** + * createEventSource is the default method for creating new EventSource objects. + * it is hoisted into htmx.config.createEventSource to be overridden by the user, if needed. + * + * @param {string} url + * @returns EventSource + */ + function createEventSource(url) { + return new EventSource(url, { withCredentials: true }) + } - /////////////////////////////////////////////// - // HELPER FUNCTIONS - /////////////////////////////////////////////// + /** + * registerSSE looks for attributes that can contain sse events, right + * now hx-trigger and sse-swap and adds listeners based on these attributes too + * the closest event source + * + * @param {HTMLElement} elt + */ + function registerSSE(elt) { + // Add message handlers for every `sse-swap` attribute + if (api.getAttributeValue(elt, 'sse-swap')) { + // Find closest existing event source + var sourceElement = api.getClosestMatch(elt, hasEventSource) + if (sourceElement == null) { + // api.triggerErrorEvent(elt, "htmx:noSSESourceError") + return null // no eventsource in parentage, orphaned element + } + + // Set internalData and source + var internalData = api.getInternalData(sourceElement) + var source = internalData.sseEventSource + + var sseSwapAttr = api.getAttributeValue(elt, 'sse-swap') + var sseEventNames = sseSwapAttr.split(',') + + for (var i = 0; i < sseEventNames.length; i++) { + const sseEventName = sseEventNames[i].trim() + const listener = function(event) { + // If the source is missing then close SSE + if (maybeCloseSSESource(sourceElement)) { + return + } + + // If the body no longer contains the element, remove the listener + if (!api.bodyContains(elt)) { + source.removeEventListener(sseEventName, listener) + return + } + + // swap the response into the DOM and trigger a notification + if (!api.triggerEvent(elt, 'htmx:sseBeforeMessage', event)) { + return + } + swap(elt, event.data) + api.triggerEvent(elt, 'htmx:sseMessage', event) + } + + // Register the new listener + api.getInternalData(elt).sseEventListener = listener + source.addEventListener(sseEventName, listener) + } + } + + // Add message handlers for every `hx-trigger="sse:*"` attribute + if (api.getAttributeValue(elt, 'hx-trigger')) { + // Find closest existing event source + var sourceElement = api.getClosestMatch(elt, hasEventSource) + if (sourceElement == null) { + // api.triggerErrorEvent(elt, "htmx:noSSESourceError") + return null // no eventsource in parentage, orphaned element + } + + // Set internalData and source + var internalData = api.getInternalData(sourceElement) + var source = internalData.sseEventSource + + var triggerSpecs = api.getTriggerSpecs(elt) + triggerSpecs.forEach(function(ts) { + if (ts.trigger.slice(0, 4) !== 'sse:') { + return + } + + var listener = function (event) { + if (maybeCloseSSESource(sourceElement)) { + return + } + if (!api.bodyContains(elt)) { + source.removeEventListener(ts.trigger.slice(4), listener) + } + // Trigger events to be handled by the rest of htmx + htmx.trigger(elt, ts.trigger, event) + htmx.trigger(elt, 'htmx:sseMessage', event) + } + + // Register the new listener + api.getInternalData(elt).sseEventListener = listener + source.addEventListener(ts.trigger.slice(4), listener) + }) + } + } + + /** + * ensureEventSourceOnElement creates a new EventSource connection on the provided element. + * If a usable EventSource already exists, then it is returned. If not, then a new EventSource + * is created and stored in the element's internalData. + * @param {HTMLElement} elt + * @param {number} retryCount + * @returns {EventSource | null} + */ + function ensureEventSourceOnElement(elt, retryCount) { + if (elt == null) { + return null + } + + // handle extension source creation attribute + if (api.getAttributeValue(elt, 'sse-connect')) { + var sseURL = api.getAttributeValue(elt, 'sse-connect') + if (sseURL == null) { + return + } + + ensureEventSource(elt, sseURL, retryCount) + } + + registerSSE(elt) + } + + function ensureEventSource(elt, url, retryCount) { + var source = htmx.createEventSource(url) + + source.onerror = function(err) { + // Log an error event + api.triggerErrorEvent(elt, 'htmx:sseError', { error: err, source }) + + // If parent no longer exists in the document, then clean up this EventSource + if (maybeCloseSSESource(elt)) { + return + } + + // Otherwise, try to reconnect the EventSource + if (source.readyState === EventSource.CLOSED) { + retryCount = retryCount || 0 + retryCount = Math.max(Math.min(retryCount * 2, 128), 1) + var timeout = retryCount * 500 + window.setTimeout(function() { + ensureEventSourceOnElement(elt, retryCount) + }, timeout) + } + } + + source.onopen = function(evt) { + api.triggerEvent(elt, 'htmx:sseOpen', { source }) + + if (retryCount && retryCount > 0) { + const childrenToFix = elt.querySelectorAll("[sse-swap], [data-sse-swap], [hx-trigger], [data-hx-trigger]") + for (let i = 0; i < childrenToFix.length; i++) { + registerSSE(childrenToFix[i]) + } + // We want to increase the reconnection delay for consecutive failed attempts only + retryCount = 0 + } + } + + api.getInternalData(elt).sseEventSource = source - /** - * createEventSource is the default method for creating new EventSource objects. - * it is hoisted into htmx.config.createEventSource to be overridden by the user, if needed. - * - * @param {string} url - * @returns EventSource - */ - function createEventSource(url) { - return new EventSource(url, { withCredentials: true }); - } + var closeAttribute = api.getAttributeValue(elt, "sse-close"); + if (closeAttribute) { + // close eventsource when this message is received + source.addEventListener(closeAttribute, function() { + api.triggerEvent(elt, 'htmx:sseClose', { + source, + type: 'message', + }) + source.close() + }); + } + } - function splitOnWhitespace(trigger) { - return trigger.trim().split(/\s+/); - } + /** + * maybeCloseSSESource confirms that the parent element still exists. + * If not, then any associated SSE source is closed and the function returns true. + * + * @param {HTMLElement} elt + * @returns boolean + */ + function maybeCloseSSESource(elt) { + if (!api.bodyContains(elt)) { + var source = api.getInternalData(elt).sseEventSource + if (source != undefined) { + api.triggerEvent(elt, 'htmx:sseClose', { + source, + type: 'nodeMissing', + }) + source.close() + // source = null + return true + } + } + return false + } - function getLegacySSEURL(elt) { - var legacySSEValue = api.getAttributeValue(elt, "hx-sse"); - if (legacySSEValue) { - var values = splitOnWhitespace(legacySSEValue); - for (var i = 0; i < values.length; i++) { - var value = values[i].split(/:(.+)/); - if (value[0] === "connect") { - return value[1]; - } - } - } - } - function getLegacySSESwaps(elt) { - var legacySSEValue = api.getAttributeValue(elt, "hx-sse"); - var returnArr = []; - if (legacySSEValue != null) { - var values = splitOnWhitespace(legacySSEValue); - for (var i = 0; i < values.length; i++) { - var value = values[i].split(/:(.+)/); - if (value[0] === "swap") { - returnArr.push(value[1]); - } - } - } - return returnArr; - } + /** + * @param {HTMLElement} elt + * @param {string} content + */ + function swap(elt, content) { + api.withExtensions(elt, function(extension) { + content = extension.transformResponse(content, null, elt) + }) - /** - * registerSSE looks for attributes that can contain sse events, right - * now hx-trigger and sse-swap and adds listeners based on these attributes too - * the closest event source - * - * @param {HTMLElement} elt - */ - function registerSSE(elt) { - // Find closest existing event source - var sourceElement = api.getClosestMatch(elt, hasEventSource); - if (sourceElement == null) { - // api.triggerErrorEvent(elt, "htmx:noSSESourceError") - return null; // no eventsource in parentage, orphaned element - } + var swapSpec = api.getSwapSpecification(elt) + var target = api.getTarget(elt) + api.swap(target, content, swapSpec) + } - // Set internalData and source - var internalData = api.getInternalData(sourceElement); - var source = internalData.sseEventSource; - // Add message handlers for every `sse-swap` attribute - queryAttributeOnThisOrChildren(elt, "sse-swap").forEach(function(child) { - - var sseSwapAttr = api.getAttributeValue(child, "sse-swap"); - if (sseSwapAttr) { - var sseEventNames = sseSwapAttr.split(","); - } else { - var sseEventNames = getLegacySSESwaps(child); - } - - for (var i = 0; i < sseEventNames.length; i++) { - var sseEventName = sseEventNames[i].trim(); - var listener = function(event) { - - // If the source is missing then close SSE - if (maybeCloseSSESource(sourceElement)) { - return; - } - - // If the body no longer contains the element, remove the listener - if (!api.bodyContains(child)) { - source.removeEventListener(sseEventName, listener); - } - - // swap the response into the DOM and trigger a notification - swap(child, event.data); - api.triggerEvent(elt, "htmx:sseMessage", event); - }; - - // Register the new listener - api.getInternalData(child).sseEventListener = listener; - source.addEventListener(sseEventName, listener); - } - }); - - // Add message handlers for every `hx-trigger="sse:*"` attribute - queryAttributeOnThisOrChildren(elt, "hx-trigger").forEach(function(child) { - - var sseEventName = api.getAttributeValue(child, "hx-trigger"); - if (sseEventName == null) { - return; - } - - // Only process hx-triggers for events with the "sse:" prefix - if (sseEventName.slice(0, 4) != "sse:") { - return; - } - - // remove the sse: prefix from here on out - sseEventName = sseEventName.substr(4); - - var listener = function() { - if (maybeCloseSSESource(sourceElement)) { - return - } - - if (!api.bodyContains(child)) { - source.removeEventListener(sseEventName, listener); - } - } - }); - } - - /** - * ensureEventSourceOnElement creates a new EventSource connection on the provided element. - * If a usable EventSource already exists, then it is returned. If not, then a new EventSource - * is created and stored in the element's internalData. - * @param {HTMLElement} elt - * @param {number} retryCount - * @returns {EventSource | null} - */ - function ensureEventSourceOnElement(elt, retryCount) { - - if (elt == null) { - return null; - } - - // handle extension source creation attribute - queryAttributeOnThisOrChildren(elt, "sse-connect").forEach(function(child) { - var sseURL = api.getAttributeValue(child, "sse-connect"); - if (sseURL == null) { - return; - } - - ensureEventSource(child, sseURL, retryCount); - }); - - // handle legacy sse, remove for HTMX2 - queryAttributeOnThisOrChildren(elt, "hx-sse").forEach(function(child) { - var sseURL = getLegacySSEURL(child); - if (sseURL == null) { - return; - } - - ensureEventSource(child, sseURL, retryCount); - }); - - } - - function ensureEventSource(elt, url, retryCount) { - var source = htmx.createEventSource(url); - - source.onerror = function(err) { - - // Log an error event - api.triggerErrorEvent(elt, "htmx:sseError", { error: err, source: source }); - - // If parent no longer exists in the document, then clean up this EventSource - if (maybeCloseSSESource(elt)) { - return; - } - - // Otherwise, try to reconnect the EventSource - if (source.readyState === EventSource.CLOSED) { - retryCount = retryCount || 0; - var timeout = Math.random() * (2 ^ retryCount) * 500; - window.setTimeout(function() { - ensureEventSourceOnElement(elt, Math.min(7, retryCount + 1)); - }, timeout); - } - }; - - source.onopen = function(evt) { - api.triggerEvent(elt, "htmx:sseOpen", { source: source }); - } - - api.getInternalData(elt).sseEventSource = source; - } - - /** - * maybeCloseSSESource confirms that the parent element still exists. - * If not, then any associated SSE source is closed and the function returns true. - * - * @param {HTMLElement} elt - * @returns boolean - */ - function maybeCloseSSESource(elt) { - if (!api.bodyContains(elt)) { - var source = api.getInternalData(elt).sseEventSource; - if (source != undefined) { - source.close(); - // source = null - return true; - } - } - return false; - } - - /** - * queryAttributeOnThisOrChildren returns all nodes that contain the requested attributeName, INCLUDING THE PROVIDED ROOT ELEMENT. - * - * @param {HTMLElement} elt - * @param {string} attributeName - */ - function queryAttributeOnThisOrChildren(elt, attributeName) { - - var result = []; - - // If the parent element also contains the requested attribute, then add it to the results too. - if (api.hasAttribute(elt, attributeName)) { - result.push(elt); - } - - // Search all child nodes that match the requested attribute - elt.querySelectorAll("[" + attributeName + "], [data-" + attributeName + "]").forEach(function(node) { - result.push(node); - }); - - return result; - } - - /** - * @param {HTMLElement} elt - * @param {string} content - */ - function swap(elt, content) { - - api.withExtensions(elt, function(extension) { - content = extension.transformResponse(content, null, elt); - }); - - var swapSpec = api.getSwapSpecification(elt); - var target = api.getTarget(elt); - var settleInfo = api.makeSettleInfo(elt); - - api.selectAndSwap(swapSpec.swapStyle, target, elt, content, settleInfo); - - settleInfo.elts.forEach(function(elt) { - if (elt.classList) { - elt.classList.add(htmx.config.settlingClass); - } - api.triggerEvent(elt, 'htmx:beforeSettle'); - }); - - // Handle settle tasks (with delay if requested) - if (swapSpec.settleDelay > 0) { - setTimeout(doSettle(settleInfo), swapSpec.settleDelay); - } else { - doSettle(settleInfo)(); - } - } - - /** - * doSettle mirrors much of the functionality in htmx that - * settles elements after their content has been swapped. - * TODO: this should be published by htmx, and not duplicated here - * @param {import("../htmx").HtmxSettleInfo} settleInfo - * @returns () => void - */ - function doSettle(settleInfo) { - - return function() { - settleInfo.tasks.forEach(function(task) { - task.call(); - }); - - settleInfo.elts.forEach(function(elt) { - if (elt.classList) { - elt.classList.remove(htmx.config.settlingClass); - } - api.triggerEvent(elt, 'htmx:afterSettle'); - }); - } - } - - function hasEventSource(node) { - return api.getInternalData(node).sseEventSource != null; - } - -})(); + function hasEventSource(node) { + return api.getInternalData(node).sseEventSource != null + } +})() diff --git a/public/js/htmx.min.js b/public/js/htmx.min.js index 47eb70f..6eeb64f 100644 --- a/public/js/htmx.min.js +++ b/public/js/htmx.min.js @@ -1 +1 @@ -(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else if(typeof module==="object"&&module.exports){module.exports=t()}else{e.htmx=e.htmx||t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var Q={onLoad:F,process:zt,on:de,off:ge,trigger:ce,ajax:Nr,find:C,findAll:f,closest:v,values:function(e,t){var r=dr(e,t||"post");return r.values},remove:_,addClass:z,removeClass:n,toggleClass:$,takeClass:W,defineExtension:Ur,removeExtension:Br,logAll:V,logNone:j,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:false,scrollBehavior:"smooth",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get"],selfRequestsOnly:false,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null},parseInterval:d,_:t,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){var t=new WebSocket(e,[]);t.binaryType=Q.config.wsBinaryType;return t},version:"1.9.10"};var r={addTriggerHandler:Lt,bodyContains:se,canAccessLocalStorage:U,findThisElement:xe,filterValues:yr,hasAttribute:o,getAttributeValue:te,getClosestAttributeValue:ne,getClosestMatch:c,getExpressionVars:Hr,getHeaders:xr,getInputValues:dr,getInternalData:ae,getSwapSpecification:wr,getTriggerSpecs:it,getTarget:ye,makeFragment:l,mergeObjects:le,makeSettleInfo:T,oobSwap:Ee,querySelectorExt:ue,selectAndSwap:je,settleImmediately:nr,shouldCancel:ut,triggerEvent:ce,triggerErrorEvent:fe,withExtensions:R};var w=["get","post","put","delete","patch"];var i=w.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");var S=e("head"),q=e("title"),H=e("svg",true);function e(e,t=false){return new RegExp(`<${e}(\\s[^>]*>|>)([\\s\\S]*?)<\\/${e}>`,t?"gim":"im")}function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e.getAttribute&&e.getAttribute(t)}function o(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function te(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){return e.parentElement}function re(){return document}function c(e,t){while(e&&!t(e)){e=u(e)}return e?e:null}function L(e,t,r){var n=te(t,r);var i=te(t,"hx-disinherit");if(e!==t&&i&&(i==="*"||i.split(" ").indexOf(r)>=0)){return"unset"}else{return n}}function ne(t,r){var n=null;c(t,function(e){return n=L(t,e,r)});if(n!=="unset"){return n}}function h(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function A(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function a(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=re().createDocumentFragment()}return i}function N(e){return/",0);return i.querySelector("template").content}switch(r){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return a(""+n+"
    ",1);case"col":return a(""+n+"
    ",2);case"tr":return a(""+n+"
    ",2);case"td":case"th":return a(""+n+"
    ",3);case"script":case"style":return a("
    "+n+"
    ",1);default:return a(n,0)}}function ie(e){if(e){e()}}function I(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function k(e){return I(e,"Function")}function P(e){return I(e,"Object")}function ae(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function M(e){var t=[];if(e){for(var r=0;r=0}function se(e){if(e.getRootNode&&e.getRootNode()instanceof window.ShadowRoot){return re().body.contains(e.getRootNode().host)}else{return re().body.contains(e)}}function D(e){return e.trim().split(/\s+/)}function le(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function E(e){try{return JSON.parse(e)}catch(e){b(e);return null}}function U(){var e="htmx:localStorageTest";try{localStorage.setItem(e,e);localStorage.removeItem(e);return true}catch(e){return false}}function B(t){try{var e=new URL(t);if(e){t=e.pathname+e.search}if(!/^\/$/.test(t)){t=t.replace(/\/+$/,"")}return t}catch(e){return t}}function t(e){return Tr(re().body,function(){return eval(e)})}function F(t){var e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function V(){Q.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function j(){Q.logger=null}function C(e,t){if(t){return e.querySelector(t)}else{return C(re(),e)}}function f(e,t){if(t){return e.querySelectorAll(t)}else{return f(re(),e)}}function _(e,t){e=g(e);if(t){setTimeout(function(){_(e);e=null},t)}else{e.parentElement.removeChild(e)}}function z(e,t,r){e=g(e);if(r){setTimeout(function(){z(e,t);e=null},r)}else{e.classList&&e.classList.add(t)}}function n(e,t,r){e=g(e);if(r){setTimeout(function(){n(e,t);e=null},r)}else{if(e.classList){e.classList.remove(t);if(e.classList.length===0){e.removeAttribute("class")}}}}function $(e,t){e=g(e);e.classList.toggle(t)}function W(e,t){e=g(e);oe(e.parentElement.children,function(e){n(e,t)});z(e,t)}function v(e,t){e=g(e);if(e.closest){return e.closest(t)}else{do{if(e==null||h(e,t)){return e}}while(e=e&&u(e));return null}}function s(e,t){return e.substring(0,t.length)===t}function G(e,t){return e.substring(e.length-t.length)===t}function J(e){var t=e.trim();if(s(t,"<")&&G(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function Z(e,t){if(t.indexOf("closest ")===0){return[v(e,J(t.substr(8)))]}else if(t.indexOf("find ")===0){return[C(e,J(t.substr(5)))]}else if(t==="next"){return[e.nextElementSibling]}else if(t.indexOf("next ")===0){return[K(e,J(t.substr(5)))]}else if(t==="previous"){return[e.previousElementSibling]}else if(t.indexOf("previous ")===0){return[Y(e,J(t.substr(9)))]}else if(t==="document"){return[document]}else if(t==="window"){return[window]}else if(t==="body"){return[document.body]}else{return re().querySelectorAll(J(t))}}var K=function(e,t){var r=re().querySelectorAll(t);for(var n=0;n=0;n--){var i=r[n];if(i.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING){return i}}};function ue(e,t){if(t){return Z(e,t)[0]}else{return Z(re().body,e)[0]}}function g(e){if(I(e,"String")){return C(e)}else{return e}}function ve(e,t,r){if(k(t)){return{target:re().body,event:e,listener:t}}else{return{target:g(e),event:t,listener:r}}}function de(t,r,n){jr(function(){var e=ve(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=k(r);return e?r:n}function ge(t,r,n){jr(function(){var e=ve(t,r,n);e.target.removeEventListener(e.event,e.listener)});return k(r)?r:n}var me=re().createElement("output");function pe(e,t){var r=ne(e,t);if(r){if(r==="this"){return[xe(e,t)]}else{var n=Z(e,r);if(n.length===0){b('The selector "'+r+'" on '+t+" returned no matches!");return[me]}else{return n}}}}function xe(e,t){return c(e,function(e){return te(e,t)!=null})}function ye(e){var t=ne(e,"hx-target");if(t){if(t==="this"){return xe(e,"hx-target")}else{return ue(e,t)}}else{var r=ae(e);if(r.boosted){return re().body}else{return e}}}function be(e){var t=Q.config.attributesToSettle;for(var r=0;r0){o=e.substr(0,e.indexOf(":"));t=e.substr(e.indexOf(":")+1,e.length)}else{o=e}var r=re().querySelectorAll(t);if(r){oe(r,function(e){var t;var r=i.cloneNode(true);t=re().createDocumentFragment();t.appendChild(r);if(!Se(o,e)){t=r}var n={shouldSwap:true,target:e,fragment:t};if(!ce(e,"htmx:oobBeforeSwap",n))return;e=n.target;if(n["shouldSwap"]){Fe(o,e,e,t,a)}oe(a.elts,function(e){ce(e,"htmx:oobAfterSwap",n)})});i.parentNode.removeChild(i)}else{i.parentNode.removeChild(i);fe(re().body,"htmx:oobErrorNoTarget",{content:i})}return e}function Ce(e,t,r){var n=ne(e,"hx-select-oob");if(n){var i=n.split(",");for(var a=0;a0){var r=t.replace("'","\\'");var n=e.tagName.replace(":","\\:");var i=o.querySelector(n+"[id='"+r+"']");if(i&&i!==o){var a=e.cloneNode();we(e,i);s.tasks.push(function(){we(e,a)})}}})}function Oe(e){return function(){n(e,Q.config.addedClass);zt(e);Nt(e);qe(e);ce(e,"htmx:load")}}function qe(e){var t="[autofocus]";var r=h(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function m(e,t,r,n){Te(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;z(i,Q.config.addedClass);e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(Oe(i))}}}function He(e,t){var r=0;while(r-1){var t=e.replace(H,"");var r=t.match(q);if(r){return r[2]}}}function je(e,t,r,n,i,a){i.title=Ve(n);var o=l(n);if(o){Ce(r,o,i);o=Be(r,o,a);Re(o);return Fe(e,r,t,o,i)}}function _e(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf("{")===0){var i=E(n);for(var a in i){if(i.hasOwnProperty(a)){var o=i[a];if(!P(o)){o={value:o}}ce(r,a,o)}}}else{var s=n.split(",");for(var l=0;l0){var o=t[0];if(o==="]"){n--;if(n===0){if(a===null){i=i+"true"}t.shift();i+=")})";try{var s=Tr(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){fe(re().body,"htmx:syntax:error",{error:e,source:i});return null}}}else if(o==="["){n++}if(Qe(o,a,r)){i+="(("+r+"."+o+") ? ("+r+"."+o+") : (window."+o+"))"}else{i=i+o}a=t.shift()}}}function y(e,t){var r="";while(e.length>0&&!t.test(e[0])){r+=e.shift()}return r}function tt(e){var t;if(e.length>0&&Ze.test(e[0])){e.shift();t=y(e,Ke).trim();e.shift()}else{t=y(e,x)}return t}var rt="input, textarea, select";function nt(e,t,r){var n=[];var i=Ye(t);do{y(i,Je);var a=i.length;var o=y(i,/[,\[\s]/);if(o!==""){if(o==="every"){var s={trigger:"every"};y(i,Je);s.pollInterval=d(y(i,/[,\[\s]/));y(i,Je);var l=et(e,i,"event");if(l){s.eventFilter=l}n.push(s)}else if(o.indexOf("sse:")===0){n.push({trigger:"sse",sseEvent:o.substr(4)})}else{var u={trigger:o};var l=et(e,i,"event");if(l){u.eventFilter=l}while(i.length>0&&i[0]!==","){y(i,Je);var f=i.shift();if(f==="changed"){u.changed=true}else if(f==="once"){u.once=true}else if(f==="consume"){u.consume=true}else if(f==="delay"&&i[0]===":"){i.shift();u.delay=d(y(i,x))}else if(f==="from"&&i[0]===":"){i.shift();if(Ze.test(i[0])){var c=tt(i)}else{var c=y(i,x);if(c==="closest"||c==="find"||c==="next"||c==="previous"){i.shift();var h=tt(i);if(h.length>0){c+=" "+h}}}u.from=c}else if(f==="target"&&i[0]===":"){i.shift();u.target=tt(i)}else if(f==="throttle"&&i[0]===":"){i.shift();u.throttle=d(y(i,x))}else if(f==="queue"&&i[0]===":"){i.shift();u.queue=y(i,x)}else if(f==="root"&&i[0]===":"){i.shift();u[f]=tt(i)}else if(f==="threshold"&&i[0]===":"){i.shift();u[f]=y(i,x)}else{fe(e,"htmx:syntax:error",{token:i.shift()})}}n.push(u)}}if(i.length===a){fe(e,"htmx:syntax:error",{token:i.shift()})}y(i,Je)}while(i[0]===","&&i.shift());if(r){r[t]=n}return n}function it(e){var t=te(e,"hx-trigger");var r=[];if(t){var n=Q.config.triggerSpecsCache;r=n&&n[t]||nt(e,t,n)}if(r.length>0){return r}else if(h(e,"form")){return[{trigger:"submit"}]}else if(h(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(h(e,rt)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function at(e){ae(e).cancelled=true}function ot(e,t,r){var n=ae(e);n.timeout=setTimeout(function(){if(se(e)&&n.cancelled!==true){if(!ct(r,e,Wt("hx:poll:trigger",{triggerSpec:r,target:e}))){t(e)}ot(e,t,r)}},r.pollInterval)}function st(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function lt(t,r,e){if(t.tagName==="A"&&st(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"){r.boosted=true;var n,i;if(t.tagName==="A"){n="get";i=ee(t,"href")}else{var a=ee(t,"method");n=a?a.toLowerCase():"get";if(n==="get"){}i=ee(t,"action")}e.forEach(function(e){ht(t,function(e,t){if(v(e,Q.config.disableSelector)){p(e);return}he(n,i,e,t)},r,e,true)})}}function ut(e,t){if(e.type==="submit"||e.type==="click"){if(t.tagName==="FORM"){return true}if(h(t,'input[type="submit"], button')&&v(t,"form")!==null){return true}if(t.tagName==="A"&&t.href&&(t.getAttribute("href")==="#"||t.getAttribute("href").indexOf("#")!==0)){return true}}return false}function ft(e,t){return ae(e).boosted&&e.tagName==="A"&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function ct(e,t,r){var n=e.eventFilter;if(n){try{return n.call(t,r)!==true}catch(e){fe(re().body,"htmx:eventFilter:error",{error:e,source:n.source});return true}}return false}function ht(a,o,e,s,l){var u=ae(a);var t;if(s.from){t=Z(a,s.from)}else{t=[a]}if(s.changed){t.forEach(function(e){var t=ae(e);t.lastValue=e.value})}oe(t,function(n){var i=function(e){if(!se(a)){n.removeEventListener(s.trigger,i);return}if(ft(a,e)){return}if(l||ut(e,a)){e.preventDefault()}if(ct(s,a,e)){return}var t=ae(e);t.triggerSpec=s;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(a)<0){t.handledFor.push(a);if(s.consume){e.stopPropagation()}if(s.target&&e.target){if(!h(e.target,s.target)){return}}if(s.once){if(u.triggeredOnce){return}else{u.triggeredOnce=true}}if(s.changed){var r=ae(n);if(r.lastValue===n.value){return}r.lastValue=n.value}if(u.delayed){clearTimeout(u.delayed)}if(u.throttle){return}if(s.throttle>0){if(!u.throttle){o(a,e);u.throttle=setTimeout(function(){u.throttle=null},s.throttle)}}else if(s.delay>0){u.delayed=setTimeout(function(){o(a,e)},s.delay)}else{ce(a,"htmx:trigger");o(a,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:s.trigger,listener:i,on:n});n.addEventListener(s.trigger,i)})}var vt=false;var dt=null;function gt(){if(!dt){dt=function(){vt=true};window.addEventListener("scroll",dt);setInterval(function(){if(vt){vt=false;oe(re().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(e){mt(e)})}},200)}}function mt(t){if(!o(t,"data-hx-revealed")&&X(t)){t.setAttribute("data-hx-revealed","true");var e=ae(t);if(e.initHash){ce(t,"revealed")}else{t.addEventListener("htmx:afterProcessNode",function(e){ce(t,"revealed")},{once:true})}}}function pt(e,t,r){var n=D(r);for(var i=0;i=0){var t=wt(n);setTimeout(function(){xt(s,r,n+1)},t)}};t.onopen=function(e){n=0};ae(s).webSocket=t;t.addEventListener("message",function(e){if(yt(s)){return}var t=e.data;R(s,function(e){t=e.transformResponse(t,null,s)});var r=T(s);var n=l(t);var i=M(n.children);for(var a=0;a0){ce(u,"htmx:validation:halted",i);return}t.send(JSON.stringify(l));if(ut(e,u)){e.preventDefault()}})}else{fe(u,"htmx:noWebSocketSourceError")}}function wt(e){var t=Q.config.wsReconnectDelay;if(typeof t==="function"){return t(e)}if(t==="full-jitter"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}b('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function St(e,t,r){var n=D(r);for(var i=0;i0){setTimeout(i,n)}else{i()}}function Ht(t,i,e){var a=false;oe(w,function(r){if(o(t,"hx-"+r)){var n=te(t,"hx-"+r);a=true;i.path=n;i.verb=r;e.forEach(function(e){Lt(t,e,i,function(e,t){if(v(e,Q.config.disableSelector)){p(e);return}he(r,n,e,t)})})}});return a}function Lt(n,e,t,r){if(e.sseEvent){Rt(n,r,e.sseEvent)}else if(e.trigger==="revealed"){gt();ht(n,r,t,e);mt(n)}else if(e.trigger==="intersect"){var i={};if(e.root){i.root=ue(n,e.root)}if(e.threshold){i.threshold=parseFloat(e.threshold)}var a=new IntersectionObserver(function(e){for(var t=0;t0){t.polling=true;ot(n,r,e)}else{ht(n,r,t,e)}}function At(e){if(Q.config.allowScriptTags&&(e.type==="text/javascript"||e.type==="module"||e.type==="")){var t=re().createElement("script");oe(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}var r=e.parentElement;try{r.insertBefore(t,e)}catch(e){b(e)}finally{if(e.parentElement){e.parentElement.removeChild(e)}}}}function Nt(e){if(h(e,"script")){At(e)}oe(f(e,"script"),function(e){At(e)})}function It(e){var t=e.attributes;for(var r=0;r0){var o=n.shift();var s=o.match(/^\s*([a-zA-Z:\-\.]+:)(.*)/);if(a===0&&s){o.split(":");i=s[1].slice(0,-1);r[i]=s[2]}else{r[i]+=o}a+=Bt(o)}for(var l in r){Ft(e,l,r[l])}}}function jt(e){Ae(e);for(var t=0;tQ.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){fe(re().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function Yt(e){if(!U()){return null}e=B(e);var t=E(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){ce(re().body,"htmx:historyCacheMissLoad",o);var e=l(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=Zt();var r=T(t);var n=Ve(this.response);if(n){var i=C("title");if(i){i.innerHTML=n}else{window.document.title=n}}Ue(t,e,r);nr(r.tasks);Jt=a;ce(re().body,"htmx:historyRestore",{path:a,cacheMiss:true,serverResponse:this.response})}else{fe(re().body,"htmx:historyCacheMissLoadError",o)}};e.send()}function ar(e){er();e=e||location.pathname+location.search;var t=Yt(e);if(t){var r=l(t.content);var n=Zt();var i=T(n);Ue(n,r,i);nr(i.tasks);document.title=t.title;setTimeout(function(){window.scrollTo(0,t.scroll)},0);Jt=e;ce(re().body,"htmx:historyRestore",{path:e,item:t})}else{if(Q.config.refreshOnHistoryMiss){window.location.reload(true)}else{ir(e)}}}function or(e){var t=pe(e,"hx-indicator");if(t==null){t=[e]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.classList["add"].call(e.classList,Q.config.requestClass)});return t}function sr(e){var t=pe(e,"hx-disabled-elt");if(t==null){t=[]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","")});return t}function lr(e,t){oe(e,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.classList["remove"].call(e.classList,Q.config.requestClass)}});oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.removeAttribute("disabled")}})}function ur(e,t){for(var r=0;r=0}function wr(e,t){var r=t?t:ne(e,"hx-swap");var n={swapStyle:ae(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&ae(e).boosted&&!br(e)){n["show"]="top"}if(r){var i=D(r);if(i.length>0){for(var a=0;a0?l.join(":"):null;n["scroll"]=u;n["scrollTarget"]=f}else if(o.indexOf("show:")===0){var c=o.substr(5);var l=c.split(":");var h=l.pop();var f=l.length>0?l.join(":"):null;n["show"]=h;n["showTarget"]=f}else if(o.indexOf("focus-scroll:")===0){var v=o.substr("focus-scroll:".length);n["focusScroll"]=v=="true"}else if(a==0){n["swapStyle"]=o}else{b("Unknown modifier in hx-swap: "+o)}}}}return n}function Sr(e){return ne(e,"hx-encoding")==="multipart/form-data"||h(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function Er(t,r,n){var i=null;R(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(Sr(r)){return pr(n)}else{return mr(n)}}}function T(e){return{tasks:[],elts:[e]}}function Cr(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){var i=null;if(t.scrollTarget){i=ue(r,t.scrollTarget)}if(t.scroll==="top"&&(r||i)){i=i||r;i.scrollTop=0}if(t.scroll==="bottom"&&(n||i)){i=i||n;i.scrollTop=i.scrollHeight}}if(t.show){var i=null;if(t.showTarget){var a=t.showTarget;if(t.showTarget==="window"){a="body"}i=ue(r,a)}if(t.show==="top"&&(r||i)){i=i||r;i.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(n||i)){i=i||n;i.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function Rr(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=te(e,t);if(i){var a=i.trim();var o=r;if(a==="unset"){return null}if(a.indexOf("javascript:")===0){a=a.substr(11);o=true}else if(a.indexOf("js:")===0){a=a.substr(3);o=true}if(a.indexOf("{")!==0){a="{"+a+"}"}var s;if(o){s=Tr(e,function(){return Function("return ("+a+")")()},{})}else{s=E(a)}for(var l in s){if(s.hasOwnProperty(l)){if(n[l]==null){n[l]=s[l]}}}}return Rr(u(e),t,r,n)}function Tr(e,t,r){if(Q.config.allowEval){return t()}else{fe(e,"htmx:evalDisallowedError");return r}}function Or(e,t){return Rr(e,"hx-vars",true,t)}function qr(e,t){return Rr(e,"hx-vals",false,t)}function Hr(e){return le(Or(e),qr(e))}function Lr(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+"-URI-AutoEncoded","true")}}}function Ar(t){if(t.responseURL&&typeof URL!=="undefined"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(re().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function O(e,t){return t.test(e.getAllResponseHeaders())}function Nr(e,t,r){e=e.toLowerCase();if(r){if(r instanceof Element||I(r,"String")){return he(e,t,null,null,{targetOverride:g(r),returnPromise:true})}else{return he(e,t,g(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:g(r.target),swapOverride:r.swap,select:r.select,returnPromise:true})}}else{return he(e,t,null,null,{returnPromise:true})}}function Ir(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function kr(e,t,r){var n;var i;if(typeof URL==="function"){i=new URL(t,document.location.href);var a=document.location.origin;n=a===i.origin}else{i=t;n=s(t,document.location.origin)}if(Q.config.selfRequestsOnly){if(!n){return false}}return ce(e,"htmx:validateUrl",le({url:i,sameHost:n},r))}function he(t,r,n,i,a,e){var o=null;var s=null;a=a!=null?a:{};if(a.returnPromise&&typeof Promise!=="undefined"){var l=new Promise(function(e,t){o=e;s=t})}if(n==null){n=re().body}var M=a.handler||Mr;var X=a.select||null;if(!se(n)){ie(o);return l}var u=a.targetOverride||ye(n);if(u==null||u==me){fe(n,"htmx:targetError",{target:te(n,"hx-target")});ie(s);return l}var f=ae(n);var c=f.lastButtonClicked;if(c){var h=ee(c,"formaction");if(h!=null){r=h}var v=ee(c,"formmethod");if(v!=null){if(v.toLowerCase()!=="dialog"){t=v}}}var d=ne(n,"hx-confirm");if(e===undefined){var D=function(e){return he(t,r,n,i,a,!!e)};var U={target:u,elt:n,path:r,verb:t,triggeringEvent:i,etc:a,issueRequest:D,question:d};if(ce(n,"htmx:confirm",U)===false){ie(o);return l}}var g=n;var m=ne(n,"hx-sync");var p=null;var x=false;if(m){var B=m.split(":");var F=B[0].trim();if(F==="this"){g=xe(n,"hx-sync")}else{g=ue(n,F)}m=(B[1]||"drop").trim();f=ae(g);if(m==="drop"&&f.xhr&&f.abortable!==true){ie(o);return l}else if(m==="abort"){if(f.xhr){ie(o);return l}else{x=true}}else if(m==="replace"){ce(g,"htmx:abort")}else if(m.indexOf("queue")===0){var V=m.split(" ");p=(V[1]||"last").trim()}}if(f.xhr){if(f.abortable){ce(g,"htmx:abort")}else{if(p==null){if(i){var y=ae(i);if(y&&y.triggerSpec&&y.triggerSpec.queue){p=y.triggerSpec.queue}}if(p==null){p="last"}}if(f.queuedRequests==null){f.queuedRequests=[]}if(p==="first"&&f.queuedRequests.length===0){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(p==="all"){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(p==="last"){f.queuedRequests=[];f.queuedRequests.push(function(){he(t,r,n,i,a)})}ie(o);return l}}var b=new XMLHttpRequest;f.xhr=b;f.abortable=x;var w=function(){f.xhr=null;f.abortable=false;if(f.queuedRequests!=null&&f.queuedRequests.length>0){var e=f.queuedRequests.shift();e()}};var j=ne(n,"hx-prompt");if(j){var S=prompt(j);if(S===null||!ce(n,"htmx:prompt",{prompt:S,target:u})){ie(o);w();return l}}if(d&&!e){if(!confirm(d)){ie(o);w();return l}}var E=xr(n,u,S);if(t!=="get"&&!Sr(n)){E["Content-Type"]="application/x-www-form-urlencoded"}if(a.headers){E=le(E,a.headers)}var _=dr(n,t);var C=_.errors;var R=_.values;if(a.values){R=le(R,a.values)}var z=Hr(n);var $=le(R,z);var T=yr($,n);if(Q.config.getCacheBusterParam&&t==="get"){T["org.htmx.cache-buster"]=ee(u,"id")||"true"}if(r==null||r===""){r=re().location.href}var O=Rr(n,"hx-request");var W=ae(n).boosted;var q=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;var H={boosted:W,useUrlParams:q,parameters:T,unfilteredParameters:$,headers:E,target:u,verb:t,errors:C,withCredentials:a.credentials||O.credentials||Q.config.withCredentials,timeout:a.timeout||O.timeout||Q.config.timeout,path:r,triggeringEvent:i};if(!ce(n,"htmx:configRequest",H)){ie(o);w();return l}r=H.path;t=H.verb;E=H.headers;T=H.parameters;C=H.errors;q=H.useUrlParams;if(C&&C.length>0){ce(n,"htmx:validation:halted",H);ie(o);w();return l}var G=r.split("#");var J=G[0];var L=G[1];var A=r;if(q){A=J;var Z=Object.keys(T).length!==0;if(Z){if(A.indexOf("?")<0){A+="?"}else{A+="&"}A+=mr(T);if(L){A+="#"+L}}}if(!kr(n,A,H)){fe(n,"htmx:invalidPath",H);ie(s);return l}b.open(t.toUpperCase(),A,true);b.overrideMimeType("text/html");b.withCredentials=H.withCredentials;b.timeout=H.timeout;if(O.noHeaders){}else{for(var N in E){if(E.hasOwnProperty(N)){var K=E[N];Lr(b,N,K)}}}var I={xhr:b,target:u,requestConfig:H,etc:a,boosted:W,select:X,pathInfo:{requestPath:r,finalRequestPath:A,anchor:L}};b.onload=function(){try{var e=Ir(n);I.pathInfo.responsePath=Ar(b);M(n,I);lr(k,P);ce(n,"htmx:afterRequest",I);ce(n,"htmx:afterOnLoad",I);if(!se(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(se(r)){t=r}}if(t){ce(t,"htmx:afterRequest",I);ce(t,"htmx:afterOnLoad",I)}}ie(o);w()}catch(e){fe(n,"htmx:onLoadError",le({error:e},I));throw e}};b.onerror=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:sendError",I);ie(s);w()};b.onabort=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:sendAbort",I);ie(s);w()};b.ontimeout=function(){lr(k,P);fe(n,"htmx:afterRequest",I);fe(n,"htmx:timeout",I);ie(s);w()};if(!ce(n,"htmx:beforeRequest",I)){ie(o);w();return l}var k=or(n);var P=sr(n);oe(["loadstart","loadend","progress","abort"],function(t){oe([b,b.upload],function(e){e.addEventListener(t,function(e){ce(n,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ce(n,"htmx:beforeSend",I);var Y=q?null:Er(b,n,T);b.send(Y);return l}function Pr(e,t){var r=t.xhr;var n=null;var i=null;if(O(r,/HX-Push:/i)){n=r.getResponseHeader("HX-Push");i="push"}else if(O(r,/HX-Push-Url:/i)){n=r.getResponseHeader("HX-Push-Url");i="push"}else if(O(r,/HX-Replace-Url:/i)){n=r.getResponseHeader("HX-Replace-Url");i="replace"}if(n){if(n==="false"){return{}}else{return{type:i,path:n}}}var a=t.pathInfo.finalRequestPath;var o=t.pathInfo.responsePath;var s=ne(e,"hx-push-url");var l=ne(e,"hx-replace-url");var u=ae(e).boosted;var f=null;var c=null;if(s){f="push";c=s}else if(l){f="replace";c=l}else if(u){f="push";c=o||a}if(c){if(c==="false"){return{}}if(c==="true"){c=o||a}if(t.pathInfo.anchor&&c.indexOf("#")===-1){c=c+"#"+t.pathInfo.anchor}return{type:f,path:c}}else{return{}}}function Mr(l,u){var f=u.xhr;var c=u.target;var e=u.etc;var t=u.requestConfig;var h=u.select;if(!ce(l,"htmx:beforeOnLoad",u))return;if(O(f,/HX-Trigger:/i)){_e(f,"HX-Trigger",l)}if(O(f,/HX-Location:/i)){er();var r=f.getResponseHeader("HX-Location");var v;if(r.indexOf("{")===0){v=E(r);r=v["path"];delete v["path"]}Nr("GET",r,v).then(function(){tr(r)});return}var n=O(f,/HX-Refresh:/i)&&"true"===f.getResponseHeader("HX-Refresh");if(O(f,/HX-Redirect:/i)){location.href=f.getResponseHeader("HX-Redirect");n&&location.reload();return}if(n){location.reload();return}if(O(f,/HX-Retarget:/i)){if(f.getResponseHeader("HX-Retarget")==="this"){u.target=l}else{u.target=ue(l,f.getResponseHeader("HX-Retarget"))}}var d=Pr(l,u);var i=f.status>=200&&f.status<400&&f.status!==204;var g=f.response;var a=f.status>=400;var m=Q.config.ignoreTitle;var o=le({shouldSwap:i,serverResponse:g,isError:a,ignoreTitle:m},u);if(!ce(c,"htmx:beforeSwap",o))return;c=o.target;g=o.serverResponse;a=o.isError;m=o.ignoreTitle;u.target=c;u.failed=a;u.successful=!a;if(o.shouldSwap){if(f.status===286){at(l)}R(l,function(e){g=e.transformResponse(g,f,l)});if(d.type){er()}var s=e.swapOverride;if(O(f,/HX-Reswap:/i)){s=f.getResponseHeader("HX-Reswap")}var v=wr(l,s);if(v.hasOwnProperty("ignoreTitle")){m=v.ignoreTitle}c.classList.add(Q.config.swappingClass);var p=null;var x=null;var y=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var r;if(h){r=h}if(O(f,/HX-Reselect:/i)){r=f.getResponseHeader("HX-Reselect")}if(d.type){ce(re().body,"htmx:beforeHistoryUpdate",le({history:d},u));if(d.type==="push"){tr(d.path);ce(re().body,"htmx:pushedIntoHistory",{path:d.path})}else{rr(d.path);ce(re().body,"htmx:replacedInHistory",{path:d.path})}}var n=T(c);je(v.swapStyle,c,l,g,n,r);if(t.elt&&!se(t.elt)&&ee(t.elt,"id")){var i=document.getElementById(ee(t.elt,"id"));var a={preventScroll:v.focusScroll!==undefined?!v.focusScroll:!Q.config.defaultFocusScroll};if(i){if(t.start&&i.setSelectionRange){try{i.setSelectionRange(t.start,t.end)}catch(e){}}i.focus(a)}}c.classList.remove(Q.config.swappingClass);oe(n.elts,function(e){if(e.classList){e.classList.add(Q.config.settlingClass)}ce(e,"htmx:afterSwap",u)});if(O(f,/HX-Trigger-After-Swap:/i)){var o=l;if(!se(l)){o=re().body}_e(f,"HX-Trigger-After-Swap",o)}var s=function(){oe(n.tasks,function(e){e.call()});oe(n.elts,function(e){if(e.classList){e.classList.remove(Q.config.settlingClass)}ce(e,"htmx:afterSettle",u)});if(u.pathInfo.anchor){var e=re().getElementById(u.pathInfo.anchor);if(e){e.scrollIntoView({block:"start",behavior:"auto"})}}if(n.title&&!m){var t=C("title");if(t){t.innerHTML=n.title}else{window.document.title=n.title}}Cr(n.elts,v);if(O(f,/HX-Trigger-After-Settle:/i)){var r=l;if(!se(l)){r=re().body}_e(f,"HX-Trigger-After-Settle",r)}ie(p)};if(v.settleDelay>0){setTimeout(s,v.settleDelay)}else{s()}}catch(e){fe(l,"htmx:swapError",u);ie(x);throw e}};var b=Q.config.globalViewTransitions;if(v.hasOwnProperty("transition")){b=v.transition}if(b&&ce(l,"htmx:beforeTransition",u)&&typeof Promise!=="undefined"&&document.startViewTransition){var w=new Promise(function(e,t){p=e;x=t});var S=y;y=function(){document.startViewTransition(function(){S();return w})}}if(v.swapDelay>0){setTimeout(y,v.swapDelay)}else{y()}}if(a){fe(l,"htmx:responseError",le({error:"Response Status Error Code "+f.status+" from "+u.pathInfo.requestPath},u))}}var Xr={};function Dr(){return{init:function(e){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function Ur(e,t){if(t.init){t.init(r)}Xr[e]=le(Dr(),t)}function Br(e){delete Xr[e]}function Fr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=te(e,"hx-ext");if(t){oe(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=Xr[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return Fr(u(e),r,n)}var Vr=false;re().addEventListener("DOMContentLoaded",function(){Vr=true});function jr(e){if(Vr||re().readyState==="complete"){e()}else{re().addEventListener("DOMContentLoaded",e)}}function _r(){if(Q.config.includeIndicatorStyles!==false){re().head.insertAdjacentHTML("beforeend","")}}function zr(){var e=re().querySelector('meta[name="htmx-config"]');if(e){return E(e.content)}else{return null}}function $r(){var e=zr();if(e){Q.config=le(Q.config,e)}}jr(function(){$r();_r();var e=re().body;zt(e);var t=re().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){var t=e.target;var r=ae(t);if(r&&r.xhr){r.xhr.abort()}});const r=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){ar();oe(t,function(e){ce(e,"htmx:restored",{document:re(),triggerEvent:ce})})}else{if(r){r(e)}}};setTimeout(function(){ce(e,"htmx:load",{});e=null},0)});return Q}()}); \ No newline at end of file +var htmx=function(){"use strict";const Q={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){const n=cn(e,t||"post");return n.values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,allowScriptTags:true,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:true,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null,disableInheritance:false,responseHandling:[{code:"204",swap:false},{code:"[23]..",swap:true},{code:"[45]..",swap:false,error:true}],allowNestedOobSwaps:true},parseInterval:null,_:null,version:"2.0.1"};Q.onLoad=$;Q.process=kt;Q.on=be;Q.off=we;Q.trigger=he;Q.ajax=Hn;Q.find=r;Q.findAll=p;Q.closest=g;Q.remove=K;Q.addClass=Y;Q.removeClass=o;Q.toggleClass=W;Q.takeClass=ge;Q.swap=ze;Q.defineExtension=Un;Q.removeExtension=Bn;Q.logAll=z;Q.logNone=J;Q.parseInterval=d;Q._=_;const n={addTriggerHandler:Et,bodyContains:le,canAccessLocalStorage:j,findThisElement:Ee,filterValues:dn,swap:ze,hasAttribute:s,getAttributeValue:te,getClosestAttributeValue:re,getClosestMatch:T,getExpressionVars:Cn,getHeaders:hn,getInputValues:cn,getInternalData:ie,getSwapSpecification:pn,getTriggerSpecs:lt,getTarget:Ce,makeFragment:k,mergeObjects:ue,makeSettleInfo:xn,oobSwap:Te,querySelectorExt:fe,settleImmediately:Gt,shouldCancel:dt,triggerEvent:he,triggerErrorEvent:ae,withExtensions:Ut};const v=["get","post","put","delete","patch"];const R=v.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");const O=e("head");function e(e,t=false){return new RegExp(`<${e}(\\s[^>]*>|>)([\\s\\S]*?)<\\/${e}>`,t?"gim":"im")}function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)=="ms"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)=="s"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)=="m"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e instanceof Element&&e.getAttribute(t)}function s(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function te(e,t){return ee(e,t)||ee(e,"data-"+t)}function u(e){const t=e.parentElement;if(!t&&e.parentNode instanceof ShadowRoot)return e.parentNode;return t}function ne(){return document}function H(e,t){return e.getRootNode?e.getRootNode({composed:t}):ne()}function T(e,t){while(e&&!t(e)){e=u(e)}return e||null}function q(e,t,n){const r=te(t,n);const o=te(t,"hx-disinherit");var i=te(t,"hx-inherit");if(e!==t){if(Q.config.disableInheritance){if(i&&(i==="*"||i.split(" ").indexOf(n)>=0)){return r}else{return null}}if(o&&(o==="*"||o.split(" ").indexOf(n)>=0)){return"unset"}}return r}function re(t,n){let r=null;T(t,function(e){return!!(r=q(t,ce(e),n))});if(r!=="unset"){return r}}function a(e,t){const n=e instanceof Element&&(e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector);return!!n&&n.call(e,t)}function L(e){const t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;const n=t.exec(e);if(n){return n[1].toLowerCase()}else{return""}}function N(e){const t=new DOMParser;return t.parseFromString(e,"text/html")}function A(e,t){while(t.childNodes.length>0){e.append(t.childNodes[0])}}function I(e){const t=ne().createElement("script");se(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}return t}function P(e){return e.matches("script")&&(e.type==="text/javascript"||e.type==="module"||e.type==="")}function D(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(P(e)){const t=I(e);const n=e.parentNode;try{n.insertBefore(t,e)}catch(e){w(e)}finally{e.remove()}}})}function k(e){const t=e.replace(O,"");const n=L(t);let r;if(n==="html"){r=new DocumentFragment;const i=N(e);A(r,i.body);r.title=i.title}else if(n==="body"){r=new DocumentFragment;const i=N(t);A(r,i.body);r.title=i.title}else{const i=N('");r=i.querySelector("template").content;r.title=i.title;var o=r.querySelector("title");if(o&&o.parentNode===r){o.remove();r.title=o.innerText}}if(r){if(Q.config.allowScriptTags){D(r)}else{r.querySelectorAll("script").forEach(e=>e.remove())}}return r}function oe(e){if(e){e()}}function t(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function M(e){return typeof e==="function"}function X(e){return t(e,"Object")}function ie(e){const t="htmx-internal-data";let n=e[t];if(!n){n=e[t]={}}return n}function F(t){const n=[];if(t){for(let e=0;e=0}function le(e){const t=e.getRootNode&&e.getRootNode();if(t&&t instanceof window.ShadowRoot){return ne().body.contains(t.host)}else{return ne().body.contains(e)}}function B(e){return e.trim().split(/\s+/)}function ue(e,t){for(const n in t){if(t.hasOwnProperty(n)){e[n]=t[n]}}return e}function S(e){try{return JSON.parse(e)}catch(e){w(e);return null}}function j(){const e="htmx:localStorageTest";try{localStorage.setItem(e,e);localStorage.removeItem(e);return true}catch(e){return false}}function V(t){try{const e=new URL(t);if(e){t=e.pathname+e.search}if(!/^\/$/.test(t)){t=t.replace(/\/+$/,"")}return t}catch(e){return t}}function _(e){return vn(ne().body,function(){return eval(e)})}function $(t){const e=Q.on("htmx:load",function(e){t(e.detail.elt)});return e}function z(){Q.logger=function(e,t,n){if(console){console.log(t,e,n)}}}function J(){Q.logger=null}function r(e,t){if(typeof e!=="string"){return e.querySelector(t)}else{return r(ne(),e)}}function p(e,t){if(typeof e!=="string"){return e.querySelectorAll(t)}else{return p(ne(),e)}}function E(){return window}function K(e,t){e=y(e);if(t){E().setTimeout(function(){K(e);e=null},t)}else{u(e).removeChild(e)}}function ce(e){return e instanceof Element?e:null}function G(e){return e instanceof HTMLElement?e:null}function Z(e){return typeof e==="string"?e:null}function h(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function Y(e,t,n){e=ce(y(e));if(!e){return}if(n){E().setTimeout(function(){Y(e,t);e=null},n)}else{e.classList&&e.classList.add(t)}}function o(e,t,n){let r=ce(y(e));if(!r){return}if(n){E().setTimeout(function(){o(r,t);r=null},n)}else{if(r.classList){r.classList.remove(t);if(r.classList.length===0){r.removeAttribute("class")}}}}function W(e,t){e=y(e);e.classList.toggle(t)}function ge(e,t){e=y(e);se(e.parentElement.children,function(e){o(e,t)});Y(ce(e),t)}function g(e,t){e=ce(y(e));if(e&&e.closest){return e.closest(t)}else{do{if(e==null||a(e,t)){return e}}while(e=e&&ce(u(e)));return null}}function l(e,t){return e.substring(0,t.length)===t}function pe(e,t){return e.substring(e.length-t.length)===t}function i(e){const t=e.trim();if(l(t,"<")&&pe(t,"/>")){return t.substring(1,t.length-2)}else{return t}}function m(e,t,n){e=y(e);if(t.indexOf("closest ")===0){return[g(ce(e),i(t.substr(8)))]}else if(t.indexOf("find ")===0){return[r(h(e),i(t.substr(5)))]}else if(t==="next"){return[ce(e).nextElementSibling]}else if(t.indexOf("next ")===0){return[me(e,i(t.substr(5)),!!n)]}else if(t==="previous"){return[ce(e).previousElementSibling]}else if(t.indexOf("previous ")===0){return[ye(e,i(t.substr(9)),!!n)]}else if(t==="document"){return[document]}else if(t==="window"){return[window]}else if(t==="body"){return[document.body]}else if(t==="root"){return[H(e,!!n)]}else if(t.indexOf("global ")===0){return m(e,t.slice(7),true)}else{return F(h(H(e,!!n)).querySelectorAll(i(t)))}}var me=function(t,e,n){const r=h(H(t,n)).querySelectorAll(e);for(let e=0;e=0;e--){const o=r[e];if(o.compareDocumentPosition(t)===Node.DOCUMENT_POSITION_FOLLOWING){return o}}};function fe(e,t){if(typeof e!=="string"){return m(e,t)[0]}else{return m(ne().body,e)[0]}}function y(e,t){if(typeof e==="string"){return r(h(t)||document,e)}else{return e}}function xe(e,t,n){if(M(t)){return{target:ne().body,event:Z(e),listener:t}}else{return{target:y(e),event:Z(t),listener:n}}}function be(t,n,r){_n(function(){const e=xe(t,n,r);e.target.addEventListener(e.event,e.listener)});const e=M(n);return e?n:r}function we(t,n,r){_n(function(){const e=xe(t,n,r);e.target.removeEventListener(e.event,e.listener)});return M(n)?n:r}const ve=ne().createElement("output");function Se(e,t){const n=re(e,t);if(n){if(n==="this"){return[Ee(e,t)]}else{const r=m(e,n);if(r.length===0){w('The selector "'+n+'" on '+t+" returned no matches!");return[ve]}else{return r}}}}function Ee(e,t){return ce(T(e,function(e){return te(ce(e),t)!=null}))}function Ce(e){const t=re(e,"hx-target");if(t){if(t==="this"){return Ee(e,"hx-target")}else{return fe(e,t)}}else{const n=ie(e);if(n.boosted){return ne().body}else{return e}}}function Re(t){const n=Q.config.attributesToSettle;for(let e=0;e0){s=e.substr(0,e.indexOf(":"));t=e.substr(e.indexOf(":")+1,e.length)}else{s=e}const n=ne().querySelectorAll(t);if(n){se(n,function(e){let t;const n=o.cloneNode(true);t=ne().createDocumentFragment();t.appendChild(n);if(!He(s,e)){t=h(n)}const r={shouldSwap:true,target:e,fragment:t};if(!he(e,"htmx:oobBeforeSwap",r))return;e=r.target;if(r.shouldSwap){_e(s,e,e,t,i)}se(i.elts,function(e){he(e,"htmx:oobAfterSwap",r)})});o.parentNode.removeChild(o)}else{o.parentNode.removeChild(o);ae(ne().body,"htmx:oobErrorNoTarget",{content:o})}return e}function qe(e){se(p(e,"[hx-preserve], [data-hx-preserve]"),function(e){const t=te(e,"id");const n=ne().getElementById(t);if(n!=null){e.parentNode.replaceChild(n,e)}})}function Le(l,e,u){se(e.querySelectorAll("[id]"),function(t){const n=ee(t,"id");if(n&&n.length>0){const r=n.replace("'","\\'");const o=t.tagName.replace(":","\\:");const e=h(l);const i=e&&e.querySelector(o+"[id='"+r+"']");if(i&&i!==e){const s=t.cloneNode();Oe(t,i);u.tasks.push(function(){Oe(t,s)})}}})}function Ne(e){return function(){o(e,Q.config.addedClass);kt(ce(e));Ae(h(e));he(e,"htmx:load")}}function Ae(e){const t="[autofocus]";const n=G(a(e,t)?e:e.querySelector(t));if(n!=null){n.focus()}}function c(e,t,n,r){Le(e,n,r);while(n.childNodes.length>0){const o=n.firstChild;Y(ce(o),Q.config.addedClass);e.insertBefore(o,t);if(o.nodeType!==Node.TEXT_NODE&&o.nodeType!==Node.COMMENT_NODE){r.tasks.push(Ne(o))}}}function Ie(e,t){let n=0;while(n0){E().setTimeout(l,r.settleDelay)}else{l()}}function Je(e,t,n){const r=e.getResponseHeader(t);if(r.indexOf("{")===0){const o=S(r);for(const i in o){if(o.hasOwnProperty(i)){let e=o[i];if(!X(e)){e={value:e}}he(n,i,e)}}}else{const s=r.split(",");for(let e=0;e0){const s=o[0];if(s==="]"){e--;if(e===0){if(n===null){t=t+"true"}o.shift();t+=")})";try{const l=vn(r,function(){return Function(t)()},function(){return true});l.source=t;return l}catch(e){ae(ne().body,"htmx:syntax:error",{error:e,source:t});return null}}}else if(s==="["){e++}if(nt(s,n,i)){t+="(("+i+"."+s+") ? ("+i+"."+s+") : (window."+s+"))"}else{t=t+s}n=o.shift()}}}function b(e,t){let n="";while(e.length>0&&!t.test(e[0])){n+=e.shift()}return n}function ot(e){let t;if(e.length>0&&Qe.test(e[0])){e.shift();t=b(e,et).trim();e.shift()}else{t=b(e,x)}return t}const it="input, textarea, select";function st(e,t,n){const r=[];const o=tt(t);do{b(o,We);const l=o.length;const u=b(o,/[,\[\s]/);if(u!==""){if(u==="every"){const c={trigger:"every"};b(o,We);c.pollInterval=d(b(o,/[,\[\s]/));b(o,We);var i=rt(e,o,"event");if(i){c.eventFilter=i}r.push(c)}else{const f={trigger:u};var i=rt(e,o,"event");if(i){f.eventFilter=i}while(o.length>0&&o[0]!==","){b(o,We);const a=o.shift();if(a==="changed"){f.changed=true}else if(a==="once"){f.once=true}else if(a==="consume"){f.consume=true}else if(a==="delay"&&o[0]===":"){o.shift();f.delay=d(b(o,x))}else if(a==="from"&&o[0]===":"){o.shift();if(Qe.test(o[0])){var s=ot(o)}else{var s=b(o,x);if(s==="closest"||s==="find"||s==="next"||s==="previous"){o.shift();const h=ot(o);if(h.length>0){s+=" "+h}}}f.from=s}else if(a==="target"&&o[0]===":"){o.shift();f.target=ot(o)}else if(a==="throttle"&&o[0]===":"){o.shift();f.throttle=d(b(o,x))}else if(a==="queue"&&o[0]===":"){o.shift();f.queue=b(o,x)}else if(a==="root"&&o[0]===":"){o.shift();f[a]=ot(o)}else if(a==="threshold"&&o[0]===":"){o.shift();f[a]=b(o,x)}else{ae(e,"htmx:syntax:error",{token:o.shift()})}}r.push(f)}}if(o.length===l){ae(e,"htmx:syntax:error",{token:o.shift()})}b(o,We)}while(o[0]===","&&o.shift());if(n){n[t]=r}return r}function lt(e){const t=te(e,"hx-trigger");let n=[];if(t){const r=Q.config.triggerSpecsCache;n=r&&r[t]||st(e,t,r)}if(n.length>0){return n}else if(a(e,"form")){return[{trigger:"submit"}]}else if(a(e,'input[type="button"], input[type="submit"]')){return[{trigger:"click"}]}else if(a(e,it)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function ut(e){ie(e).cancelled=true}function ct(e,t,n){const r=ie(e);r.timeout=E().setTimeout(function(){if(le(e)&&r.cancelled!==true){if(!pt(n,e,Xt("hx:poll:trigger",{triggerSpec:n,target:e}))){t(e)}ct(e,t,n)}},n.pollInterval)}function ft(e){return location.hostname===e.hostname&&ee(e,"href")&&ee(e,"href").indexOf("#")!==0}function at(e){return g(e,Q.config.disableSelector)}function ht(t,n,e){if(t instanceof HTMLAnchorElement&&ft(t)&&(t.target===""||t.target==="_self")||t.tagName==="FORM"){n.boosted=true;let r,o;if(t.tagName==="A"){r="get";o=ee(t,"href")}else{const i=ee(t,"method");r=i?i.toLowerCase():"get";if(r==="get"){}o=ee(t,"action")}e.forEach(function(e){mt(t,function(e,t){const n=ce(e);if(at(n)){f(n);return}de(r,o,n,t)},n,e,true)})}}function dt(e,t){const n=ce(t);if(!n){return false}if(e.type==="submit"||e.type==="click"){if(n.tagName==="FORM"){return true}if(a(n,'input[type="submit"], button')&&g(n,"form")!==null){return true}if(n instanceof HTMLAnchorElement&&n.href&&(n.getAttribute("href")==="#"||n.getAttribute("href").indexOf("#")!==0)){return true}}return false}function gt(e,t){return ie(e).boosted&&e instanceof HTMLAnchorElement&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function pt(e,t,n){const r=e.eventFilter;if(r){try{return r.call(t,n)!==true}catch(e){const o=r.source;ae(ne().body,"htmx:eventFilter:error",{error:e,source:o});return true}}return false}function mt(s,l,e,u,c){const f=ie(s);let t;if(u.from){t=m(s,u.from)}else{t=[s]}if(u.changed){t.forEach(function(e){const t=ie(e);t.lastValue=e.value})}se(t,function(o){const i=function(e){if(!le(s)){o.removeEventListener(u.trigger,i);return}if(gt(s,e)){return}if(c||dt(e,s)){e.preventDefault()}if(pt(u,s,e)){return}const t=ie(e);t.triggerSpec=u;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(s)<0){t.handledFor.push(s);if(u.consume){e.stopPropagation()}if(u.target&&e.target){if(!a(ce(e.target),u.target)){return}}if(u.once){if(f.triggeredOnce){return}else{f.triggeredOnce=true}}if(u.changed){const n=ie(o);const r=o.value;if(n.lastValue===r){return}n.lastValue=r}if(f.delayed){clearTimeout(f.delayed)}if(f.throttle){return}if(u.throttle>0){if(!f.throttle){l(s,e);f.throttle=E().setTimeout(function(){f.throttle=null},u.throttle)}}else if(u.delay>0){f.delayed=E().setTimeout(function(){l(s,e)},u.delay)}else{he(s,"htmx:trigger");l(s,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:u.trigger,listener:i,on:o});o.addEventListener(u.trigger,i)})}let yt=false;let xt=null;function bt(){if(!xt){xt=function(){yt=true};window.addEventListener("scroll",xt);setInterval(function(){if(yt){yt=false;se(ne().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){wt(e)})}},200)}}function wt(e){if(!s(e,"data-hx-revealed")&&U(e)){e.setAttribute("data-hx-revealed","true");const t=ie(e);if(t.initHash){he(e,"revealed")}else{e.addEventListener("htmx:afterProcessNode",function(){he(e,"revealed")},{once:true})}}}function vt(e,t,n,r){const o=function(){if(!n.loaded){n.loaded=true;t(e)}};if(r>0){E().setTimeout(o,r)}else{o()}}function St(t,n,e){let i=false;se(v,function(r){if(s(t,"hx-"+r)){const o=te(t,"hx-"+r);i=true;n.path=o;n.verb=r;e.forEach(function(e){Et(t,e,n,function(e,t){const n=ce(e);if(g(n,Q.config.disableSelector)){f(n);return}de(r,o,n,t)})})}});return i}function Et(r,e,t,n){if(e.trigger==="revealed"){bt();mt(r,n,t,e);wt(ce(r))}else if(e.trigger==="intersect"){const o={};if(e.root){o.root=fe(r,e.root)}if(e.threshold){o.threshold=parseFloat(e.threshold)}const i=new IntersectionObserver(function(t){for(let e=0;e0){t.polling=true;ct(ce(r),n,e)}else{mt(r,n,t,e)}}function Ct(e){const t=ce(e);if(!t){return false}const n=t.attributes;for(let e=0;e", "+e).join(""));return o}else{return[]}}function qt(e){const t=g(ce(e.target),"button, input[type='submit']");const n=Nt(e);if(n){n.lastButtonClicked=t}}function Lt(e){const t=Nt(e);if(t){t.lastButtonClicked=null}}function Nt(e){const t=g(ce(e.target),"button, input[type='submit']");if(!t){return}const n=y("#"+ee(t,"form"),t.getRootNode())||g(t,"form");if(!n){return}return ie(n)}function At(e){e.addEventListener("click",qt);e.addEventListener("focusin",qt);e.addEventListener("focusout",Lt)}function It(t,e,n){const r=ie(t);if(!Array.isArray(r.onHandlers)){r.onHandlers=[]}let o;const i=function(e){vn(t,function(){if(at(t)){return}if(!o){o=new Function("event",n)}o.call(t,e)})};t.addEventListener(e,i);r.onHandlers.push({event:e,listener:i})}function Pt(t){De(t);for(let e=0;eQ.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){ae(ne().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function _t(t){if(!j()){return null}t=V(t);const n=S(localStorage.getItem("htmx-history-cache"))||[];for(let e=0;e=200&&this.status<400){he(ne().body,"htmx:historyCacheMissLoad",i);const e=k(this.response);const t=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;const n=jt();const r=xn(n);kn(e.title);Ve(n,t,r);Gt(r.tasks);Bt=o;he(ne().body,"htmx:historyRestore",{path:o,cacheMiss:true,serverResponse:this.response})}else{ae(ne().body,"htmx:historyCacheMissLoadError",i)}};e.send()}function Yt(e){zt();e=e||location.pathname+location.search;const t=_t(e);if(t){const n=k(t.content);const r=jt();const o=xn(r);kn(n.title);Ve(r,n,o);Gt(o.tasks);E().setTimeout(function(){window.scrollTo(0,t.scroll)},0);Bt=e;he(ne().body,"htmx:historyRestore",{path:e,item:t})}else{if(Q.config.refreshOnHistoryMiss){window.location.reload(true)}else{Zt(e)}}}function Wt(e){let t=Se(e,"hx-indicator");if(t==null){t=[e]}se(t,function(e){const t=ie(e);t.requestCount=(t.requestCount||0)+1;e.classList.add.call(e.classList,Q.config.requestClass)});return t}function Qt(e){let t=Se(e,"hx-disabled-elt");if(t==null){t=[]}se(t,function(e){const t=ie(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute("disabled","")});return t}function en(e,t){se(e,function(e){const t=ie(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.classList.remove.call(e.classList,Q.config.requestClass)}});se(t,function(e){const t=ie(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.removeAttribute("disabled")}})}function tn(t,n){for(let e=0;en.indexOf(e)<0)}else{e=e.filter(e=>e!==n)}r.delete(t);se(e,e=>r.append(t,e))}}function sn(t,n,r,o,i){if(o==null||tn(t,o)){return}else{t.push(o)}if(nn(o)){const s=ee(o,"name");let e=o.value;if(o instanceof HTMLSelectElement&&o.multiple){e=F(o.querySelectorAll("option:checked")).map(function(e){return e.value})}if(o instanceof HTMLInputElement&&o.files){e=F(o.files)}rn(s,e,n);if(i){ln(o,r)}}if(o instanceof HTMLFormElement){se(o.elements,function(e){if(t.indexOf(e)>=0){on(e.name,e.value,n)}else{t.push(e)}if(i){ln(e,r)}});new FormData(o).forEach(function(e,t){if(e instanceof File&&e.name===""){return}rn(t,e,n)})}}function ln(e,t){const n=e;if(n.willValidate){he(n,"htmx:validation:validate");if(!n.checkValidity()){t.push({elt:n,message:n.validationMessage,validity:n.validity});he(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})}}}function un(t,e){for(const n of e.keys()){t.delete(n);e.getAll(n).forEach(function(e){t.append(n,e)})}return t}function cn(e,t){const n=[];const r=new FormData;const o=new FormData;const i=[];const s=ie(e);if(s.lastButtonClicked&&!le(s.lastButtonClicked)){s.lastButtonClicked=null}let l=e instanceof HTMLFormElement&&e.noValidate!==true||te(e,"hx-validate")==="true";if(s.lastButtonClicked){l=l&&s.lastButtonClicked.formNoValidate!==true}if(t!=="get"){sn(n,o,i,g(e,"form"),l)}sn(n,r,i,e,l);if(s.lastButtonClicked||e.tagName==="BUTTON"||e.tagName==="INPUT"&&ee(e,"type")==="submit"){const c=s.lastButtonClicked||e;const f=ee(c,"name");rn(f,c.value,o)}const u=Se(e,"hx-include");se(u,function(e){sn(n,r,i,ce(e),l);if(!a(e,"form")){se(h(e).querySelectorAll(it),function(e){sn(n,r,i,e,l)})}});un(r,o);return{errors:i,formData:r,values:An(r)}}function fn(e,t,n){if(e!==""){e+="&"}if(String(n)==="[object Object]"){n=JSON.stringify(n)}const r=encodeURIComponent(n);e+=encodeURIComponent(t)+"="+r;return e}function an(e){e=Ln(e);let n="";e.forEach(function(e,t){n=fn(n,t,e)});return n}function hn(e,t,n){const r={"HX-Request":"true","HX-Trigger":ee(e,"id"),"HX-Trigger-Name":ee(e,"name"),"HX-Target":te(t,"id"),"HX-Current-URL":ne().location.href};wn(e,"hx-headers",false,r);if(n!==undefined){r["HX-Prompt"]=n}if(ie(e).boosted){r["HX-Boosted"]="true"}return r}function dn(n,e){const t=re(e,"hx-params");if(t){if(t==="none"){return new FormData}else if(t==="*"){return n}else if(t.indexOf("not ")===0){se(t.substr(4).split(","),function(e){e=e.trim();n.delete(e)});return n}else{const r=new FormData;se(t.split(","),function(t){t=t.trim();if(n.has(t)){n.getAll(t).forEach(function(e){r.append(t,e)})}});return r}}else{return n}}function gn(e){return!!ee(e,"href")&&ee(e,"href").indexOf("#")>=0}function pn(e,t){const n=t||re(e,"hx-swap");const r={swapStyle:ie(e).boosted?"innerHTML":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&ie(e).boosted&&!gn(e)){r.show="top"}if(n){const s=B(n);if(s.length>0){for(let e=0;e0?o.join(":"):null;r.scroll=c;r.scrollTarget=i}else if(l.indexOf("show:")===0){const f=l.substr(5);var o=f.split(":");const a=o.pop();var i=o.length>0?o.join(":"):null;r.show=a;r.showTarget=i}else if(l.indexOf("focus-scroll:")===0){const h=l.substr("focus-scroll:".length);r.focusScroll=h=="true"}else if(e==0){r.swapStyle=l}else{w("Unknown modifier in hx-swap: "+l)}}}}return r}function mn(e){return re(e,"hx-encoding")==="multipart/form-data"||a(e,"form")&&ee(e,"enctype")==="multipart/form-data"}function yn(t,n,r){let o=null;Ut(n,function(e){if(o==null){o=e.encodeParameters(t,r,n)}});if(o!=null){return o}else{if(mn(n)){return un(new FormData,Ln(r))}else{return an(r)}}}function xn(e){return{tasks:[],elts:[e]}}function bn(e,t){const n=e[0];const r=e[e.length-1];if(t.scroll){var o=null;if(t.scrollTarget){o=ce(fe(n,t.scrollTarget))}if(t.scroll==="top"&&(n||o)){o=o||n;o.scrollTop=0}if(t.scroll==="bottom"&&(r||o)){o=o||r;o.scrollTop=o.scrollHeight}}if(t.show){var o=null;if(t.showTarget){let e=t.showTarget;if(t.showTarget==="window"){e="body"}o=ce(fe(n,e))}if(t.show==="top"&&(n||o)){o=o||n;o.scrollIntoView({block:"start",behavior:Q.config.scrollBehavior})}if(t.show==="bottom"&&(r||o)){o=o||r;o.scrollIntoView({block:"end",behavior:Q.config.scrollBehavior})}}}function wn(r,e,o,i){if(i==null){i={}}if(r==null){return i}const s=te(r,e);if(s){let e=s.trim();let t=o;if(e==="unset"){return null}if(e.indexOf("javascript:")===0){e=e.substr(11);t=true}else if(e.indexOf("js:")===0){e=e.substr(3);t=true}if(e.indexOf("{")!==0){e="{"+e+"}"}let n;if(t){n=vn(r,function(){return Function("return ("+e+")")()},{})}else{n=S(e)}for(const l in n){if(n.hasOwnProperty(l)){if(i[l]==null){i[l]=n[l]}}}}return wn(ce(u(r)),e,o,i)}function vn(e,t,n){if(Q.config.allowEval){return t()}else{ae(e,"htmx:evalDisallowedError");return n}}function Sn(e,t){return wn(e,"hx-vars",true,t)}function En(e,t){return wn(e,"hx-vals",false,t)}function Cn(e){return ue(Sn(e),En(e))}function Rn(t,n,r){if(r!==null){try{t.setRequestHeader(n,r)}catch(e){t.setRequestHeader(n,encodeURIComponent(r));t.setRequestHeader(n+"-URI-AutoEncoded","true")}}}function On(t){if(t.responseURL&&typeof URL!=="undefined"){try{const e=new URL(t.responseURL);return e.pathname+e.search}catch(e){ae(ne().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function C(e,t){return t.test(e.getAllResponseHeaders())}function Hn(e,t,n){e=e.toLowerCase();if(n){if(n instanceof Element||typeof n==="string"){return de(e,t,null,null,{targetOverride:y(n),returnPromise:true})}else{return de(e,t,y(n.source),n.event,{handler:n.handler,headers:n.headers,values:n.values,targetOverride:y(n.target),swapOverride:n.swap,select:n.select,returnPromise:true})}}else{return de(e,t,null,null,{returnPromise:true})}}function Tn(e){const t=[];while(e){t.push(e);e=e.parentElement}return t}function qn(e,t,n){let r;let o;if(typeof URL==="function"){o=new URL(t,document.location.href);const i=document.location.origin;r=i===o.origin}else{o=t;r=l(t,document.location.origin)}if(Q.config.selfRequestsOnly){if(!r){return false}}return he(e,"htmx:validateUrl",ue({url:o,sameHost:r},n))}function Ln(e){if(e instanceof FormData)return e;const t=new FormData;for(const n in e){if(e.hasOwnProperty(n)){if(typeof e[n].forEach==="function"){e[n].forEach(function(e){t.append(n,e)})}else if(typeof e[n]==="object"){t.append(n,JSON.stringify(e[n]))}else{t.append(n,e[n])}}}return t}function Nn(r,o,e){return new Proxy(e,{get:function(t,e){if(typeof e==="number")return t[e];if(e==="length")return t.length;if(e==="push"){return function(e){t.push(e);r.append(o,e)}}if(typeof t[e]==="function"){return function(){t[e].apply(t,arguments);r.delete(o);t.forEach(function(e){r.append(o,e)})}}if(t[e]&&t[e].length===1){return t[e][0]}else{return t[e]}},set:function(e,t,n){e[t]=n;r.delete(o);e.forEach(function(e){r.append(o,e)});return true}})}function An(r){return new Proxy(r,{get:function(e,t){if(typeof t==="symbol"){return Reflect.get(e,t)}if(t==="toJSON"){return()=>Object.fromEntries(r)}if(t in e){if(typeof e[t]==="function"){return function(){return r[t].apply(r,arguments)}}else{return e[t]}}const n=r.getAll(t);if(n.length===0){return undefined}else if(n.length===1){return n[0]}else{return Nn(e,t,n)}},set:function(t,n,e){if(typeof n!=="string"){return false}t.delete(n);if(typeof e.forEach==="function"){e.forEach(function(e){t.append(n,e)})}else{t.append(n,e)}return true},deleteProperty:function(e,t){if(typeof t==="string"){e.delete(t)}return true},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function de(t,n,r,o,i,k){let s=null;let l=null;i=i!=null?i:{};if(i.returnPromise&&typeof Promise!=="undefined"){var e=new Promise(function(e,t){s=e;l=t})}if(r==null){r=ne().body}const M=i.handler||Mn;const X=i.select||null;if(!le(r)){oe(s);return e}const u=i.targetOverride||ce(Ce(r));if(u==null||u==ve){ae(r,"htmx:targetError",{target:te(r,"hx-target")});oe(l);return e}let c=ie(r);const f=c.lastButtonClicked;if(f){const L=ee(f,"formaction");if(L!=null){n=L}const N=ee(f,"formmethod");if(N!=null){if(N.toLowerCase()!=="dialog"){t=N}}}const a=re(r,"hx-confirm");if(k===undefined){const K=function(e){return de(t,n,r,o,i,!!e)};const G={target:u,elt:r,path:n,verb:t,triggeringEvent:o,etc:i,issueRequest:K,question:a};if(he(r,"htmx:confirm",G)===false){oe(s);return e}}let h=r;let d=re(r,"hx-sync");let g=null;let F=false;if(d){const A=d.split(":");const I=A[0].trim();if(I==="this"){h=Ee(r,"hx-sync")}else{h=ce(fe(r,I))}d=(A[1]||"drop").trim();c=ie(h);if(d==="drop"&&c.xhr&&c.abortable!==true){oe(s);return e}else if(d==="abort"){if(c.xhr){oe(s);return e}else{F=true}}else if(d==="replace"){he(h,"htmx:abort")}else if(d.indexOf("queue")===0){const Z=d.split(" ");g=(Z[1]||"last").trim()}}if(c.xhr){if(c.abortable){he(h,"htmx:abort")}else{if(g==null){if(o){const P=ie(o);if(P&&P.triggerSpec&&P.triggerSpec.queue){g=P.triggerSpec.queue}}if(g==null){g="last"}}if(c.queuedRequests==null){c.queuedRequests=[]}if(g==="first"&&c.queuedRequests.length===0){c.queuedRequests.push(function(){de(t,n,r,o,i)})}else if(g==="all"){c.queuedRequests.push(function(){de(t,n,r,o,i)})}else if(g==="last"){c.queuedRequests=[];c.queuedRequests.push(function(){de(t,n,r,o,i)})}oe(s);return e}}const p=new XMLHttpRequest;c.xhr=p;c.abortable=F;const m=function(){c.xhr=null;c.abortable=false;if(c.queuedRequests!=null&&c.queuedRequests.length>0){const e=c.queuedRequests.shift();e()}};const U=re(r,"hx-prompt");if(U){var y=prompt(U);if(y===null||!he(r,"htmx:prompt",{prompt:y,target:u})){oe(s);m();return e}}if(a&&!k){if(!confirm(a)){oe(s);m();return e}}let x=hn(r,u,y);if(t!=="get"&&!mn(r)){x["Content-Type"]="application/x-www-form-urlencoded"}if(i.headers){x=ue(x,i.headers)}const B=cn(r,t);let b=B.errors;const j=B.formData;if(i.values){un(j,Ln(i.values))}const V=Ln(Cn(r));const w=un(j,V);let v=dn(w,r);if(Q.config.getCacheBusterParam&&t==="get"){v.set("org.htmx.cache-buster",ee(u,"id")||"true")}if(n==null||n===""){n=ne().location.href}const S=wn(r,"hx-request");const _=ie(r).boosted;let E=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;const C={boosted:_,useUrlParams:E,formData:v,parameters:An(v),unfilteredFormData:w,unfilteredParameters:An(w),headers:x,target:u,verb:t,errors:b,withCredentials:i.credentials||S.credentials||Q.config.withCredentials,timeout:i.timeout||S.timeout||Q.config.timeout,path:n,triggeringEvent:o};if(!he(r,"htmx:configRequest",C)){oe(s);m();return e}n=C.path;t=C.verb;x=C.headers;v=Ln(C.parameters);b=C.errors;E=C.useUrlParams;if(b&&b.length>0){he(r,"htmx:validation:halted",C);oe(s);m();return e}const $=n.split("#");const z=$[0];const R=$[1];let O=n;if(E){O=z;const Y=!v.keys().next().done;if(Y){if(O.indexOf("?")<0){O+="?"}else{O+="&"}O+=an(v);if(R){O+="#"+R}}}if(!qn(r,O,C)){ae(r,"htmx:invalidPath",C);oe(l);return e}p.open(t.toUpperCase(),O,true);p.overrideMimeType("text/html");p.withCredentials=C.withCredentials;p.timeout=C.timeout;if(S.noHeaders){}else{for(const D in x){if(x.hasOwnProperty(D)){const W=x[D];Rn(p,D,W)}}}const H={xhr:p,target:u,requestConfig:C,etc:i,boosted:_,select:X,pathInfo:{requestPath:n,finalRequestPath:O,responsePath:null,anchor:R}};p.onload=function(){try{const t=Tn(r);H.pathInfo.responsePath=On(p);M(r,H);en(T,q);he(r,"htmx:afterRequest",H);he(r,"htmx:afterOnLoad",H);if(!le(r)){let e=null;while(t.length>0&&e==null){const n=t.shift();if(le(n)){e=n}}if(e){he(e,"htmx:afterRequest",H);he(e,"htmx:afterOnLoad",H)}}oe(s);m()}catch(e){ae(r,"htmx:onLoadError",ue({error:e},H));throw e}};p.onerror=function(){en(T,q);ae(r,"htmx:afterRequest",H);ae(r,"htmx:sendError",H);oe(l);m()};p.onabort=function(){en(T,q);ae(r,"htmx:afterRequest",H);ae(r,"htmx:sendAbort",H);oe(l);m()};p.ontimeout=function(){en(T,q);ae(r,"htmx:afterRequest",H);ae(r,"htmx:timeout",H);oe(l);m()};if(!he(r,"htmx:beforeRequest",H)){oe(s);m();return e}var T=Wt(r);var q=Qt(r);se(["loadstart","loadend","progress","abort"],function(t){se([p,p.upload],function(e){e.addEventListener(t,function(e){he(r,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});he(r,"htmx:beforeSend",H);const J=E?null:yn(p,r,v);p.send(J);return e}function In(e,t){const n=t.xhr;let r=null;let o=null;if(C(n,/HX-Push:/i)){r=n.getResponseHeader("HX-Push");o="push"}else if(C(n,/HX-Push-Url:/i)){r=n.getResponseHeader("HX-Push-Url");o="push"}else if(C(n,/HX-Replace-Url:/i)){r=n.getResponseHeader("HX-Replace-Url");o="replace"}if(r){if(r==="false"){return{}}else{return{type:o,path:r}}}const i=t.pathInfo.finalRequestPath;const s=t.pathInfo.responsePath;const l=re(e,"hx-push-url");const u=re(e,"hx-replace-url");const c=ie(e).boosted;let f=null;let a=null;if(l){f="push";a=l}else if(u){f="replace";a=u}else if(c){f="push";a=s||i}if(a){if(a==="false"){return{}}if(a==="true"){a=s||i}if(t.pathInfo.anchor&&a.indexOf("#")===-1){a=a+"#"+t.pathInfo.anchor}return{type:f,path:a}}else{return{}}}function Pn(e,t){var n=new RegExp(e.code);return n.test(t.toString(10))}function Dn(e){for(var t=0;t0){E().setTimeout(e,y.swapDelay)}else{e()}}if(a){ae(o,"htmx:responseError",ue({error:"Response Status Error Code "+s.status+" from "+i.pathInfo.requestPath},i))}}const Xn={};function Fn(){return{init:function(e){return null},getSelectors:function(){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,n){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,n,r){return false},encodeParameters:function(e,t,n){return null}}}function Un(e,t){if(t.init){t.init(n)}Xn[e]=ue(Fn(),t)}function Bn(e){delete Xn[e]}function jn(e,n,r){if(n==undefined){n=[]}if(e==undefined){return n}if(r==undefined){r=[]}const t=te(e,"hx-ext");if(t){se(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){r.push(e.slice(7));return}if(r.indexOf(e)<0){const t=Xn[e];if(t&&n.indexOf(t)<0){n.push(t)}}})}return jn(ce(u(e)),n,r)}var Vn=false;ne().addEventListener("DOMContentLoaded",function(){Vn=true});function _n(e){if(Vn||ne().readyState==="complete"){e()}else{ne().addEventListener("DOMContentLoaded",e)}}function $n(){if(Q.config.includeIndicatorStyles!==false){const e=Q.config.inlineStyleNonce?` nonce="${Q.config.inlineStyleNonce}"`:"";ne().head.insertAdjacentHTML("beforeend"," ."+Q.config.indicatorClass+"{opacity:0} ."+Q.config.requestClass+" ."+Q.config.indicatorClass+"{opacity:1; transition: opacity 200ms ease-in;} ."+Q.config.requestClass+"."+Q.config.indicatorClass+"{opacity:1; transition: opacity 200ms ease-in;} ")}}function zn(){const e=ne().querySelector('meta[name="htmx-config"]');if(e){return S(e.content)}else{return null}}function Jn(){const e=zn();if(e){Q.config=ue(Q.config,e)}}_n(function(){Jn();$n();let e=ne().body;kt(e);const t=ne().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){const t=e.target;const n=ie(t);if(n&&n.xhr){n.xhr.abort()}});const n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){Yt();se(t,function(e){he(e,"htmx:restored",{document:ne(),triggerEvent:he})})}else{if(n){n(e)}}};E().setTimeout(function(){he(e,"htmx:load",{});e=null},0)});return Q}(); \ No newline at end of file diff --git a/public/js/tabler.esm.js b/public/js/tabler.esm.js new file mode 100644 index 0000000..8b13aa5 --- /dev/null +++ b/public/js/tabler.esm.js @@ -0,0 +1,7482 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +var e=new Map;function t(t){var o=e.get(t);o&&o.destroy();}function o(t){var o=e.get(t);o&&o.update();}var r=null;"undefined"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:""===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value;}),l=function(o){t.removeEventListener("autosize:destroy",l),t.removeEventListener("autosize:update",s),t.removeEventListener("input",i),window.removeEventListener("resize",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t);}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",l),t.addEventListener("autosize:update",s),t.addEventListener("input",i),window.addEventListener("resize",s),t.style.overflowX="hidden",t.style.wordWrap="break-word",e.set(t,{destroy:l,update:s}),s();}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&("vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior="auto",t.scrollTop=o,t.style.scrollBehavior=null;})}}(t),t.style.height=""),i="content-box"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),"none"!==n.maxHeight&&i>parseFloat(n.maxHeight)?("hidden"===n.overflowY&&(t.style.overflow="scroll"),i=parseFloat(n.maxHeight)):"hidden"!==n.overflowY&&(t.style.overflow="hidden"),t.style.height=i+"px",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;"hidden"===n.overflow&&(t.style.textAlign="start"===v?"end":"start"),a({restoreTextAlign:v,testForHeightReduction:!0});}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null});}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r; + +var elements = document.querySelectorAll('[data-bs-toggle="autosize"]'); +if (elements.length) { + elements.forEach(function (element) { + n(element); + }); +} + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} + +function IMask(el) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return new IMask.InputMask(el, opts); +} + +class ChangeDetails { + constructor(details) { + Object.assign(this, { + inserted: '', + rawInserted: '', + skip: false, + tailShift: 0 + }, details); + } + aggregate(details) { + this.rawInserted += details.rawInserted; + this.skip = this.skip || details.skip; + this.inserted += details.inserted; + this.tailShift += details.tailShift; + return this; + } + get offset() { + return this.tailShift + this.inserted.length; + } +} +IMask.ChangeDetails = ChangeDetails; + +function isString(str) { + return typeof str === 'string' || str instanceof String; +} +const DIRECTION = { + NONE: 'NONE', + LEFT: 'LEFT', + FORCE_LEFT: 'FORCE_LEFT', + RIGHT: 'RIGHT', + FORCE_RIGHT: 'FORCE_RIGHT' +}; +function forceDirection(direction) { + switch (direction) { + case DIRECTION.LEFT: + return DIRECTION.FORCE_LEFT; + case DIRECTION.RIGHT: + return DIRECTION.FORCE_RIGHT; + default: + return direction; + } +} +function escapeRegExp(str) { + return str.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); +} +function normalizePrepare(prep) { + return Array.isArray(prep) ? prep : [prep, new ChangeDetails()]; +} +function objectIncludes(b, a) { + if (a === b) return true; + var arrA = Array.isArray(a), + arrB = Array.isArray(b), + i; + if (arrA && arrB) { + if (a.length != b.length) return false; + for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false; + return true; + } + if (arrA != arrB) return false; + if (a && b && typeof a === 'object' && typeof b === 'object') { + var dateA = a instanceof Date, + dateB = b instanceof Date; + if (dateA && dateB) return a.getTime() == b.getTime(); + if (dateA != dateB) return false; + var regexpA = a instanceof RegExp, + regexpB = b instanceof RegExp; + if (regexpA && regexpB) return a.toString() == b.toString(); + if (regexpA != regexpB) return false; + var keys = Object.keys(a); + for (i = 0; i < keys.length; i++) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false; + return true; + } else if (a && b && typeof a === 'function' && typeof b === 'function') { + return a.toString() === b.toString(); + } + return false; +} + +class ActionDetails { + constructor(value, cursorPos, oldValue, oldSelection) { + this.value = value; + this.cursorPos = cursorPos; + this.oldValue = oldValue; + this.oldSelection = oldSelection; + while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) { + --this.oldSelection.start; + } + } + get startChangePos() { + return Math.min(this.cursorPos, this.oldSelection.start); + } + get insertedCount() { + return this.cursorPos - this.startChangePos; + } + get inserted() { + return this.value.substr(this.startChangePos, this.insertedCount); + } + get removedCount() { + return Math.max(this.oldSelection.end - this.startChangePos || + this.oldValue.length - this.value.length, 0); + } + get removed() { + return this.oldValue.substr(this.startChangePos, this.removedCount); + } + get head() { + return this.value.substring(0, this.startChangePos); + } + get tail() { + return this.value.substring(this.startChangePos + this.insertedCount); + } + get removeDirection() { + if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; + return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) && + this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT; + } +} + +class ContinuousTailDetails { + constructor() { + let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + let stop = arguments.length > 2 ? arguments[2] : undefined; + this.value = value; + this.from = from; + this.stop = stop; + } + toString() { + return this.value; + } + extend(tail) { + this.value += String(tail); + } + appendTo(masked) { + return masked.append(this.toString(), { + tail: true + }).aggregate(masked._appendPlaceholder()); + } + get state() { + return { + value: this.value, + from: this.from, + stop: this.stop + }; + } + set state(state) { + Object.assign(this, state); + } + unshift(beforePos) { + if (!this.value.length || beforePos != null && this.from >= beforePos) return ''; + const shiftChar = this.value[0]; + this.value = this.value.slice(1); + return shiftChar; + } + shift() { + if (!this.value.length) return ''; + const shiftChar = this.value[this.value.length - 1]; + this.value = this.value.slice(0, -1); + return shiftChar; + } +} + +class Masked { + constructor(opts) { + this._value = ''; + this._update(Object.assign({}, Masked.DEFAULTS, opts)); + this.isInitialized = true; + } + updateOptions(opts) { + if (!Object.keys(opts).length) return; + this.withValueRefresh(this._update.bind(this, opts)); + } + _update(opts) { + Object.assign(this, opts); + } + get state() { + return { + _value: this.value + }; + } + set state(state) { + this._value = state._value; + } + reset() { + this._value = ''; + } + get value() { + return this._value; + } + set value(value) { + this.resolve(value); + } + resolve(value) { + this.reset(); + this.append(value, { + input: true + }, ''); + this.doCommit(); + return this.value; + } + get unmaskedValue() { + return this.value; + } + set unmaskedValue(value) { + this.reset(); + this.append(value, {}, ''); + this.doCommit(); + } + get typedValue() { + return this.doParse(this.value); + } + set typedValue(value) { + this.value = this.doFormat(value); + } + get rawInputValue() { + return this.extractInput(0, this.value.length, { + raw: true + }); + } + set rawInputValue(value) { + this.reset(); + this.append(value, { + raw: true + }, ''); + this.doCommit(); + } + get displayValue() { + return this.value; + } + get isComplete() { + return true; + } + get isFilled() { + return this.isComplete; + } + nearestInputPos(cursorPos, direction) { + return cursorPos; + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return Math.min(this.value.length, toPos - fromPos); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return this.value.slice(fromPos, toPos); + } + extractTail() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos); + } + appendTail(tail) { + if (isString(tail)) tail = new ContinuousTailDetails(String(tail)); + return tail.appendTo(this); + } + _appendCharRaw(ch) { + if (!ch) return new ChangeDetails(); + this._value += ch; + return new ChangeDetails({ + inserted: ch, + rawInserted: ch + }); + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let checkTail = arguments.length > 2 ? arguments[2] : undefined; + const consistentState = this.state; + let details; + [ch, details] = normalizePrepare(this.doPrepare(ch, flags)); + details = details.aggregate(this._appendCharRaw(ch, flags)); + if (details.inserted) { + let consistentTail; + let appended = this.doValidate(flags) !== false; + if (appended && checkTail != null) { + const beforeTailState = this.state; + if (this.overwrite === true) { + consistentTail = checkTail.state; + checkTail.unshift(this.value.length - details.tailShift); + } + let tailDetails = this.appendTail(checkTail); + appended = tailDetails.rawInserted === checkTail.toString(); + if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') { + this.state = beforeTailState; + consistentTail = checkTail.state; + checkTail.shift(); + tailDetails = this.appendTail(checkTail); + appended = tailDetails.rawInserted === checkTail.toString(); + } + if (appended && tailDetails.inserted) this.state = beforeTailState; + } + if (!appended) { + details = new ChangeDetails(); + this.state = consistentState; + if (checkTail && consistentTail) checkTail.state = consistentTail; + } + } + return details; + } + _appendPlaceholder() { + return new ChangeDetails(); + } + _appendEager() { + return new ChangeDetails(); + } + append(str, flags, tail) { + if (!isString(str)) throw new Error('value should be string'); + const details = new ChangeDetails(); + const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail; + if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state; + for (let ci = 0; ci < str.length; ++ci) { + const d = this._appendChar(str[ci], flags, checkTail); + if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break; + details.aggregate(d); + } + if (checkTail != null) { + details.tailShift += this.appendTail(checkTail).tailShift; + } + if ((this.eager === true || this.eager === 'append') && flags !== null && flags !== void 0 && flags.input && str) { + details.aggregate(this._appendEager()); + } + return details; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + this._value = this.value.slice(0, fromPos) + this.value.slice(toPos); + return new ChangeDetails(); + } + withValueRefresh(fn) { + if (this._refreshing || !this.isInitialized) return fn(); + this._refreshing = true; + const rawInput = this.rawInputValue; + const value = this.value; + const ret = fn(); + this.rawInputValue = rawInput; + if (this.value && this.value !== value && value.indexOf(this.value) === 0) { + this.append(value.slice(this.value.length), {}, ''); + } + delete this._refreshing; + return ret; + } + runIsolated(fn) { + if (this._isolated || !this.isInitialized) return fn(this); + this._isolated = true; + const state = this.state; + const ret = fn(this); + this.state = state; + delete this._isolated; + return ret; + } + doSkipInvalid(ch) { + return this.skipInvalid; + } + doPrepare(str) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.prepare ? this.prepare(str, this, flags) : str; + } + doValidate(flags) { + return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags)); + } + doCommit() { + if (this.commit) this.commit(this.value, this); + } + doFormat(value) { + return this.format ? this.format(value, this) : value; + } + doParse(str) { + return this.parse ? this.parse(str, this) : str; + } + splice(start, deleteCount, inserted, removeDirection) { + let flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : { + input: true + }; + const tailPos = start + deleteCount; + const tail = this.extractTail(tailPos); + const eagerRemove = this.eager === true || this.eager === 'remove'; + let oldRawValue; + if (eagerRemove) { + removeDirection = forceDirection(removeDirection); + oldRawValue = this.extractInput(0, tailPos, { + raw: true + }); + } + let startChangePos = start; + const details = new ChangeDetails(); + if (removeDirection !== DIRECTION.NONE) { + startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection); + details.tailShift = startChangePos - start; + } + details.aggregate(this.remove(startChangePos)); + if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) { + if (removeDirection === DIRECTION.FORCE_LEFT) { + let valLength; + while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) { + details.aggregate(new ChangeDetails({ + tailShift: -1 + })).aggregate(this.remove(valLength - 1)); + } + } else if (removeDirection === DIRECTION.FORCE_RIGHT) { + tail.unshift(); + } + } + return details.aggregate(this.append(inserted, flags, tail)); + } + maskEquals(mask) { + return this.mask === mask; + } + typedValueEquals(value) { + const tval = this.typedValue; + return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue); + } +} +Masked.DEFAULTS = { + format: String, + parse: v => v, + skipInvalid: true +}; +Masked.EMPTY_VALUES = [undefined, null, '']; +IMask.Masked = Masked; + +function maskedClass(mask) { + if (mask == null) { + throw new Error('mask property should be defined'); + } + if (mask instanceof RegExp) return IMask.MaskedRegExp; + if (isString(mask)) return IMask.MaskedPattern; + if (mask instanceof Date || mask === Date) return IMask.MaskedDate; + if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; + if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; + if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; + if (mask instanceof IMask.Masked) return mask.constructor; + if (mask instanceof Function) return IMask.MaskedFunction; + console.warn('Mask not found for mask', mask); + return IMask.Masked; +} +function createMask(opts) { + if (IMask.Masked && opts instanceof IMask.Masked) return opts; + opts = Object.assign({}, opts); + const mask = opts.mask; + if (IMask.Masked && mask instanceof IMask.Masked) return mask; + const MaskedClass = maskedClass(mask); + if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.'); + return new MaskedClass(opts); +} +IMask.createMask = createMask; + +const _excluded$4 = ["parent", "isOptional", "placeholderChar", "displayChar", "lazy", "eager"]; +const DEFAULT_INPUT_DEFINITIONS = { + '0': /\d/, + 'a': /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + '*': /./ +}; +class PatternInputDefinition { + constructor(opts) { + const { + parent, + isOptional, + placeholderChar, + displayChar, + lazy, + eager + } = opts, + maskOpts = _objectWithoutPropertiesLoose(opts, _excluded$4); + this.masked = createMask(maskOpts); + Object.assign(this, { + parent, + isOptional, + placeholderChar, + displayChar, + lazy, + eager + }); + } + reset() { + this.isFilled = false; + this.masked.reset(); + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + if (fromPos === 0 && toPos >= 1) { + this.isFilled = false; + return this.masked.remove(fromPos, toPos); + } + return new ChangeDetails(); + } + get value() { + return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : ''); + } + get unmaskedValue() { + return this.masked.unmaskedValue; + } + get displayValue() { + return this.masked.value && this.displayChar || this.value; + } + get isComplete() { + return Boolean(this.masked.value) || this.isOptional; + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (this.isFilled) return new ChangeDetails(); + const state = this.masked.state; + const details = this.masked._appendChar(ch, flags); + if (details.inserted && this.doValidate(flags) === false) { + details.inserted = details.rawInserted = ''; + this.masked.state = state; + } + if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) { + details.inserted = this.placeholderChar; + } + details.skip = !details.inserted && !this.isOptional; + this.isFilled = Boolean(details.inserted); + return details; + } + append() { + return this.masked.append(...arguments); + } + _appendPlaceholder() { + const details = new ChangeDetails(); + if (this.isFilled || this.isOptional) return details; + this.isFilled = true; + details.inserted = this.placeholderChar; + return details; + } + _appendEager() { + return new ChangeDetails(); + } + extractTail() { + return this.masked.extractTail(...arguments); + } + appendTail() { + return this.masked.appendTail(...arguments); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 ? arguments[2] : undefined; + return this.masked.extractInput(fromPos, toPos, flags); + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + const minPos = 0; + const maxPos = this.value.length; + const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos); + switch (direction) { + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + return this.isComplete ? boundPos : minPos; + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + return this.isComplete ? boundPos : maxPos; + case DIRECTION.NONE: + default: + return boundPos; + } + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return this.value.slice(fromPos, toPos).length; + } + doValidate() { + return this.masked.doValidate(...arguments) && (!this.parent || this.parent.doValidate(...arguments)); + } + doCommit() { + this.masked.doCommit(); + } + get state() { + return { + masked: this.masked.state, + isFilled: this.isFilled + }; + } + set state(state) { + this.masked.state = state.masked; + this.isFilled = state.isFilled; + } +} + +class PatternFixedDefinition { + constructor(opts) { + Object.assign(this, opts); + this._value = ''; + this.isFixed = true; + } + get value() { + return this._value; + } + get unmaskedValue() { + return this.isUnmasking ? this.value : ''; + } + get displayValue() { + return this.value; + } + reset() { + this._isRawInput = false; + this._value = ''; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + this._value = this._value.slice(0, fromPos) + this._value.slice(toPos); + if (!this._value) this._isRawInput = false; + return new ChangeDetails(); + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + const minPos = 0; + const maxPos = this._value.length; + switch (direction) { + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + return minPos; + case DIRECTION.NONE: + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + default: + return maxPos; + } + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + return this._isRawInput ? toPos - fromPos : 0; + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || ''; + } + get isComplete() { + return true; + } + get isFilled() { + return Boolean(this._value); + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const details = new ChangeDetails(); + if (this.isFilled) return details; + const appendEager = this.eager === true || this.eager === 'append'; + const appended = this.char === ch; + const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail; + if (isResolved) details.rawInserted = this.char; + this._value = details.inserted = this.char; + this._isRawInput = isResolved && (flags.raw || flags.input); + return details; + } + _appendEager() { + return this._appendChar(this.char, { + tail: true + }); + } + _appendPlaceholder() { + const details = new ChangeDetails(); + if (this.isFilled) return details; + this._value = details.inserted = this.char; + return details; + } + extractTail() { + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return new ContinuousTailDetails(''); + } + appendTail(tail) { + if (isString(tail)) tail = new ContinuousTailDetails(String(tail)); + return tail.appendTo(this); + } + append(str, flags, tail) { + const details = this._appendChar(str[0], flags); + if (tail != null) { + details.tailShift += this.appendTail(tail).tailShift; + } + return details; + } + doCommit() {} + get state() { + return { + _value: this._value, + _isRawInput: this._isRawInput + }; + } + set state(state) { + Object.assign(this, state); + } +} + +const _excluded$3 = ["chunks"]; +class ChunksTailDetails { + constructor() { + let chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + this.chunks = chunks; + this.from = from; + } + toString() { + return this.chunks.map(String).join(''); + } + extend(tailChunk) { + if (!String(tailChunk)) return; + if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk)); + const lastChunk = this.chunks[this.chunks.length - 1]; + const extendLast = lastChunk && ( + lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && + tailChunk.from === lastChunk.from + lastChunk.toString().length; + if (tailChunk instanceof ContinuousTailDetails) { + if (extendLast) { + lastChunk.extend(tailChunk.toString()); + } else { + this.chunks.push(tailChunk); + } + } else if (tailChunk instanceof ChunksTailDetails) { + if (tailChunk.stop == null) { + let firstTailChunk; + while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) { + firstTailChunk = tailChunk.chunks.shift(); + firstTailChunk.from += tailChunk.from; + this.extend(firstTailChunk); + } + } + if (tailChunk.toString()) { + tailChunk.stop = tailChunk.blockIndex; + this.chunks.push(tailChunk); + } + } + } + appendTo(masked) { + if (!(masked instanceof IMask.MaskedPattern)) { + const tail = new ContinuousTailDetails(this.toString()); + return tail.appendTo(masked); + } + const details = new ChangeDetails(); + for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) { + const chunk = this.chunks[ci]; + const lastBlockIter = masked._mapPosToBlock(masked.value.length); + const stop = chunk.stop; + let chunkBlock; + if (stop != null && ( + !lastBlockIter || lastBlockIter.index <= stop)) { + if (chunk instanceof ChunksTailDetails || + masked._stops.indexOf(stop) >= 0) { + const phDetails = masked._appendPlaceholder(stop); + details.aggregate(phDetails); + } + chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop]; + } + if (chunkBlock) { + const tailDetails = chunkBlock.appendTail(chunk); + tailDetails.skip = false; + details.aggregate(tailDetails); + masked._value += tailDetails.inserted; + const remainChars = chunk.toString().slice(tailDetails.rawInserted.length); + if (remainChars) details.aggregate(masked.append(remainChars, { + tail: true + })); + } else { + details.aggregate(masked.append(chunk.toString(), { + tail: true + })); + } + } + return details; + } + get state() { + return { + chunks: this.chunks.map(c => c.state), + from: this.from, + stop: this.stop, + blockIndex: this.blockIndex + }; + } + set state(state) { + const { + chunks + } = state, + props = _objectWithoutPropertiesLoose(state, _excluded$3); + Object.assign(this, props); + this.chunks = chunks.map(cstate => { + const chunk = "chunks" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); + chunk.state = cstate; + return chunk; + }); + } + unshift(beforePos) { + if (!this.chunks.length || beforePos != null && this.from >= beforePos) return ''; + const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos; + let ci = 0; + while (ci < this.chunks.length) { + const chunk = this.chunks[ci]; + const shiftChar = chunk.unshift(chunkShiftPos); + if (chunk.toString()) { + if (!shiftChar) break; + ++ci; + } else { + this.chunks.splice(ci, 1); + } + if (shiftChar) return shiftChar; + } + return ''; + } + shift() { + if (!this.chunks.length) return ''; + let ci = this.chunks.length - 1; + while (0 <= ci) { + const chunk = this.chunks[ci]; + const shiftChar = chunk.shift(); + if (chunk.toString()) { + if (!shiftChar) break; + --ci; + } else { + this.chunks.splice(ci, 1); + } + if (shiftChar) return shiftChar; + } + return ''; + } +} + +class PatternCursor { + constructor(masked, pos) { + this.masked = masked; + this._log = []; + const { + offset, + index + } = masked._mapPosToBlock(pos) || (pos < 0 ? + { + index: 0, + offset: 0 + } : + { + index: this.masked._blocks.length, + offset: 0 + }); + this.offset = offset; + this.index = index; + this.ok = false; + } + get block() { + return this.masked._blocks[this.index]; + } + get pos() { + return this.masked._blockStartPos(this.index) + this.offset; + } + get state() { + return { + index: this.index, + offset: this.offset, + ok: this.ok + }; + } + set state(s) { + Object.assign(this, s); + } + pushState() { + this._log.push(this.state); + } + popState() { + const s = this._log.pop(); + this.state = s; + return s; + } + bindBlock() { + if (this.block) return; + if (this.index < 0) { + this.index = 0; + this.offset = 0; + } + if (this.index >= this.masked._blocks.length) { + this.index = this.masked._blocks.length - 1; + this.offset = this.block.value.length; + } + } + _pushLeft(fn) { + this.pushState(); + for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) { + var _this$block; + if (fn()) return this.ok = true; + } + return this.ok = false; + } + _pushRight(fn) { + this.pushState(); + for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) { + if (fn()) return this.ok = true; + } + return this.ok = false; + } + pushLeftBeforeFilled() { + return this._pushLeft(() => { + if (this.block.isFixed || !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT); + if (this.offset !== 0) return true; + }); + } + pushLeftBeforeInput() { + return this._pushLeft(() => { + if (this.block.isFixed) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT); + return true; + }); + } + pushLeftBeforeRequired() { + return this._pushLeft(() => { + if (this.block.isFixed || this.block.isOptional && !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT); + return true; + }); + } + pushRightBeforeFilled() { + return this._pushRight(() => { + if (this.block.isFixed || !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT); + if (this.offset !== this.block.value.length) return true; + }); + } + pushRightBeforeInput() { + return this._pushRight(() => { + if (this.block.isFixed) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE); + return true; + }); + } + pushRightBeforeRequired() { + return this._pushRight(() => { + if (this.block.isFixed || this.block.isOptional && !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE); + return true; + }); + } +} + +class MaskedRegExp extends Masked { + _update(opts) { + if (opts.mask) opts.validate = value => value.search(opts.mask) >= 0; + super._update(opts); + } +} +IMask.MaskedRegExp = MaskedRegExp; + +const _excluded$2 = ["_blocks"]; +class MaskedPattern extends Masked { + constructor() { + let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions); + super(Object.assign({}, MaskedPattern.DEFAULTS, opts)); + } + _update() { + let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.definitions = Object.assign({}, this.definitions, opts.definitions); + super._update(opts); + this._rebuildMask(); + } + _rebuildMask() { + const defs = this.definitions; + this._blocks = []; + this._stops = []; + this._maskedBlocks = {}; + let pattern = this.mask; + if (!pattern || !defs) return; + let unmaskingBlock = false; + let optionalBlock = false; + for (let i = 0; i < pattern.length; ++i) { + var _defs$char, _defs$char2; + if (this.blocks) { + const p = pattern.slice(i); + const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0); + bNames.sort((a, b) => b.length - a.length); + const bName = bNames[0]; + if (bName) { + const maskedBlock = createMask(Object.assign({ + parent: this, + lazy: this.lazy, + eager: this.eager, + placeholderChar: this.placeholderChar, + displayChar: this.displayChar, + overwrite: this.overwrite + }, this.blocks[bName])); + if (maskedBlock) { + this._blocks.push(maskedBlock); + if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = []; + this._maskedBlocks[bName].push(this._blocks.length - 1); + } + i += bName.length - 1; + continue; + } + } + let char = pattern[i]; + let isInput = (char in defs); + if (char === MaskedPattern.STOP_CHAR) { + this._stops.push(this._blocks.length); + continue; + } + if (char === '{' || char === '}') { + unmaskingBlock = !unmaskingBlock; + continue; + } + if (char === '[' || char === ']') { + optionalBlock = !optionalBlock; + continue; + } + if (char === MaskedPattern.ESCAPE_CHAR) { + ++i; + char = pattern[i]; + if (!char) break; + isInput = false; + } + const maskOpts = (_defs$char = defs[char]) !== null && _defs$char !== void 0 && _defs$char.mask && !(((_defs$char2 = defs[char]) === null || _defs$char2 === void 0 ? void 0 : _defs$char2.mask.prototype) instanceof IMask.Masked) ? defs[char] : { + mask: defs[char] + }; + const def = isInput ? new PatternInputDefinition(Object.assign({ + parent: this, + isOptional: optionalBlock, + lazy: this.lazy, + eager: this.eager, + placeholderChar: this.placeholderChar, + displayChar: this.displayChar + }, maskOpts)) : new PatternFixedDefinition({ + char, + eager: this.eager, + isUnmasking: unmaskingBlock + }); + this._blocks.push(def); + } + } + get state() { + return Object.assign({}, super.state, { + _blocks: this._blocks.map(b => b.state) + }); + } + set state(state) { + const { + _blocks + } = state, + maskedState = _objectWithoutPropertiesLoose(state, _excluded$2); + this._blocks.forEach((b, bi) => b.state = _blocks[bi]); + super.state = maskedState; + } + reset() { + super.reset(); + this._blocks.forEach(b => b.reset()); + } + get isComplete() { + return this._blocks.every(b => b.isComplete); + } + get isFilled() { + return this._blocks.every(b => b.isFilled); + } + get isFixed() { + return this._blocks.every(b => b.isFixed); + } + get isOptional() { + return this._blocks.every(b => b.isOptional); + } + doCommit() { + this._blocks.forEach(b => b.doCommit()); + super.doCommit(); + } + get unmaskedValue() { + return this._blocks.reduce((str, b) => str += b.unmaskedValue, ''); + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get value() { + return this._blocks.reduce((str, b) => str += b.value, ''); + } + set value(value) { + super.value = value; + } + get displayValue() { + return this._blocks.reduce((str, b) => str += b.displayValue, ''); + } + appendTail(tail) { + return super.appendTail(tail).aggregate(this._appendPlaceholder()); + } + _appendEager() { + var _this$_mapPosToBlock; + const details = new ChangeDetails(); + let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index; + if (startBlockIndex == null) return details; + if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex; + for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) { + const d = this._blocks[bi]._appendEager(); + if (!d.inserted) break; + details.aggregate(d); + } + return details; + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const blockIter = this._mapPosToBlock(this.value.length); + const details = new ChangeDetails(); + if (!blockIter) return details; + for (let bi = blockIter.index;; ++bi) { + var _flags$_beforeTailSta, _flags$_beforeTailSta2; + const block = this._blocks[bi]; + if (!block) break; + const blockDetails = block._appendChar(ch, Object.assign({}, flags, { + _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi] + })); + const skip = blockDetails.skip; + details.aggregate(blockDetails); + if (skip || blockDetails.rawInserted) break; + } + return details; + } + extractTail() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + const chunkTail = new ChunksTailDetails(); + if (fromPos === toPos) return chunkTail; + this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => { + const blockChunk = b.extractTail(bFromPos, bToPos); + blockChunk.stop = this._findStopBefore(bi); + blockChunk.from = this._blockStartPos(bi); + if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi; + chunkTail.extend(blockChunk); + }); + return chunkTail; + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + if (fromPos === toPos) return ''; + let input = ''; + this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => { + input += b.extractInput(fromPos, toPos, flags); + }); + return input; + } + _findStopBefore(blockIndex) { + let stopBefore; + for (let si = 0; si < this._stops.length; ++si) { + const stop = this._stops[si]; + if (stop <= blockIndex) stopBefore = stop;else break; + } + return stopBefore; + } + _appendPlaceholder(toBlockIndex) { + const details = new ChangeDetails(); + if (this.lazy && toBlockIndex == null) return details; + const startBlockIter = this._mapPosToBlock(this.value.length); + if (!startBlockIter) return details; + const startBlockIndex = startBlockIter.index; + const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length; + this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => { + if (!b.lazy || toBlockIndex != null) { + const args = b._blocks != null ? [b._blocks.length] : []; + const bDetails = b._appendPlaceholder(...args); + this._value += bDetails.inserted; + details.aggregate(bDetails); + } + }); + return details; + } + _mapPosToBlock(pos) { + let accVal = ''; + for (let bi = 0; bi < this._blocks.length; ++bi) { + const block = this._blocks[bi]; + const blockStartPos = accVal.length; + accVal += block.value; + if (pos <= accVal.length) { + return { + index: bi, + offset: pos - blockStartPos + }; + } + } + } + _blockStartPos(blockIndex) { + return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.value.length, 0); + } + _forEachBlocksInRange(fromPos) { + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let fn = arguments.length > 2 ? arguments[2] : undefined; + const fromBlockIter = this._mapPosToBlock(fromPos); + if (fromBlockIter) { + const toBlockIter = this._mapPosToBlock(toPos); + const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index; + const fromBlockStartPos = fromBlockIter.offset; + const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length; + fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos); + if (toBlockIter && !isSameBlock) { + for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) { + fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length); + } + fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset); + } + } + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + const removeDetails = super.remove(fromPos, toPos); + this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => { + removeDetails.aggregate(b.remove(bFromPos, bToPos)); + }); + return removeDetails; + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + if (!this._blocks.length) return 0; + const cursor = new PatternCursor(this, cursorPos); + if (direction === DIRECTION.NONE) { + if (cursor.pushRightBeforeInput()) return cursor.pos; + cursor.popState(); + if (cursor.pushLeftBeforeInput()) return cursor.pos; + return this.value.length; + } + if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) { + if (direction === DIRECTION.LEFT) { + cursor.pushRightBeforeFilled(); + if (cursor.ok && cursor.pos === cursorPos) return cursorPos; + cursor.popState(); + } + cursor.pushLeftBeforeInput(); + cursor.pushLeftBeforeRequired(); + cursor.pushLeftBeforeFilled(); + if (direction === DIRECTION.LEFT) { + cursor.pushRightBeforeInput(); + cursor.pushRightBeforeRequired(); + if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos; + cursor.popState(); + if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos; + cursor.popState(); + } + if (cursor.ok) return cursor.pos; + if (direction === DIRECTION.FORCE_LEFT) return 0; + cursor.popState(); + if (cursor.ok) return cursor.pos; + cursor.popState(); + if (cursor.ok) return cursor.pos; + return 0; + } + if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) { + cursor.pushRightBeforeInput(); + cursor.pushRightBeforeRequired(); + if (cursor.pushRightBeforeFilled()) return cursor.pos; + if (direction === DIRECTION.FORCE_RIGHT) return this.value.length; + cursor.popState(); + if (cursor.ok) return cursor.pos; + cursor.popState(); + if (cursor.ok) return cursor.pos; + return this.nearestInputPos(cursorPos, DIRECTION.LEFT); + } + return cursorPos; + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let total = 0; + this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => { + total += b.totalInputPositions(bFromPos, bToPos); + }); + return total; + } + maskedBlock(name) { + return this.maskedBlocks(name)[0]; + } + maskedBlocks(name) { + const indices = this._maskedBlocks[name]; + if (!indices) return []; + return indices.map(gi => this._blocks[gi]); + } +} +MaskedPattern.DEFAULTS = { + lazy: true, + placeholderChar: '_' +}; +MaskedPattern.STOP_CHAR = '`'; +MaskedPattern.ESCAPE_CHAR = '\\'; +MaskedPattern.InputDefinition = PatternInputDefinition; +MaskedPattern.FixedDefinition = PatternFixedDefinition; +IMask.MaskedPattern = MaskedPattern; + +class MaskedRange extends MaskedPattern { + get _matchFrom() { + return this.maxLength - String(this.from).length; + } + _update(opts) { + opts = Object.assign({ + to: this.to || 0, + from: this.from || 0, + maxLength: this.maxLength || 0 + }, opts); + let maxLength = String(opts.to).length; + if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength); + opts.maxLength = maxLength; + const fromStr = String(opts.from).padStart(maxLength, '0'); + const toStr = String(opts.to).padStart(maxLength, '0'); + let sameCharsCount = 0; + while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount; + opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\0') + '0'.repeat(maxLength - sameCharsCount); + super._update(opts); + } + get isComplete() { + return super.isComplete && Boolean(this.value); + } + boundaries(str) { + let minstr = ''; + let maxstr = ''; + const [, placeholder, num] = str.match(/^(\D*)(\d*)(\D*)/) || []; + if (num) { + minstr = '0'.repeat(placeholder.length) + num; + maxstr = '9'.repeat(placeholder.length) + num; + } + minstr = minstr.padEnd(this.maxLength, '0'); + maxstr = maxstr.padEnd(this.maxLength, '9'); + return [minstr, maxstr]; + } + doPrepare(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let details; + [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\D/g, ''), flags)); + if (!this.autofix || !ch) return ch; + const fromStr = String(this.from).padStart(this.maxLength, '0'); + const toStr = String(this.to).padStart(this.maxLength, '0'); + let nextVal = this.value + ch; + if (nextVal.length > this.maxLength) return ''; + const [minstr, maxstr] = this.boundaries(nextVal); + if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1]; + if (Number(minstr) > this.to) { + if (this.autofix === 'pad' && nextVal.length < this.maxLength) { + return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))]; + } + return toStr[nextVal.length - 1]; + } + return ch; + } + doValidate() { + const str = this.value; + const firstNonZero = str.search(/[^0]/); + if (firstNonZero === -1 && str.length <= this._matchFrom) return true; + const [minstr, maxstr] = this.boundaries(str); + return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(...arguments); + } +} +IMask.MaskedRange = MaskedRange; + +class MaskedDate extends MaskedPattern { + constructor(opts) { + super(Object.assign({}, MaskedDate.DEFAULTS, opts)); + } + _update(opts) { + if (opts.mask === Date) delete opts.mask; + if (opts.pattern) opts.mask = opts.pattern; + const blocks = opts.blocks; + opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); + if (opts.min) opts.blocks.Y.from = opts.min.getFullYear(); + if (opts.max) opts.blocks.Y.to = opts.max.getFullYear(); + if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) { + opts.blocks.m.from = opts.min.getMonth() + 1; + opts.blocks.m.to = opts.max.getMonth() + 1; + if (opts.blocks.m.from === opts.blocks.m.to) { + opts.blocks.d.from = opts.min.getDate(); + opts.blocks.d.to = opts.max.getDate(); + } + } + Object.assign(opts.blocks, this.blocks, blocks); + Object.keys(opts.blocks).forEach(bk => { + const b = opts.blocks[bk]; + if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix; + }); + super._update(opts); + } + doValidate() { + const date = this.date; + return super.doValidate(...arguments) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max)); + } + isDateExist(str) { + return this.format(this.parse(str, this), this).indexOf(str) >= 0; + } + get date() { + return this.typedValue; + } + set date(date) { + this.typedValue = date; + } + get typedValue() { + return this.isComplete ? super.typedValue : null; + } + set typedValue(value) { + super.typedValue = value; + } + maskEquals(mask) { + return mask === Date || super.maskEquals(mask); + } +} +MaskedDate.DEFAULTS = { + pattern: 'd{.}`m{.}`Y', + format: date => { + if (!date) return ''; + const day = String(date.getDate()).padStart(2, '0'); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const year = date.getFullYear(); + return [day, month, year].join('.'); + }, + parse: str => { + const [day, month, year] = str.split('.'); + return new Date(year, month - 1, day); + } +}; +MaskedDate.GET_DEFAULT_BLOCKS = () => ({ + d: { + mask: MaskedRange, + from: 1, + to: 31, + maxLength: 2 + }, + m: { + mask: MaskedRange, + from: 1, + to: 12, + maxLength: 2 + }, + Y: { + mask: MaskedRange, + from: 1900, + to: 9999 + } +}); +IMask.MaskedDate = MaskedDate; + +class MaskElement { + get selectionStart() { + let start; + try { + start = this._unsafeSelectionStart; + } catch (e) {} + return start != null ? start : this.value.length; + } + get selectionEnd() { + let end; + try { + end = this._unsafeSelectionEnd; + } catch (e) {} + return end != null ? end : this.value.length; + } + select(start, end) { + if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return; + try { + this._unsafeSelect(start, end); + } catch (e) {} + } + _unsafeSelect(start, end) {} + get isActive() { + return false; + } + bindEvents(handlers) {} + unbindEvents() {} +} +IMask.MaskElement = MaskElement; + +class HTMLMaskElement extends MaskElement { + constructor(input) { + super(); + this.input = input; + this._handlers = {}; + } + get rootElement() { + var _this$input$getRootNo, _this$input$getRootNo2, _this$input; + return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document; + } + get isActive() { + return this.input === this.rootElement.activeElement; + } + get _unsafeSelectionStart() { + return this.input.selectionStart; + } + get _unsafeSelectionEnd() { + return this.input.selectionEnd; + } + _unsafeSelect(start, end) { + this.input.setSelectionRange(start, end); + } + get value() { + return this.input.value; + } + set value(value) { + this.input.value = value; + } + bindEvents(handlers) { + Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event])); + } + unbindEvents() { + Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event)); + } + _toggleEventHandler(event, handler) { + if (this._handlers[event]) { + this.input.removeEventListener(event, this._handlers[event]); + delete this._handlers[event]; + } + if (handler) { + this.input.addEventListener(event, handler); + this._handlers[event] = handler; + } + } +} +HTMLMaskElement.EVENTS_MAP = { + selectionChange: 'keydown', + input: 'input', + drop: 'drop', + click: 'click', + focus: 'focus', + commit: 'blur' +}; +IMask.HTMLMaskElement = HTMLMaskElement; + +class HTMLContenteditableMaskElement extends HTMLMaskElement { + get _unsafeSelectionStart() { + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + const anchorOffset = selection && selection.anchorOffset; + const focusOffset = selection && selection.focusOffset; + if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) { + return anchorOffset; + } + return focusOffset; + } + get _unsafeSelectionEnd() { + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + const anchorOffset = selection && selection.anchorOffset; + const focusOffset = selection && selection.focusOffset; + if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) { + return anchorOffset; + } + return focusOffset; + } + _unsafeSelect(start, end) { + if (!this.rootElement.createRange) return; + const range = this.rootElement.createRange(); + range.setStart(this.input.firstChild || this.input, start); + range.setEnd(this.input.lastChild || this.input, end); + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + if (selection) { + selection.removeAllRanges(); + selection.addRange(range); + } + } + get value() { + return this.input.textContent; + } + set value(value) { + this.input.textContent = value; + } +} +IMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement; + +const _excluded$1 = ["mask"]; +class InputMask { + constructor(el, opts) { + this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el); + this.masked = createMask(opts); + this._listeners = {}; + this._value = ''; + this._unmaskedValue = ''; + this._saveSelection = this._saveSelection.bind(this); + this._onInput = this._onInput.bind(this); + this._onChange = this._onChange.bind(this); + this._onDrop = this._onDrop.bind(this); + this._onFocus = this._onFocus.bind(this); + this._onClick = this._onClick.bind(this); + this.alignCursor = this.alignCursor.bind(this); + this.alignCursorFriendly = this.alignCursorFriendly.bind(this); + this._bindEvents(); + this.updateValue(); + this._onChange(); + } + get mask() { + return this.masked.mask; + } + maskEquals(mask) { + var _this$masked; + return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask)); + } + set mask(mask) { + if (this.maskEquals(mask)) return; + if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) { + this.masked.updateOptions({ + mask + }); + return; + } + const masked = createMask({ + mask + }); + masked.unmaskedValue = this.masked.unmaskedValue; + this.masked = masked; + } + get value() { + return this._value; + } + set value(str) { + if (this.value === str) return; + this.masked.value = str; + this.updateControl(); + this.alignCursor(); + } + get unmaskedValue() { + return this._unmaskedValue; + } + set unmaskedValue(str) { + if (this.unmaskedValue === str) return; + this.masked.unmaskedValue = str; + this.updateControl(); + this.alignCursor(); + } + get typedValue() { + return this.masked.typedValue; + } + set typedValue(val) { + if (this.masked.typedValueEquals(val)) return; + this.masked.typedValue = val; + this.updateControl(); + this.alignCursor(); + } + get displayValue() { + return this.masked.displayValue; + } + _bindEvents() { + this.el.bindEvents({ + selectionChange: this._saveSelection, + input: this._onInput, + drop: this._onDrop, + click: this._onClick, + focus: this._onFocus, + commit: this._onChange + }); + } + _unbindEvents() { + if (this.el) this.el.unbindEvents(); + } + _fireEvent(ev) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const listeners = this._listeners[ev]; + if (!listeners) return; + listeners.forEach(l => l(...args)); + } + get selectionStart() { + return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart; + } + get cursorPos() { + return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd; + } + set cursorPos(pos) { + if (!this.el || !this.el.isActive) return; + this.el.select(pos, pos); + this._saveSelection(); + } + _saveSelection( + ) { + if (this.displayValue !== this.el.value) { + console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); + } + this._selection = { + start: this.selectionStart, + end: this.cursorPos + }; + } + updateValue() { + this.masked.value = this.el.value; + this._value = this.masked.value; + } + updateControl() { + const newUnmaskedValue = this.masked.unmaskedValue; + const newValue = this.masked.value; + const newDisplayValue = this.displayValue; + const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue; + this._unmaskedValue = newUnmaskedValue; + this._value = newValue; + if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue; + if (isChanged) this._fireChangeEvents(); + } + updateOptions(opts) { + const { + mask + } = opts, + restOpts = _objectWithoutPropertiesLoose(opts, _excluded$1); + const updateMask = !this.maskEquals(mask); + const updateOpts = !objectIncludes(this.masked, restOpts); + if (updateMask) this.mask = mask; + if (updateOpts) this.masked.updateOptions(restOpts); + if (updateMask || updateOpts) this.updateControl(); + } + updateCursor(cursorPos) { + if (cursorPos == null) return; + this.cursorPos = cursorPos; + this._delayUpdateCursor(cursorPos); + } + _delayUpdateCursor(cursorPos) { + this._abortUpdateCursor(); + this._changingCursorPos = cursorPos; + this._cursorChanging = setTimeout(() => { + if (!this.el) return; + this.cursorPos = this._changingCursorPos; + this._abortUpdateCursor(); + }, 10); + } + _fireChangeEvents() { + this._fireEvent('accept', this._inputEvent); + if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent); + } + _abortUpdateCursor() { + if (this._cursorChanging) { + clearTimeout(this._cursorChanging); + delete this._cursorChanging; + } + } + alignCursor() { + this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT)); + } + alignCursorFriendly() { + if (this.selectionStart !== this.cursorPos) return; + this.alignCursor(); + } + on(ev, handler) { + if (!this._listeners[ev]) this._listeners[ev] = []; + this._listeners[ev].push(handler); + return this; + } + off(ev, handler) { + if (!this._listeners[ev]) return this; + if (!handler) { + delete this._listeners[ev]; + return this; + } + const hIndex = this._listeners[ev].indexOf(handler); + if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1); + return this; + } + _onInput(e) { + this._inputEvent = e; + this._abortUpdateCursor(); + if (!this._selection) return this.updateValue(); + const details = new ActionDetails( + this.el.value, this.cursorPos, + this.displayValue, this._selection); + const oldRawValue = this.masked.rawInputValue; + const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, { + input: true, + raw: true + }).offset; + const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE; + let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection); + if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE); + this.updateControl(); + this.updateCursor(cursorPos); + delete this._inputEvent; + } + _onChange() { + if (this.displayValue !== this.el.value) { + this.updateValue(); + } + this.masked.doCommit(); + this.updateControl(); + this._saveSelection(); + } + _onDrop(ev) { + ev.preventDefault(); + ev.stopPropagation(); + } + _onFocus(ev) { + this.alignCursorFriendly(); + } + _onClick(ev) { + this.alignCursorFriendly(); + } + destroy() { + this._unbindEvents(); + this._listeners.length = 0; + delete this.el; + } +} +IMask.InputMask = InputMask; + +class MaskedEnum extends MaskedPattern { + _update(opts) { + if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length); + super._update(opts); + } + doValidate() { + return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) && super.doValidate(...arguments); + } +} +IMask.MaskedEnum = MaskedEnum; + +class MaskedNumber extends Masked { + constructor(opts) { + super(Object.assign({}, MaskedNumber.DEFAULTS, opts)); + } + _update(opts) { + super._update(opts); + this._updateRegExps(); + } + _updateRegExps() { + let start = '^' + (this.allowNegative ? '[+|\\-]?' : ''); + let mid = '\\d*'; + let end = (this.scale ? "(".concat(escapeRegExp(this.radix), "\\d{0,").concat(this.scale, "})?") : '') + '$'; + this._numberRegExp = new RegExp(start + mid + end); + this._mapToRadixRegExp = new RegExp("[".concat(this.mapToRadix.map(escapeRegExp).join(''), "]"), 'g'); + this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g'); + } + _removeThousandsSeparators(value) { + return value.replace(this._thousandsSeparatorRegExp, ''); + } + _insertThousandsSeparators(value) { + const parts = value.split(this.radix); + parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, this.thousandsSeparator); + return parts.join(this.radix); + } + doPrepare(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + ch = this._removeThousandsSeparators(this.scale && this.mapToRadix.length && ( + flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch); + const [prepCh, details] = normalizePrepare(super.doPrepare(ch, flags)); + if (ch && !prepCh) details.skip = true; + return [prepCh, details]; + } + _separatorsCount(to) { + let extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let count = 0; + for (let pos = 0; pos < to; ++pos) { + if (this._value.indexOf(this.thousandsSeparator, pos) === pos) { + ++count; + if (extendOnSeparators) to += this.thousandsSeparator.length; + } + } + return count; + } + _separatorsCountFromSlice() { + let slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value; + return this._separatorsCount(this._removeThousandsSeparators(slice).length, true); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 ? arguments[2] : undefined; + [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos); + return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags)); + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags); + const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value; + const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue); + this._value = this._removeThousandsSeparators(this.value); + const appendDetails = super._appendCharRaw(ch, flags); + this._value = this._insertThousandsSeparators(this._value); + const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value; + const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue); + appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length; + appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator; + return appendDetails; + } + _findSeparatorAround(pos) { + if (this.thousandsSeparator) { + const searchFrom = pos - this.thousandsSeparator.length + 1; + const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom); + if (separatorPos <= pos) return separatorPos; + } + return -1; + } + _adjustRangeWithSeparators(from, to) { + const separatorAroundFromPos = this._findSeparatorAround(from); + if (separatorAroundFromPos >= 0) from = separatorAroundFromPos; + const separatorAroundToPos = this._findSeparatorAround(to); + if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length; + return [from, to]; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos); + const valueBeforePos = this.value.slice(0, fromPos); + const valueAfterPos = this.value.slice(toPos); + const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length); + this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos)); + const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos); + return new ChangeDetails({ + tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length + }); + } + nearestInputPos(cursorPos, direction) { + if (!this.thousandsSeparator) return cursorPos; + switch (direction) { + case DIRECTION.NONE: + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + { + const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1); + if (separatorAtLeftPos >= 0) { + const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length; + if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) { + return separatorAtLeftPos; + } + } + break; + } + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + { + const separatorAtRightPos = this._findSeparatorAround(cursorPos); + if (separatorAtRightPos >= 0) { + return separatorAtRightPos + this.thousandsSeparator.length; + } + } + } + return cursorPos; + } + doValidate(flags) { + let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp)); + if (valid) { + const number = this.number; + valid = valid && !isNaN(number) && ( + this.min == null || this.min >= 0 || this.min <= this.number) && ( + this.max == null || this.max <= 0 || this.number <= this.max); + } + return valid && super.doValidate(flags); + } + doCommit() { + if (this.value) { + const number = this.number; + let validnum = number; + if (this.min != null) validnum = Math.max(validnum, this.min); + if (this.max != null) validnum = Math.min(validnum, this.max); + if (validnum !== number) this.unmaskedValue = this.doFormat(validnum); + let formatted = this.value; + if (this.normalizeZeros) formatted = this._normalizeZeros(formatted); + if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted); + this._value = formatted; + } + super.doCommit(); + } + _normalizeZeros(value) { + const parts = this._removeThousandsSeparators(value).split(this.radix); + parts[0] = parts[0].replace(/^(\D*)(0*)(\d*)/, (match, sign, zeros, num) => sign + num); + if (value.length && !/\d$/.test(parts[0])) parts[0] = parts[0] + '0'; + if (parts.length > 1) { + parts[1] = parts[1].replace(/0*$/, ''); + if (!parts[1].length) parts.length = 1; + } + return this._insertThousandsSeparators(parts.join(this.radix)); + } + _padFractionalZeros(value) { + if (!value) return value; + const parts = value.split(this.radix); + if (parts.length < 2) parts.push(''); + parts[1] = parts[1].padEnd(this.scale, '0'); + return parts.join(this.radix); + } + doSkipInvalid(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let checkTail = arguments.length > 2 ? arguments[2] : undefined; + const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch)); + return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional; + } + get unmaskedValue() { + return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX); + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get typedValue() { + return this.doParse(this.unmaskedValue); + } + set typedValue(n) { + this.rawInputValue = this.doFormat(n).replace(MaskedNumber.UNMASKED_RADIX, this.radix); + } + get number() { + return this.typedValue; + } + set number(number) { + this.typedValue = number; + } + get allowNegative() { + return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0; + } + typedValueEquals(value) { + return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === ''); + } +} +MaskedNumber.UNMASKED_RADIX = '.'; +MaskedNumber.DEFAULTS = { + radix: ',', + thousandsSeparator: '', + mapToRadix: [MaskedNumber.UNMASKED_RADIX], + scale: 2, + signed: false, + normalizeZeros: true, + padFractionalZeros: false, + parse: Number, + format: n => n.toLocaleString('en-US', { + useGrouping: false, + maximumFractionDigits: 20 + }) +}; +MaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0]; +IMask.MaskedNumber = MaskedNumber; + +class MaskedFunction extends Masked { + _update(opts) { + if (opts.mask) opts.validate = opts.mask; + super._update(opts); + } +} +IMask.MaskedFunction = MaskedFunction; + +const _excluded = ["compiledMasks", "currentMaskRef", "currentMask"], + _excluded2 = ["mask"]; +class MaskedDynamic extends Masked { + constructor(opts) { + super(Object.assign({}, MaskedDynamic.DEFAULTS, opts)); + this.currentMask = null; + } + _update(opts) { + super._update(opts); + if ('mask' in opts) { + this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => createMask(m)) : []; + } + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const details = this._applyDispatch(ch, flags); + if (this.currentMask) { + details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags))); + } + return details; + } + _applyDispatch() { + let appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value; + const inputValue = this.rawInputValue; + const insertValue = flags.tail && flags._beforeTailState != null ? + flags._beforeTailState._rawInputValue : inputValue; + const tailValue = inputValue.slice(insertValue.length); + const prevMask = this.currentMask; + const details = new ChangeDetails(); + const prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state; + this.currentMask = this.doDispatch(appended, Object.assign({}, flags), tail); + if (this.currentMask) { + if (this.currentMask !== prevMask) { + this.currentMask.reset(); + if (insertValue) { + const d = this.currentMask.append(insertValue, { + raw: true + }); + details.tailShift = d.inserted.length - prevValueBeforeTail.length; + } + if (tailValue) { + details.tailShift += this.currentMask.append(tailValue, { + raw: true, + tail: true + }).tailShift; + } + } else { + this.currentMask.state = prevMaskState; + } + } + return details; + } + _appendPlaceholder() { + const details = this._applyDispatch(...arguments); + if (this.currentMask) { + details.aggregate(this.currentMask._appendPlaceholder()); + } + return details; + } + _appendEager() { + const details = this._applyDispatch(...arguments); + if (this.currentMask) { + details.aggregate(this.currentMask._appendEager()); + } + return details; + } + appendTail(tail) { + const details = new ChangeDetails(); + if (tail) details.aggregate(this._applyDispatch('', {}, tail)); + return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail)); + } + currentMaskFlags(flags) { + var _flags$_beforeTailSta, _flags$_beforeTailSta2; + return Object.assign({}, flags, { + _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState + }); + } + doDispatch(appended) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + return this.dispatch(appended, this, flags, tail); + } + doValidate(flags) { + return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags))); + } + doPrepare(str) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let [s, details] = normalizePrepare(super.doPrepare(str, flags)); + if (this.currentMask) { + let currentDetails; + [s, currentDetails] = normalizePrepare(super.doPrepare(s, this.currentMaskFlags(flags))); + details = details.aggregate(currentDetails); + } + return [s, details]; + } + reset() { + var _this$currentMask; + (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset(); + this.compiledMasks.forEach(m => m.reset()); + } + get value() { + return this.currentMask ? this.currentMask.value : ''; + } + set value(value) { + super.value = value; + } + get unmaskedValue() { + return this.currentMask ? this.currentMask.unmaskedValue : ''; + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get typedValue() { + return this.currentMask ? this.currentMask.typedValue : ''; + } + set typedValue(value) { + let unmaskedValue = String(value); + if (this.currentMask) { + this.currentMask.typedValue = value; + unmaskedValue = this.currentMask.unmaskedValue; + } + this.unmaskedValue = unmaskedValue; + } + get displayValue() { + return this.currentMask ? this.currentMask.displayValue : ''; + } + get isComplete() { + var _this$currentMask2; + return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete); + } + get isFilled() { + var _this$currentMask3; + return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled); + } + remove() { + const details = new ChangeDetails(); + if (this.currentMask) { + details.aggregate(this.currentMask.remove(...arguments)) + .aggregate(this._applyDispatch()); + } + return details; + } + get state() { + var _this$currentMask4; + return Object.assign({}, super.state, { + _rawInputValue: this.rawInputValue, + compiledMasks: this.compiledMasks.map(m => m.state), + currentMaskRef: this.currentMask, + currentMask: (_this$currentMask4 = this.currentMask) === null || _this$currentMask4 === void 0 ? void 0 : _this$currentMask4.state + }); + } + set state(state) { + const { + compiledMasks, + currentMaskRef, + currentMask + } = state, + maskedState = _objectWithoutPropertiesLoose(state, _excluded); + this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]); + if (currentMaskRef != null) { + this.currentMask = currentMaskRef; + this.currentMask.state = currentMask; + } + super.state = maskedState; + } + extractInput() { + return this.currentMask ? this.currentMask.extractInput(...arguments) : ''; + } + extractTail() { + return this.currentMask ? this.currentMask.extractTail(...arguments) : super.extractTail(...arguments); + } + doCommit() { + if (this.currentMask) this.currentMask.doCommit(); + super.doCommit(); + } + nearestInputPos() { + return this.currentMask ? this.currentMask.nearestInputPos(...arguments) : super.nearestInputPos(...arguments); + } + get overwrite() { + return this.currentMask ? this.currentMask.overwrite : super.overwrite; + } + set overwrite(overwrite) { + console.warn('"overwrite" option is not available in dynamic mask, use this option in siblings'); + } + get eager() { + return this.currentMask ? this.currentMask.eager : super.eager; + } + set eager(eager) { + console.warn('"eager" option is not available in dynamic mask, use this option in siblings'); + } + get skipInvalid() { + return this.currentMask ? this.currentMask.skipInvalid : super.skipInvalid; + } + set skipInvalid(skipInvalid) { + if (this.isInitialized || skipInvalid !== Masked.DEFAULTS.skipInvalid) { + console.warn('"skipInvalid" option is not available in dynamic mask, use this option in siblings'); + } + } + maskEquals(mask) { + return Array.isArray(mask) && this.compiledMasks.every((m, mi) => { + if (!mask[mi]) return; + const _mask$mi = mask[mi], + { + mask: oldMask + } = _mask$mi, + restOpts = _objectWithoutPropertiesLoose(_mask$mi, _excluded2); + return objectIncludes(m, restOpts) && m.maskEquals(oldMask); + }); + } + typedValueEquals(value) { + var _this$currentMask5; + return Boolean((_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.typedValueEquals(value)); + } +} +MaskedDynamic.DEFAULTS = { + dispatch: (appended, masked, flags, tail) => { + if (!masked.compiledMasks.length) return; + const inputValue = masked.rawInputValue; + const inputs = masked.compiledMasks.map((m, index) => { + const isCurrent = masked.currentMask === m; + const startInputPos = isCurrent ? m.value.length : m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT); + if (m.rawInputValue !== inputValue) { + m.reset(); + m.append(inputValue, { + raw: true + }); + } else if (!isCurrent) { + m.remove(startInputPos); + } + m.append(appended, masked.currentMaskFlags(flags)); + m.appendTail(tail); + return { + index, + weight: m.rawInputValue.length, + totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT))) + }; + }); + inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions); + return masked.compiledMasks[inputs[0].index]; + } +}; +IMask.MaskedDynamic = MaskedDynamic; + +const PIPE_TYPE = { + MASKED: 'value', + UNMASKED: 'unmaskedValue', + TYPED: 'typedValue' +}; +function createPipe(mask) { + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED; + let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED; + const masked = createMask(mask); + return value => masked.runIsolated(m => { + m[from] = value; + return m[to]; + }); +} +function pipe(value) { + for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + pipeArgs[_key - 1] = arguments[_key]; + } + return createPipe(...pipeArgs)(value); +} +IMask.PIPE_TYPE = PIPE_TYPE; +IMask.createPipe = createPipe; +IMask.pipe = pipe; + +try { + globalThis.IMask = IMask; +} catch (e) {} + +var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]')); +maskElementList.map(function (maskEl) { + return new IMask(maskEl, { + mask: maskEl.dataset.mask, + lazy: maskEl.dataset['mask-visible'] === 'true' + }); +}); + +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper = 'popper'; +var reference = 'reference'; +var variationPlacements = basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = [].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); +var beforeRead = 'beforeRead'; +var read = 'read'; +var afterRead = 'afterRead'; +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; +var beforeWrite = 'beforeWrite'; +var write = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; +} + +function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; +} + +function isElement$1(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; +} +function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; +} +function isShadowRoot(node) { + if (typeof ShadowRoot === 'undefined') { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); +} +function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} +var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] +}; + +function getBasePlacement(placement) { + return placement.split('-')[0]; +} + +var max = Math.max; +var min = Math.min; +var round = Math.round; + +function getUAString() { + var uaData = navigator.userAgentData; + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + return navigator.userAgent; +} + +function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); +} + +function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; + } + var _ref = isElement$1(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; +} + +function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} + +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; +} + +function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); +} + +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; +} + +function getDocumentElement(element) { + return ((isElement$1(element) ? element.ownerDocument : + element.document) || window.document).documentElement; +} + +function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + return ( + element.assignedSlot || + element.parentNode || ( + isShadowRoot(element) ? element.host : null) || + getDocumentElement(element) + ); +} + +function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || + getComputedStyle$1(element).position === 'fixed') { + return null; + } + return element.offsetParent; +} +function getContainingBlock(element) { + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle$1(element); + if (elementCss.position === 'fixed') { + return null; + } + } + var currentNode = getParentNode(element); + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; +} +function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + return offsetParent || getContainingBlock(element) || window; +} + +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; +} + +function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); +} +function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; +} + +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; +} + +function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); +} + +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); +} + +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); +}; +function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + if (!arrowElement || !popperOffsets) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} +function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (!contains(state.elements.popper, arrowElement)) { + return; + } + state.elements.arrow = arrowElement; +} +var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}; + +function getVariation(placement) { + return placement.split('-')[1]; +} + +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; +function roundOffsetsByDPR(_ref, win) { + var x = _ref.x, + y = _ref.y; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; +} +function mapToStyles(_ref2) { + var _Object$assign2; + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }, getWindow(popper)) : { + x: x, + y: y + }; + x = _ref4.x; + y = _ref4.y; + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); +} +function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} +var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}; + +var passive = { + passive: true +}; +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} +var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}; + +var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); +} + +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); +} + +function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; +} + +function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; +} + +function getViewportRect(element, strategy) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; +} + +function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width: width, + height: height, + x: x, + y: y + }; +} + +function isScrollParent(element) { + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +} + +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); +} + +function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : + updatedList.concat(listScrollParents(getParentNode(target))); +} + +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); +} + +function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; +} +function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); +} +function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement$1(clipperElement)) { + return []; + } + return clippingParents.filter(function (clippingParent) { + return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); +} +function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; +} + +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + return offsets; +} + +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + return overflowOffsets; +} + +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + } + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); +} + +function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; +} +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} +var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}; + +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; +} +function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); +} +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} +var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}; + +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; +} +var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}; + +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} +var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}; + +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === 'x' ? top : left; + var _altSide = mainAxis === 'x' ? bottom : right; + var _offset = popperOffsets[altAxis]; + var _len = altAxis === 'y' ? 'height' : 'width'; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; +} +var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}; + +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } +} + +function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; +} +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} + +function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; +} +function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); +} + +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + return pending; + }; +} + +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); + return Object.keys(merged).map(function (key) { + return merged[key]; + }); +} + +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); +} +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); + runModifierEffects(); + return instance.update(); + }, + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; + if (!areValidElements(reference, popper)) { + return; + } + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference, popper)) { + return instance; + } + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref) { + var name = _ref.name, + _ref$options = _ref.options, + options = _ref$options === void 0 ? {} : _ref$options, + effect = _ref.effect; + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + var noopFn = function noopFn() {}; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; +} +var createPopper$2 = popperGenerator(); + +var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; +var createPopper$1 = popperGenerator({ + defaultModifiers: defaultModifiers$1 +}); + +var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; +var createPopper = popperGenerator({ + defaultModifiers: defaultModifiers +}); + +var Popper = /*#__PURE__*/Object.freeze({ + __proto__: null, + popperGenerator: popperGenerator, + detectOverflow: detectOverflow, + createPopperBase: createPopper$2, + createPopper: createPopper, + createPopperLite: createPopper$1, + top: top, + bottom: bottom, + right: right, + left: left, + auto: auto, + basePlacements: basePlacements, + start: start, + end: end, + clippingParents: clippingParents, + viewport: viewport, + popper: popper, + reference: reference, + variationPlacements: variationPlacements, + placements: placements, + beforeRead: beforeRead, + read: read, + afterRead: afterRead, + beforeMain: beforeMain, + main: main, + afterMain: afterMain, + beforeWrite: beforeWrite, + write: write, + afterWrite: afterWrite, + modifierPhases: modifierPhases, + applyStyles: applyStyles$1, + arrow: arrow$1, + computeStyles: computeStyles$1, + eventListeners: eventListeners, + flip: flip$1, + hide: hide$1, + offset: offset$1, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1 +}); + +/*! + * Bootstrap v5.3.1 (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) + */ +const elementMap = new Map(); +const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } +}; +const MAX_UID = 1000000; +const MILLISECONDS_MULTIPLIER = 1000; +const TRANSITION_END = 'transitionend'; +const parseSelector = selector => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; +}; +const toType = object => { + if (object === null || object === undefined) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); +}; +const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; +}; +const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; +}; +const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); +}; +const isElement = object => { + if (!object || typeof object !== 'object') { + return false; + } + if (typeof object.jquery !== 'undefined') { + object = object[0]; + } + return typeof object.nodeType !== 'undefined'; +}; +const getElement = object => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === 'string' && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; +}; +const isVisible = element => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + const closedDetails = element.closest('details:not([open])'); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest('summary'); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; +}; +const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains('disabled')) { + return true; + } + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; +}; +const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); +}; +const noop = () => {}; +const reflow = element => { + element.offsetHeight; +}; +const getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return window.jQuery; + } + return null; +}; +const DOMContentLoadedCallbacks = []; +const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + for (const callback of DOMContentLoadedCallbacks) { + callback(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } +}; +const isRTL = () => document.documentElement.dir === 'rtl'; +const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); +}; +const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; +}; +const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); +}; +const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + const listLength = list.length; + let index = list.indexOf(activeElement); + if (index === -1) { + return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + } + index += shouldGetNext ? 1 : -1; + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + return list[Math.max(0, Math.min(index, listLength - 1))]; +}; +const namespaceRegex = /[^.]*(?=\..*)\.|.*/; +const stripNameRegex = /\..*/; +const stripUidRegex = /::\d+$/; +const eventRegistry = {}; +let uidEvent = 1; +const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' +}; +const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); +function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; +} +function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; +} +function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { + delegateTarget: element + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; +} +function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { + delegateTarget: target + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; +} +function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); +} +function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === 'string'; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; +} +function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); +} +function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; +} +function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } +} +function getTypeEvent(event) { + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; +} +const EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith('.'); + if (typeof callable !== 'undefined') { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { + bubbles, + cancelable: true + }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } +}; +function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (_unused) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; +} +function normalizeData(value) { + if (value === 'true') { + return true; + } + if (value === 'false') { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === '' || value === 'null') { + return null; + } + if (typeof value !== 'string') { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (_unused) { + return value; + } +} +function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); +} +const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } +}; +class Config { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; + return { + ...this.constructor.Default, + ...(typeof jsonConfig === 'object' ? jsonConfig : {}), + ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), + ...(typeof config === 'object' ? config : {}) + }; + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? 'element' : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + } + } +} +const VERSION = '5.3.1'; +class BaseComponent extends Config { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + Data.set(this._element, this.constructor.DATA_KEY, this); + } + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } +} +const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + if (!selector || selector === '#') { + let hrefAttribute = element.getAttribute('href'); + if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + return null; + } + if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { + hrefAttribute = `#${hrefAttribute.split('#')[1]}`; + } + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; + } + return parseSelector(selector); +}; +const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } +}; +const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); + instance[method](); + }); +}; +const NAME$f = 'alert'; +const DATA_KEY$a = 'bs.alert'; +const EVENT_KEY$b = `.${DATA_KEY$a}`; +const EVENT_CLOSE = `close${EVENT_KEY$b}`; +const EVENT_CLOSED = `closed${EVENT_KEY$b}`; +const CLASS_NAME_FADE$5 = 'fade'; +const CLASS_NAME_SHOW$8 = 'show'; +class Alert extends BaseComponent { + static get NAME() { + return NAME$f; + } + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + if (closeEvent.defaultPrevented) { + return; + } + this._element.classList.remove(CLASS_NAME_SHOW$8); + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } + _destroyElement() { + this._element.remove(); + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } +} +enableDismissTrigger(Alert, 'close'); +defineJQueryPlugin(Alert); +const NAME$e = 'button'; +const DATA_KEY$9 = 'bs.button'; +const EVENT_KEY$a = `.${DATA_KEY$9}`; +const DATA_API_KEY$6 = '.data-api'; +const CLASS_NAME_ACTIVE$3 = 'active'; +const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; +const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; +class Button extends BaseComponent { + static get NAME() { + return NAME$e; + } + toggle() { + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + if (config === 'toggle') { + data[config](); + } + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); +}); +defineJQueryPlugin(Button); +const NAME$d = 'swipe'; +const EVENT_KEY$9 = '.bs.swipe'; +const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; +const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; +const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; +const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; +const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; +const POINTER_TYPE_TOUCH = 'touch'; +const POINTER_TYPE_PEN = 'pen'; +const CLASS_NAME_POINTER_EVENT = 'pointer-event'; +const SWIPE_THRESHOLD = 40; +const Default$c = { + endCallback: null, + leftCallback: null, + rightCallback: null +}; +const DefaultType$c = { + endCallback: '(function|null)', + leftCallback: '(function|null)', + rightCallback: '(function|null)' +}; +class Swipe extends Config { + constructor(element, config) { + super(); + this._element = element; + if (!element || !Swipe.isSupported()) { + return; + } + this._config = this._getConfig(config); + this._deltaX = 0; + this._supportPointerEvents = Boolean(window.PointerEvent); + this._initEvents(); + } + static get Default() { + return Default$c; + } + static get DefaultType() { + return DefaultType$c; + } + static get NAME() { + return NAME$d; + } + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); + } + _start(event) { + if (!this._supportPointerEvents) { + this._deltaX = event.touches[0].clientX; + return; + } + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX; + } + } + _end(event) { + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX - this._deltaX; + } + this._handleSwipe(); + execute(this._config.endCallback); + } + _move(event) { + this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; + } + _handleSwipe() { + const absDeltaX = Math.abs(this._deltaX); + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + const direction = absDeltaX / this._deltaX; + this._deltaX = 0; + if (!direction) { + return; + } + execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); + } + _initEvents() { + if (this._supportPointerEvents) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); + } + } + _eventIsPointerPenTouch(event) { + return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + } + static isSupported() { + return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + } +} +const NAME$c = 'carousel'; +const DATA_KEY$8 = 'bs.carousel'; +const EVENT_KEY$8 = `.${DATA_KEY$8}`; +const DATA_API_KEY$5 = '.data-api'; +const ARROW_LEFT_KEY$1 = 'ArrowLeft'; +const ARROW_RIGHT_KEY$1 = 'ArrowRight'; +const TOUCHEVENT_COMPAT_WAIT = 500; +const ORDER_NEXT = 'next'; +const ORDER_PREV = 'prev'; +const DIRECTION_LEFT = 'left'; +const DIRECTION_RIGHT = 'right'; +const EVENT_SLIDE = `slide${EVENT_KEY$8}`; +const EVENT_SLID = `slid${EVENT_KEY$8}`; +const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; +const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; +const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; +const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; +const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; +const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; +const CLASS_NAME_CAROUSEL = 'carousel'; +const CLASS_NAME_ACTIVE$2 = 'active'; +const CLASS_NAME_SLIDE = 'slide'; +const CLASS_NAME_END = 'carousel-item-end'; +const CLASS_NAME_START = 'carousel-item-start'; +const CLASS_NAME_NEXT = 'carousel-item-next'; +const CLASS_NAME_PREV = 'carousel-item-prev'; +const SELECTOR_ACTIVE = '.active'; +const SELECTOR_ITEM = '.carousel-item'; +const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; +const SELECTOR_ITEM_IMG = '.carousel-item img'; +const SELECTOR_INDICATORS = '.carousel-indicators'; +const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; +const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; +const KEY_TO_DIRECTION = { + [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, + [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT +}; +const Default$b = { + interval: 5000, + keyboard: true, + pause: 'hover', + ride: false, + touch: true, + wrap: true +}; +const DefaultType$b = { + interval: '(number|boolean)', + keyboard: 'boolean', + pause: '(string|boolean)', + ride: '(boolean|string)', + touch: 'boolean', + wrap: 'boolean' +}; +class Carousel extends BaseComponent { + constructor(element, config) { + super(element, config); + this._interval = null; + this._activeElement = null; + this._isSliding = false; + this.touchTimeout = null; + this._swipeHelper = null; + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + this._addEventListeners(); + if (this._config.ride === CLASS_NAME_CAROUSEL) { + this.cycle(); + } + } + static get Default() { + return Default$b; + } + static get DefaultType() { + return DefaultType$b; + } + static get NAME() { + return NAME$c; + } + next() { + this._slide(ORDER_NEXT); + } + nextWhenVisible() { + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + prev() { + this._slide(ORDER_PREV); + } + pause() { + if (this._isSliding) { + triggerTransitionEnd(this._element); + } + this._clearInterval(); + } + cycle() { + this._clearInterval(); + this._updateInterval(); + this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); + } + _maybeEnableCycle() { + if (!this._config.ride) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); + return; + } + this.cycle(); + } + to(index) { + const items = this._getItems(); + if (index > items.length - 1 || index < 0) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); + return; + } + const activeIndex = this._getItemIndex(this._getActive()); + if (activeIndex === index) { + return; + } + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; + this._slide(order, items[index]); + } + dispose() { + if (this._swipeHelper) { + this._swipeHelper.dispose(); + } + super.dispose(); + } + _configAfterMerge(config) { + config.defaultInterval = config.interval; + return config; + } + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); + } + if (this._config.pause === 'hover') { + EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); + EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); + } + if (this._config.touch && Swipe.isSupported()) { + this._addTouchEventListeners(); + } + } + _addTouchEventListeners() { + for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { + EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); + } + const endCallBack = () => { + if (this._config.pause !== 'hover') { + return; + } + this.pause(); + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + }; + const swipeConfig = { + leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), + rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), + endCallback: endCallBack + }; + this._swipeHelper = new Swipe(this._element, swipeConfig); + } + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + const direction = KEY_TO_DIRECTION[event.key]; + if (direction) { + event.preventDefault(); + this._slide(this._directionToOrder(direction)); + } + } + _getItemIndex(element) { + return this._getItems().indexOf(element); + } + _setActiveIndicatorElement(index) { + if (!this._indicatorsElement) { + return; + } + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); + if (newActiveIndicator) { + newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); + newActiveIndicator.setAttribute('aria-current', 'true'); + } + } + _updateInterval() { + const element = this._activeElement || this._getActive(); + if (!element) { + return; + } + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + this._config.interval = elementInterval || this._config.defaultInterval; + } + _slide(order, element = null) { + if (this._isSliding) { + return; + } + const activeElement = this._getActive(); + const isNext = order === ORDER_NEXT; + const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); + if (nextElement === activeElement) { + return; + } + const nextElementIndex = this._getItemIndex(nextElement); + const triggerEvent = eventName => { + return EventHandler.trigger(this._element, eventName, { + relatedTarget: nextElement, + direction: this._orderToDirection(order), + from: this._getItemIndex(activeElement), + to: nextElementIndex + }); + }; + const slideEvent = triggerEvent(EVENT_SLIDE); + if (slideEvent.defaultPrevented) { + return; + } + if (!activeElement || !nextElement) { + return; + } + const isCycling = Boolean(this._interval); + this.pause(); + this._isSliding = true; + this._setActiveIndicatorElement(nextElementIndex); + this._activeElement = nextElement; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + const completeCallBack = () => { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + triggerEvent(EVENT_SLID); + }; + this._queueCallback(completeCallBack, activeElement, this._isAnimated()); + if (isCycling) { + this.cycle(); + } + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_SLIDE); + } + _getActive() { + return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + } + _getItems() { + return SelectorEngine.find(SELECTOR_ITEM, this._element); + } + _clearInterval() { + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + } + _directionToOrder(direction) { + if (isRTL()) { + return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; + } + return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; + } + _orderToDirection(order) { + if (isRTL()) { + return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Carousel.getOrCreateInstance(this, config); + if (typeof config === 'number') { + data.to(config); + return; + } + if (typeof config === 'string') { + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; + } + event.preventDefault(); + const carousel = Carousel.getOrCreateInstance(target); + const slideIndex = this.getAttribute('data-bs-slide-to'); + if (slideIndex) { + carousel.to(slideIndex); + carousel._maybeEnableCycle(); + return; + } + if (Manipulator.getDataAttribute(this, 'slide') === 'next') { + carousel.next(); + carousel._maybeEnableCycle(); + return; + } + carousel.prev(); + carousel._maybeEnableCycle(); +}); +EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); + for (const carousel of carousels) { + Carousel.getOrCreateInstance(carousel); + } +}); +defineJQueryPlugin(Carousel); +const NAME$b = 'collapse'; +const DATA_KEY$7 = 'bs.collapse'; +const EVENT_KEY$7 = `.${DATA_KEY$7}`; +const DATA_API_KEY$4 = '.data-api'; +const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; +const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; +const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; +const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; +const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; +const CLASS_NAME_SHOW$7 = 'show'; +const CLASS_NAME_COLLAPSE = 'collapse'; +const CLASS_NAME_COLLAPSING = 'collapsing'; +const CLASS_NAME_COLLAPSED = 'collapsed'; +const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; +const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; +const WIDTH = 'width'; +const HEIGHT = 'height'; +const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; +const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; +const Default$a = { + parent: null, + toggle: true +}; +const DefaultType$a = { + parent: '(null|element)', + toggle: 'boolean' +}; +class Collapse extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); + for (const elem of toggleList) { + const selector = SelectorEngine.getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + static get Default() { + return Default$a; + } + static get DefaultType() { + return DefaultType$a; + } + static get NAME() { + return NAME$b; + } + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { + toggle: false + })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + this._element.style[dimension] = ''; + EventHandler.trigger(this._element, EVENT_SHOWN$6); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + for (const trigger of this._triggerArray) { + const element = SelectorEngine.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + EventHandler.trigger(this._element, EVENT_HIDDEN$6); + }; + this._element.style[dimension] = ''; + this._queueCallback(complete, this._element, true); + } + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$7); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); + for (const element of children) { + const selected = SelectorEngine.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute('aria-expanded', isOpen); + } + } + static jQueryInterface(config) { + const _config = {}; + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function () { + const data = Collapse.getOrCreateInstance(this, _config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { + if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { + event.preventDefault(); + } + for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); + } +}); +defineJQueryPlugin(Collapse); +const NAME$a = 'dropdown'; +const DATA_KEY$6 = 'bs.dropdown'; +const EVENT_KEY$6 = `.${DATA_KEY$6}`; +const DATA_API_KEY$3 = '.data-api'; +const ESCAPE_KEY$2 = 'Escape'; +const TAB_KEY$1 = 'Tab'; +const ARROW_UP_KEY$1 = 'ArrowUp'; +const ARROW_DOWN_KEY$1 = 'ArrowDown'; +const RIGHT_MOUSE_BUTTON = 2; +const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; +const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; +const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; +const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; +const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; +const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; +const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; +const CLASS_NAME_SHOW$6 = 'show'; +const CLASS_NAME_DROPUP = 'dropup'; +const CLASS_NAME_DROPEND = 'dropend'; +const CLASS_NAME_DROPSTART = 'dropstart'; +const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; +const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; +const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; +const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; +const SELECTOR_MENU = '.dropdown-menu'; +const SELECTOR_NAVBAR = '.navbar'; +const SELECTOR_NAVBAR_NAV = '.navbar-nav'; +const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; +const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; +const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; +const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; +const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; +const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; +const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; +const PLACEMENT_TOPCENTER = 'top'; +const PLACEMENT_BOTTOMCENTER = 'bottom'; +const Default$9 = { + autoClose: true, + boundary: 'clippingParents', + display: 'dynamic', + offset: [0, 2], + popperConfig: null, + reference: 'toggle' +}; +const DefaultType$9 = { + autoClose: '(boolean|string)', + boundary: '(string|element)', + display: 'string', + offset: '(array|string|function)', + popperConfig: '(null|object|function)', + reference: '(string|element|object)' +}; +class Dropdown extends BaseComponent { + constructor(element, config) { + super(element, config); + this._popper = null; + this._parent = this._element.parentNode; + this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); + this._inNavbar = this._detectNavbar(); + } + static get Default() { + return Default$9; + } + static get DefaultType() { + return DefaultType$9; + } + static get NAME() { + return NAME$a; + } + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + show() { + if (isDisabled(this._element) || this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); + if (showEvent.defaultPrevented) { + return; + } + this._createPopper(); + if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + this._element.focus(); + this._element.setAttribute('aria-expanded', true); + this._menu.classList.add(CLASS_NAME_SHOW$6); + this._element.classList.add(CLASS_NAME_SHOW$6); + EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); + } + hide() { + if (isDisabled(this._element) || !this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + this._completeHide(relatedTarget); + } + dispose() { + if (this._popper) { + this._popper.destroy(); + } + super.dispose(); + } + update() { + this._inNavbar = this._detectNavbar(); + if (this._popper) { + this._popper.update(); + } + } + _completeHide(relatedTarget) { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); + if (hideEvent.defaultPrevented) { + return; + } + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + if (this._popper) { + this._popper.destroy(); + } + this._menu.classList.remove(CLASS_NAME_SHOW$6); + this._element.classList.remove(CLASS_NAME_SHOW$6); + this._element.setAttribute('aria-expanded', 'false'); + Manipulator.removeDataAttribute(this._menu, 'popper'); + EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); + } + _getConfig(config) { + config = super._getConfig(config); + if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { + throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); + } + return config; + } + _createPopper() { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + let referenceElement = this._element; + if (this._config.reference === 'parent') { + referenceElement = this._parent; + } else if (isElement(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + const popperConfig = this._getPopperConfig(); + this._popper = createPopper(referenceElement, this._menu, popperConfig); + } + _isShown() { + return this._menu.classList.contains(CLASS_NAME_SHOW$6); + } + _getPlacement() { + const parentDropdown = this._parent; + if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { + return PLACEMENT_RIGHT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { + return PLACEMENT_LEFT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { + return PLACEMENT_TOPCENTER; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { + return PLACEMENT_BOTTOMCENTER; + } + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { + return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } + return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; + } + _detectNavbar() { + return this._element.closest(SELECTOR_NAVBAR) !== null; + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _getPopperConfig() { + const defaultBsPopperConfig = { + placement: this._getPlacement(), + modifiers: [{ + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }] + }; + if (this._inNavbar || this._config.display === 'static') { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); + defaultBsPopperConfig.modifiers = [{ + name: 'applyStyles', + enabled: false + }]; + } + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _selectMenuItem({ + key, + target + }) { + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); + if (!items.length) { + return; + } + getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + static clearMenus(event) { + if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { + return; + } + const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); + for (const toggle of openToggles) { + const context = Dropdown.getInstance(toggle); + if (!context || context._config.autoClose === false) { + continue; + } + const composedPath = event.composedPath(); + const isMenuTarget = composedPath.includes(context._menu); + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + const relatedTarget = { + relatedTarget: context._element + }; + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } + context._completeHide(relatedTarget); + } + } + static dataApiKeydownHandler(event) { + const isInput = /input|textarea/i.test(event.target.tagName); + const isEscapeEvent = event.key === ESCAPE_KEY$2; + const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); + if (!isUpOrDownEvent && !isEscapeEvent) { + return; + } + if (isInput && !isEscapeEvent) { + return; + } + event.preventDefault(); + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); + const instance = Dropdown.getOrCreateInstance(getToggleButton); + if (isUpOrDownEvent) { + event.stopPropagation(); + instance.show(); + instance._selectMenuItem(event); + return; + } + if (instance._isShown()) { + event.stopPropagation(); + instance.hide(); + getToggleButton.focus(); + } + } +} +EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); +EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); +EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); +EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); +EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + event.preventDefault(); + Dropdown.getOrCreateInstance(this).toggle(); +}); +defineJQueryPlugin(Dropdown); +const NAME$9 = 'backdrop'; +const CLASS_NAME_FADE$4 = 'fade'; +const CLASS_NAME_SHOW$5 = 'show'; +const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; +const Default$8 = { + className: 'modal-backdrop', + clickCallback: null, + isAnimated: false, + isVisible: true, + rootElement: 'body' +}; +const DefaultType$8 = { + className: 'string', + clickCallback: '(function|null)', + isAnimated: 'boolean', + isVisible: 'boolean', + rootElement: '(element|string)' +}; +class Backdrop extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } + static get Default() { + return Default$8; + } + static get DefaultType() { + return DefaultType$8; + } + static get NAME() { + return NAME$9; + } + show(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._append(); + const element = this._getElement(); + if (this._config.isAnimated) { + reflow(element); + } + element.classList.add(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + execute(callback); + }); + } + hide(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._getElement().classList.remove(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + this.dispose(); + execute(callback); + }); + } + dispose() { + if (!this._isAppended) { + return; + } + EventHandler.off(this._element, EVENT_MOUSEDOWN); + this._element.remove(); + this._isAppended = false; + } + _getElement() { + if (!this._element) { + const backdrop = document.createElement('div'); + backdrop.className = this._config.className; + if (this._config.isAnimated) { + backdrop.classList.add(CLASS_NAME_FADE$4); + } + this._element = backdrop; + } + return this._element; + } + _configAfterMerge(config) { + config.rootElement = getElement(config.rootElement); + return config; + } + _append() { + if (this._isAppended) { + return; + } + const element = this._getElement(); + this._config.rootElement.append(element); + EventHandler.on(element, EVENT_MOUSEDOWN, () => { + execute(this._config.clickCallback); + }); + this._isAppended = true; + } + _emulateAnimation(callback) { + executeAfterTransition(callback, this._getElement(), this._config.isAnimated); + } +} +const NAME$8 = 'focustrap'; +const DATA_KEY$5 = 'bs.focustrap'; +const EVENT_KEY$5 = `.${DATA_KEY$5}`; +const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; +const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; +const TAB_KEY = 'Tab'; +const TAB_NAV_FORWARD = 'forward'; +const TAB_NAV_BACKWARD = 'backward'; +const Default$7 = { + autofocus: true, + trapElement: null +}; +const DefaultType$7 = { + autofocus: 'boolean', + trapElement: 'element' +}; +class FocusTrap extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + static get Default() { + return Default$7; + } + static get DefaultType() { + return DefaultType$7; + } + static get NAME() { + return NAME$8; + } + activate() { + if (this._isActive) { + return; + } + if (this._config.autofocus) { + this._config.trapElement.focus(); + } + EventHandler.off(document, EVENT_KEY$5); + EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + deactivate() { + if (!this._isActive) { + return; + } + this._isActive = false; + EventHandler.off(document, EVENT_KEY$5); + } + _handleFocusin(event) { + const { + trapElement + } = this._config; + if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { + return; + } + const elements = SelectorEngine.focusableChildren(trapElement); + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } +} +const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; +const SELECTOR_STICKY_CONTENT = '.sticky-top'; +const PROPERTY_PADDING = 'padding-right'; +const PROPERTY_MARGIN = 'margin-right'; +class ScrollBarHelper { + constructor() { + this._element = document.body; + } + getWidth() { + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); + } + hide() { + const width = this.getWidth(); + this._disableOverFlow(); + this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); + } + reset() { + this._resetElementAttributes(this._element, 'overflow'); + this._resetElementAttributes(this._element, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); + } + isOverflowing() { + return this.getWidth() > 0; + } + _disableOverFlow() { + this._saveInitialAttribute(this._element, 'overflow'); + this._element.style.overflow = 'hidden'; + } + _setElementAttributes(selector, styleProperty, callback) { + const scrollbarWidth = this.getWidth(); + const manipulationCallBack = element => { + if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + this._saveInitialAttribute(element, styleProperty); + const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); + element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _saveInitialAttribute(element, styleProperty) { + const actualValue = element.style.getPropertyValue(styleProperty); + if (actualValue) { + Manipulator.setDataAttribute(element, styleProperty, actualValue); + } + } + _resetElementAttributes(selector, styleProperty) { + const manipulationCallBack = element => { + const value = Manipulator.getDataAttribute(element, styleProperty); + if (value === null) { + element.style.removeProperty(styleProperty); + return; + } + Manipulator.removeDataAttribute(element, styleProperty); + element.style.setProperty(styleProperty, value); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _applyManipulationCallback(selector, callBack) { + if (isElement(selector)) { + callBack(selector); + return; + } + for (const sel of SelectorEngine.find(selector, this._element)) { + callBack(sel); + } + } +} +const NAME$7 = 'modal'; +const DATA_KEY$4 = 'bs.modal'; +const EVENT_KEY$4 = `.${DATA_KEY$4}`; +const DATA_API_KEY$2 = '.data-api'; +const ESCAPE_KEY$1 = 'Escape'; +const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; +const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; +const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; +const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; +const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; +const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; +const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; +const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; +const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; +const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; +const CLASS_NAME_OPEN = 'modal-open'; +const CLASS_NAME_FADE$3 = 'fade'; +const CLASS_NAME_SHOW$4 = 'show'; +const CLASS_NAME_STATIC = 'modal-static'; +const OPEN_SELECTOR$1 = '.modal.show'; +const SELECTOR_DIALOG = '.modal-dialog'; +const SELECTOR_MODAL_BODY = '.modal-body'; +const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; +const Default$6 = { + backdrop: true, + focus: true, + keyboard: true +}; +const DefaultType$6 = { + backdrop: '(boolean|string)', + focus: 'boolean', + keyboard: 'boolean' +}; +class Modal extends BaseComponent { + constructor(element, config) { + super(element, config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._isShown = false; + this._isTransitioning = false; + this._scrollBar = new ScrollBarHelper(); + this._addEventListeners(); + } + static get Default() { + return Default$6; + } + static get DefaultType() { + return DefaultType$6; + } + static get NAME() { + return NAME$7; + } + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._isTransitioning = true; + this._scrollBar.hide(); + document.body.classList.add(CLASS_NAME_OPEN); + this._adjustDialog(); + this._backdrop.show(() => this._showElement(relatedTarget)); + } + hide() { + if (!this._isShown || this._isTransitioning) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); + if (hideEvent.defaultPrevented) { + return; + } + this._isShown = false; + this._isTransitioning = true; + this._focustrap.deactivate(); + this._element.classList.remove(CLASS_NAME_SHOW$4); + this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); + } + dispose() { + EventHandler.off(window, EVENT_KEY$4); + EventHandler.off(this._dialog, EVENT_KEY$4); + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + handleUpdate() { + this._adjustDialog(); + } + _initializeBackDrop() { + return new Backdrop({ + isVisible: Boolean(this._config.backdrop), + isAnimated: this._isAnimated() + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _showElement(relatedTarget) { + if (!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', true); + this._element.setAttribute('role', 'dialog'); + this._element.scrollTop = 0; + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + if (modalBody) { + modalBody.scrollTop = 0; + } + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW$4); + const transitionComplete = () => { + if (this._config.focus) { + this._focustrap.activate(); + } + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$4, { + relatedTarget + }); + }; + this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { + if (event.key !== ESCAPE_KEY$1) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + this._triggerBackdropTransition(); + }); + EventHandler.on(window, EVENT_RESIZE$1, () => { + if (this._isShown && !this._isTransitioning) { + this._adjustDialog(); + } + }); + EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { + EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { + if (this._element !== event.target || this._element !== event2.target) { + return; + } + if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); + return; + } + if (this._config.backdrop) { + this.hide(); + } + }); + }); + } + _hideModal() { + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', true); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + this._isTransitioning = false; + this._backdrop.hide(() => { + document.body.classList.remove(CLASS_NAME_OPEN); + this._resetAdjustments(); + this._scrollBar.reset(); + EventHandler.trigger(this._element, EVENT_HIDDEN$4); + }); + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$3); + } + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); + if (hideEvent.defaultPrevented) { + return; + } + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const initialOverflowY = this._element.style.overflowY; + if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { + return; + } + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } + this._element.classList.add(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.classList.remove(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.style.overflowY = initialOverflowY; + }, this._dialog); + }, this._dialog); + this._element.focus(); + } + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const scrollbarWidth = this._scrollBar.getWidth(); + const isBodyOverflowing = scrollbarWidth > 0; + if (isBodyOverflowing && !isModalOverflowing) { + const property = isRTL() ? 'paddingLeft' : 'paddingRight'; + this._element.style[property] = `${scrollbarWidth}px`; + } + if (!isBodyOverflowing && isModalOverflowing) { + const property = isRTL() ? 'paddingRight' : 'paddingLeft'; + this._element.style[property] = `${scrollbarWidth}px`; + } + } + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + const data = Modal.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](relatedTarget); + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + EventHandler.one(target, EVENT_SHOW$4, showEvent => { + if (showEvent.defaultPrevented) { + return; + } + EventHandler.one(target, EVENT_HIDDEN$4, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + if (alreadyOpen) { + Modal.getInstance(alreadyOpen).hide(); + } + const data = Modal.getOrCreateInstance(target); + data.toggle(this); +}); +enableDismissTrigger(Modal); +defineJQueryPlugin(Modal); +const NAME$6 = 'offcanvas'; +const DATA_KEY$3 = 'bs.offcanvas'; +const EVENT_KEY$3 = `.${DATA_KEY$3}`; +const DATA_API_KEY$1 = '.data-api'; +const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; +const ESCAPE_KEY = 'Escape'; +const CLASS_NAME_SHOW$3 = 'show'; +const CLASS_NAME_SHOWING$1 = 'showing'; +const CLASS_NAME_HIDING = 'hiding'; +const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; +const OPEN_SELECTOR = '.offcanvas.show'; +const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; +const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; +const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; +const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; +const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; +const EVENT_RESIZE = `resize${EVENT_KEY$3}`; +const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; +const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; +const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; +const Default$5 = { + backdrop: true, + keyboard: true, + scroll: false +}; +const DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + scroll: 'boolean' +}; +class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isShown = false; + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._addEventListeners(); + } + static get Default() { + return Default$5; + } + static get DefaultType() { + return DefaultType$5; + } + static get NAME() { + return NAME$6; + } + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._backdrop.show(); + if (!this._config.scroll) { + new ScrollBarHelper().hide(); + } + this._element.setAttribute('aria-modal', true); + this._element.setAttribute('role', 'dialog'); + this._element.classList.add(CLASS_NAME_SHOWING$1); + const completeCallBack = () => { + if (!this._config.scroll || this._config.backdrop) { + this._focustrap.activate(); + } + this._element.classList.add(CLASS_NAME_SHOW$3); + this._element.classList.remove(CLASS_NAME_SHOWING$1); + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget + }); + }; + this._queueCallback(completeCallBack, this._element, true); + } + hide() { + if (!this._isShown) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + if (hideEvent.defaultPrevented) { + return; + } + this._focustrap.deactivate(); + this._element.blur(); + this._isShown = false; + this._element.classList.add(CLASS_NAME_HIDING); + this._backdrop.hide(); + const completeCallback = () => { + this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + if (!this._config.scroll) { + new ScrollBarHelper().reset(); + } + EventHandler.trigger(this._element, EVENT_HIDDEN$3); + }; + this._queueCallback(completeCallback, this._element, true); + } + dispose() { + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + _initializeBackDrop() { + const clickCallback = () => { + if (this._config.backdrop === 'static') { + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + return; + } + this.hide(); + }; + const isVisible = Boolean(this._config.backdrop); + return new Backdrop({ + className: CLASS_NAME_BACKDROP, + isVisible, + isAnimated: true, + rootElement: this._element.parentNode, + clickCallback: isVisible ? clickCallback : null + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (event.key !== ESCAPE_KEY) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + }); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Offcanvas.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + EventHandler.one(target, EVENT_HIDDEN$3, () => { + if (isVisible(this)) { + this.focus(); + } + }); + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + if (alreadyOpen && alreadyOpen !== target) { + Offcanvas.getInstance(alreadyOpen).hide(); + } + const data = Offcanvas.getOrCreateInstance(target); + data.toggle(this); +}); +EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { + Offcanvas.getOrCreateInstance(selector).show(); + } +}); +EventHandler.on(window, EVENT_RESIZE, () => { + for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { + if (getComputedStyle(element).position !== 'fixed') { + Offcanvas.getOrCreateInstance(element).hide(); + } + } +}); +enableDismissTrigger(Offcanvas); +defineJQueryPlugin(Offcanvas); +const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; +const DefaultAllowlist = { + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + 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: [] +}; +const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); +const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; +const allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); +}; +function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === 'function') { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; +} +const NAME$5 = 'TemplateFactory'; +const Default$4 = { + allowList: DefaultAllowlist, + content: {}, + extraClass: '', + html: false, + sanitize: true, + sanitizeFn: null, + template: '
    ' +}; +const DefaultType$4 = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' +}; +const DefaultContentType = { + entry: '(string|element|function|null)', + selector: '(string|element)' +}; +class TemplateFactory extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + static get Default() { + return Default$4; + } + static get DefaultType() { + return DefaultType$4; + } + static get NAME() { + return NAME$5; + } + getContent() { + return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content) { + this._checkContent(content); + this._config.content = { + ...this._config.content, + ...content + }; + return this; + } + toHtml() { + const templateWrapper = document.createElement('div'); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(' ')); + } + return template; + } + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content] of Object.entries(arg)) { + super._typeCheckConfig({ + selector, + entry: content + }, DefaultContentType); + } + } + _setContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template); + if (!templateElement) { + return; + } + content = this._resolvePossibleFunction(content); + if (!content) { + templateElement.remove(); + return; + } + if (isElement(content)) { + this._putElementInTemplate(getElement(content), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content); + return; + } + templateElement.textContent = content; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ''; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } +} +const NAME$4 = 'tooltip'; +const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); +const CLASS_NAME_FADE$2 = 'fade'; +const CLASS_NAME_MODAL = 'modal'; +const CLASS_NAME_SHOW$2 = 'show'; +const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; +const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; +const EVENT_MODAL_HIDE = 'hide.bs.modal'; +const TRIGGER_HOVER = 'hover'; +const TRIGGER_FOCUS = 'focus'; +const TRIGGER_CLICK = 'click'; +const TRIGGER_MANUAL = 'manual'; +const EVENT_HIDE$2 = 'hide'; +const EVENT_HIDDEN$2 = 'hidden'; +const EVENT_SHOW$2 = 'show'; +const EVENT_SHOWN$2 = 'shown'; +const EVENT_INSERTED = 'inserted'; +const EVENT_CLICK$1 = 'click'; +const EVENT_FOCUSIN$1 = 'focusin'; +const EVENT_FOCUSOUT$1 = 'focusout'; +const EVENT_MOUSEENTER = 'mouseenter'; +const EVENT_MOUSELEAVE = 'mouseleave'; +const AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: isRTL() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: isRTL() ? 'right' : 'left' +}; +const Default$3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: 'clippingParents', + container: false, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: false, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: '', + trigger: 'hover focus' +}; +const DefaultType$3 = { + 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 Tooltip extends BaseComponent { + constructor(element, config) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + static get Default() { + return Default$3; + } + static get DefaultType() { + return DefaultType$3; + } + static get NAME() { + return NAME$4; + } + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + this._activeTrigger.click = !this._activeTrigger.click; + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute('data-bs-original-title')) { + this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute('aria-describedby', tip.getAttribute('id')); + const { + container + } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW$2); + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + const complete = () => { + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW$2); + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute('aria-describedby'); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content) { + const tip = this._getTemplateFactory(content).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute('id', tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE$2); + } + return tip; + } + setContent(content) { + this._newContent = content; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content) { + if (this._templateFactory) { + this._templateFactory.changeContent(content); + } else { + this._templateFactory = new TemplateFactory({ + ...this._config, + content, + extraClass: this._resolvePossibleFunction(this._config.customClass) + }); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); + } + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + 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: true, + phase: 'beforeMain', + fn: data => { + this._getTipElement().setAttribute('data-popper-placement', data.state.placement); + } + }] + }; + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _setListeners() { + const triggers = this._config.trigger.split(' '); + for (const trigger of triggers) { + if (trigger === 'click') { + EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); + EventHandler.on(this._element, eventIn, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + EventHandler.on(this._element, eventOut, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute('title'); + if (!title) { + return; + } + if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { + this._element.setAttribute('aria-label', title); + } + this._element.setAttribute('data-bs-original-title', title); + this._element.removeAttribute('title'); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = { + ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = 'manual'; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + static jQueryInterface(config) { + return this.each(function () { + const data = Tooltip.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } +} +defineJQueryPlugin(Tooltip); +const NAME$3 = 'popover'; +const SELECTOR_TITLE = '.popover-header'; +const SELECTOR_CONTENT = '.popover-body'; +const Default$2 = { + ...Tooltip.Default, + content: '', + offset: [0, 8], + placement: 'right', + template: '', + trigger: 'click' +}; +const DefaultType$2 = { + ...Tooltip.DefaultType, + content: '(null|string|element|function)' +}; +class Popover extends Tooltip { + static get Default() { + return Default$2; + } + static get DefaultType() { + return DefaultType$2; + } + static get NAME() { + return NAME$3; + } + _isWithContent() { + return this._getTitle() || this._getContent(); + } + _getContentForTemplate() { + return { + [SELECTOR_TITLE]: this._getTitle(), + [SELECTOR_CONTENT]: this._getContent() + }; + } + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Popover.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } +} +defineJQueryPlugin(Popover); +const NAME$2 = 'scrollspy'; +const DATA_KEY$2 = 'bs.scrollspy'; +const EVENT_KEY$2 = `.${DATA_KEY$2}`; +const DATA_API_KEY = '.data-api'; +const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; +const EVENT_CLICK = `click${EVENT_KEY$2}`; +const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; +const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; +const CLASS_NAME_ACTIVE$1 = 'active'; +const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; +const SELECTOR_TARGET_LINKS = '[href]'; +const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; +const SELECTOR_NAV_LINKS = '.nav-link'; +const SELECTOR_NAV_ITEMS = '.nav-item'; +const SELECTOR_LIST_ITEMS = '.list-group-item'; +const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; +const SELECTOR_DROPDOWN = '.dropdown'; +const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; +const Default$1 = { + offset: null, + rootMargin: '0px 0px -25%', + smoothScroll: false, + target: null, + threshold: [0.1, 0.5, 1] +}; +const DefaultType$1 = { + offset: '(number|null)', + rootMargin: 'string', + smoothScroll: 'boolean', + target: 'element', + threshold: 'array' +}; +class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element, config); + this._targetLinks = new Map(); + this._observableSections = new Map(); + this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; + this._activeTarget = null; + this._observer = null; + this._previousScrollData = { + visibleEntryTop: 0, + parentScrollTop: 0 + }; + this.refresh(); + } + static get Default() { + return Default$1; + } + static get DefaultType() { + return DefaultType$1; + } + static get NAME() { + return NAME$2; + } + refresh() { + this._initializeTargetsAndObservables(); + this._maybeEnableSmoothScroll(); + if (this._observer) { + this._observer.disconnect(); + } else { + this._observer = this._getNewObserver(); + } + for (const section of this._observableSections.values()) { + this._observer.observe(section); + } + } + dispose() { + this._observer.disconnect(); + super.dispose(); + } + _configAfterMerge(config) { + config.target = getElement(config.target) || document.body; + config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; + if (typeof config.threshold === 'string') { + config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); + } + return config; + } + _maybeEnableSmoothScroll() { + if (!this._config.smoothScroll) { + return; + } + EventHandler.off(this._config.target, EVENT_CLICK); + EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { + const observableSection = this._observableSections.get(event.target.hash); + if (observableSection) { + event.preventDefault(); + const root = this._rootElement || window; + const height = observableSection.offsetTop - this._element.offsetTop; + if (root.scrollTo) { + root.scrollTo({ + top: height, + behavior: 'smooth' + }); + return; + } + root.scrollTop = height; + } + }); + } + _getNewObserver() { + const options = { + root: this._rootElement, + threshold: this._config.threshold, + rootMargin: this._config.rootMargin + }; + return new IntersectionObserver(entries => this._observerCallback(entries), options); + } + _observerCallback(entries) { + const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); + const activate = entry => { + this._previousScrollData.visibleEntryTop = entry.target.offsetTop; + this._process(targetElement(entry)); + }; + const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; + const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; + this._previousScrollData.parentScrollTop = parentScrollTop; + for (const entry of entries) { + if (!entry.isIntersecting) { + this._activeTarget = null; + this._clearActiveClass(targetElement(entry)); + continue; + } + const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; + if (userScrollsDown && entryIsLowerThanPrevious) { + activate(entry); + if (!parentScrollTop) { + return; + } + continue; + } + if (!userScrollsDown && !entryIsLowerThanPrevious) { + activate(entry); + } + } + } + _initializeTargetsAndObservables() { + this._targetLinks = new Map(); + this._observableSections = new Map(); + const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); + for (const anchor of targetLinks) { + if (!anchor.hash || isDisabled(anchor)) { + continue; + } + const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); + if (isVisible(observableSection)) { + this._targetLinks.set(decodeURI(anchor.hash), anchor); + this._observableSections.set(anchor.hash, observableSection); + } + } + } + _process(target) { + if (this._activeTarget === target) { + return; + } + this._clearActiveClass(this._config.target); + this._activeTarget = target; + target.classList.add(CLASS_NAME_ACTIVE$1); + this._activateParents(target); + EventHandler.trigger(this._element, EVENT_ACTIVATE, { + relatedTarget: target + }); + } + _activateParents(target) { + if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); + return; + } + for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { + for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { + item.classList.add(CLASS_NAME_ACTIVE$1); + } + } + } + _clearActiveClass(parent) { + parent.classList.remove(CLASS_NAME_ACTIVE$1); + const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); + for (const node of activeNodes) { + node.classList.remove(CLASS_NAME_ACTIVE$1); + } + } + static jQueryInterface(config) { + return this.each(function () { + const data = ScrollSpy.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } +} +EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { + for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { + ScrollSpy.getOrCreateInstance(spy); + } +}); +defineJQueryPlugin(ScrollSpy); +const NAME$1 = 'tab'; +const DATA_KEY$1 = 'bs.tab'; +const EVENT_KEY$1 = `.${DATA_KEY$1}`; +const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; +const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; +const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; +const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; +const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; +const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; +const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; +const ARROW_LEFT_KEY = 'ArrowLeft'; +const ARROW_RIGHT_KEY = 'ArrowRight'; +const ARROW_UP_KEY = 'ArrowUp'; +const ARROW_DOWN_KEY = 'ArrowDown'; +const HOME_KEY = 'Home'; +const END_KEY = 'End'; +const CLASS_NAME_ACTIVE = 'active'; +const CLASS_NAME_FADE$1 = 'fade'; +const CLASS_NAME_SHOW$1 = 'show'; +const CLASS_DROPDOWN = 'dropdown'; +const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; +const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; +const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'; +const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; +const SELECTOR_OUTER = '.nav-item, .list-group-item'; +const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; +const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; +const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; +const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; +class Tab extends BaseComponent { + constructor(element) { + super(element); + this._parent = this._element.closest(SELECTOR_TAB_PANEL); + if (!this._parent) { + return; + } + this._setInitialAttributes(this._parent, this._getChildren()); + EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); + } + static get NAME() { + return NAME$1; + } + show() { + const innerElem = this._element; + if (this._elemIsActive(innerElem)) { + return; + } + const active = this._getActiveElem(); + const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { + relatedTarget: innerElem + }) : null; + const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { + relatedTarget: active + }); + if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { + return; + } + this._deactivate(active, innerElem); + this._activate(innerElem, active); + } + _activate(element, relatedElem) { + if (!element) { + return; + } + element.classList.add(CLASS_NAME_ACTIVE); + this._activate(SelectorEngine.getElementFromSelector(element)); + const complete = () => { + if (element.getAttribute('role') !== 'tab') { + element.classList.add(CLASS_NAME_SHOW$1); + return; + } + element.removeAttribute('tabindex'); + element.setAttribute('aria-selected', true); + this._toggleDropDown(element, true); + EventHandler.trigger(element, EVENT_SHOWN$1, { + relatedTarget: relatedElem + }); + }; + this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); + } + _deactivate(element, relatedElem) { + if (!element) { + return; + } + element.classList.remove(CLASS_NAME_ACTIVE); + element.blur(); + this._deactivate(SelectorEngine.getElementFromSelector(element)); + const complete = () => { + if (element.getAttribute('role') !== 'tab') { + element.classList.remove(CLASS_NAME_SHOW$1); + return; + } + element.setAttribute('aria-selected', false); + element.setAttribute('tabindex', '-1'); + this._toggleDropDown(element, false); + EventHandler.trigger(element, EVENT_HIDDEN$1, { + relatedTarget: relatedElem + }); + }; + this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); + } + _keydown(event) { + if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { + return; + } + event.stopPropagation(); + event.preventDefault(); + const children = this._getChildren().filter(element => !isDisabled(element)); + let nextActiveElement; + if ([HOME_KEY, END_KEY].includes(event.key)) { + nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; + } else { + const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); + nextActiveElement = getNextActiveElement(children, event.target, isNext, true); + } + if (nextActiveElement) { + nextActiveElement.focus({ + preventScroll: true + }); + Tab.getOrCreateInstance(nextActiveElement).show(); + } + } + _getChildren() { + return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); + } + _getActiveElem() { + return this._getChildren().find(child => this._elemIsActive(child)) || null; + } + _setInitialAttributes(parent, children) { + this._setAttributeIfNotExists(parent, 'role', 'tablist'); + for (const child of children) { + this._setInitialAttributesOnChild(child); + } + } + _setInitialAttributesOnChild(child) { + child = this._getInnerElement(child); + const isActive = this._elemIsActive(child); + const outerElem = this._getOuterElement(child); + child.setAttribute('aria-selected', isActive); + if (outerElem !== child) { + this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); + } + if (!isActive) { + child.setAttribute('tabindex', '-1'); + } + this._setAttributeIfNotExists(child, 'role', 'tab'); + this._setInitialAttributesOnTargetPanel(child); + } + _setInitialAttributesOnTargetPanel(child) { + const target = SelectorEngine.getElementFromSelector(child); + if (!target) { + return; + } + this._setAttributeIfNotExists(target, 'role', 'tabpanel'); + if (child.id) { + this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); + } + } + _toggleDropDown(element, open) { + const outerElem = this._getOuterElement(element); + if (!outerElem.classList.contains(CLASS_DROPDOWN)) { + return; + } + const toggle = (selector, className) => { + const element = SelectorEngine.findOne(selector, outerElem); + if (element) { + element.classList.toggle(className, open); + } + }; + toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); + toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); + outerElem.setAttribute('aria-expanded', open); + } + _setAttributeIfNotExists(element, attribute, value) { + if (!element.hasAttribute(attribute)) { + element.setAttribute(attribute, value); + } + } + _elemIsActive(elem) { + return elem.classList.contains(CLASS_NAME_ACTIVE); + } + _getInnerElement(elem) { + return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); + } + _getOuterElement(elem) { + return elem.closest(SELECTOR_OUTER) || elem; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Tab.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } +} +EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + Tab.getOrCreateInstance(this).show(); +}); +EventHandler.on(window, EVENT_LOAD_DATA_API, () => { + for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { + Tab.getOrCreateInstance(element); + } +}); +defineJQueryPlugin(Tab); +const NAME = 'toast'; +const DATA_KEY = 'bs.toast'; +const EVENT_KEY = `.${DATA_KEY}`; +const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; +const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; +const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; +const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; +const EVENT_HIDE = `hide${EVENT_KEY}`; +const EVENT_HIDDEN = `hidden${EVENT_KEY}`; +const EVENT_SHOW = `show${EVENT_KEY}`; +const EVENT_SHOWN = `shown${EVENT_KEY}`; +const CLASS_NAME_FADE = 'fade'; +const CLASS_NAME_HIDE = 'hide'; +const CLASS_NAME_SHOW = 'show'; +const CLASS_NAME_SHOWING = 'showing'; +const DefaultType = { + animation: 'boolean', + autohide: 'boolean', + delay: 'number' +}; +const Default = { + animation: true, + autohide: true, + delay: 5000 +}; +class Toast extends BaseComponent { + constructor(element, config) { + super(element, config); + this._timeout = null; + this._hasMouseInteraction = false; + this._hasKeyboardInteraction = false; + this._setListeners(); + } + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + show() { + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); + if (showEvent.defaultPrevented) { + return; + } + this._clearTimeout(); + if (this._config.animation) { + this._element.classList.add(CLASS_NAME_FADE); + } + const complete = () => { + this._element.classList.remove(CLASS_NAME_SHOWING); + EventHandler.trigger(this._element, EVENT_SHOWN); + this._maybeScheduleHide(); + }; + this._element.classList.remove(CLASS_NAME_HIDE); + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); + this._queueCallback(complete, this._element, this._config.animation); + } + hide() { + if (!this.isShown()) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); + if (hideEvent.defaultPrevented) { + return; + } + const complete = () => { + this._element.classList.add(CLASS_NAME_HIDE); + this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); + EventHandler.trigger(this._element, EVENT_HIDDEN); + }; + this._element.classList.add(CLASS_NAME_SHOWING); + this._queueCallback(complete, this._element, this._config.animation); + } + dispose() { + this._clearTimeout(); + if (this.isShown()) { + this._element.classList.remove(CLASS_NAME_SHOW); + } + super.dispose(); + } + isShown() { + return this._element.classList.contains(CLASS_NAME_SHOW); + } + _maybeScheduleHide() { + if (!this._config.autohide) { + return; + } + if (this._hasMouseInteraction || this._hasKeyboardInteraction) { + return; + } + this._timeout = setTimeout(() => { + this.hide(); + }, this._config.delay); + } + _onInteraction(event, isInteracting) { + switch (event.type) { + case 'mouseover': + case 'mouseout': + { + this._hasMouseInteraction = isInteracting; + break; + } + case 'focusin': + case 'focusout': + { + this._hasKeyboardInteraction = isInteracting; + break; + } + } + if (isInteracting) { + this._clearTimeout(); + return; + } + const nextElement = event.relatedTarget; + if (this._element === nextElement || this._element.contains(nextElement)) { + return; + } + this._maybeScheduleHide(); + } + _setListeners() { + EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); + EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); + EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); + EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); + } + _clearTimeout() { + clearTimeout(this._timeout); + this._timeout = null; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Toast.getOrCreateInstance(this, config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + } + }); + } +} +enableDismissTrigger(Toast); +defineJQueryPlugin(Toast); + +var dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')); +dropdownTriggerList.map(function (dropdownTriggerEl) { + var options = { + boundary: dropdownTriggerEl.getAttribute('data-bs-boundary') === 'viewport' ? document.querySelector('.btn') : 'clippingParents' + }; + return new Dropdown(dropdownTriggerEl, options); +}); + +var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); +tooltipTriggerList.map(function (tooltipTriggerEl) { + var _ref, _tooltipTriggerEl$get; + var options = { + delay: { + show: 50, + hide: 50 + }, + html: (_ref = tooltipTriggerEl.getAttribute("data-bs-html") === "true") !== null && _ref !== void 0 ? _ref : false, + placement: (_tooltipTriggerEl$get = tooltipTriggerEl.getAttribute('data-bs-placement')) !== null && _tooltipTriggerEl$get !== void 0 ? _tooltipTriggerEl$get : 'auto' + }; + return new Tooltip(tooltipTriggerEl, options); +}); + +var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); +popoverTriggerList.map(function (popoverTriggerEl) { + var _ref, _popoverTriggerEl$get; + var options = { + delay: { + show: 50, + hide: 50 + }, + html: (_ref = popoverTriggerEl.getAttribute('data-bs-html') === "true") !== null && _ref !== void 0 ? _ref : false, + placement: (_popoverTriggerEl$get = popoverTriggerEl.getAttribute('data-bs-placement')) !== null && _popoverTriggerEl$get !== void 0 ? _popoverTriggerEl$get : 'auto' + }; + return new Popover(popoverTriggerEl, options); +}); + +var switchesTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]')); +switchesTriggerList.map(function (switchTriggerEl) { + switchTriggerEl.addEventListener('click', function (e) { + e.stopPropagation(); + switchTriggerEl.classList.toggle('active'); + }); +}); + +var toastsTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]')); +toastsTriggerList.map(function (toastTriggerEl) { + return new Toast(toastTriggerEl); +}); diff --git a/public/js/tabler.esm.min.js b/public/js/tabler.esm.min.js new file mode 100644 index 0000000..2f4015a --- /dev/null +++ b/public/js/tabler.esm.min.js @@ -0,0 +1,15 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +var e=new Map;function t(t){var s=e.get(t);s&&s.destroy()}function o(t){var s=e.get(t);s&&s.update()}var r=null;"undefined"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,s){return t&&Array.prototype.forEach.call(t.length?t:[t],(function(t){return function(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!e.has(t)){var s,i=null,n=window.getComputedStyle(t),r=(s=t.value,function(){o({testForHeightReduction:""===s||!t.value.startsWith(s),restoreTextAlign:null}),s=t.value}),a=function(s){t.removeEventListener("autosize:destroy",a),t.removeEventListener("autosize:update",l),t.removeEventListener("input",r),window.removeEventListener("resize",l),Object.keys(s).forEach((function(e){return t.style[e]=s[e]})),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",a),t.addEventListener("autosize:update",l),t.addEventListener("input",r),window.addEventListener("resize",l),t.style.overflowX="hidden",t.style.wordWrap="break-word",e.set(t,{destroy:a,update:l}),l()}function o(e){var s,r,a=e.restoreTextAlign,l=void 0===a?null:a,u=e.testForHeightReduction,c=void 0===u||u,h=n.overflowY;if(0!==t.scrollHeight&&("vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),c&&(s=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach((function(e){var t=e[0],s=e[1];t.style.scrollBehavior="auto",t.scrollTop=s,t.style.scrollBehavior=null}))}}(t),t.style.height=""),r="content-box"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),"none"!==n.maxHeight&&r>parseFloat(n.maxHeight)?("hidden"===n.overflowY&&(t.style.overflow="scroll"),r=parseFloat(n.maxHeight)):"hidden"!==n.overflowY&&(t.style.overflow="hidden"),t.style.height=r+"px",l&&(t.style.textAlign=l),s&&s(),i!==r&&(t.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),i=r),h!==n.overflow&&!l)){var d=n.textAlign;"hidden"===n.overflow&&(t.style.textAlign="start"===d?"end":"start"),o({restoreTextAlign:d,testForHeightReduction:!0})}}function l(){o({testForHeightReduction:!0,restoreTextAlign:null})}}(t)})),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r,elements=document.querySelectorAll('[data-bs-toggle="autosize"]');function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var s,i,n={},r=Object.keys(e);for(i=0;i=0||(n[s]=e[s]);return n}function IMask(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new IMask.InputMask(e,t)}elements.length&&elements.forEach((function(e){n(e)}));class ChangeDetails{constructor(e){Object.assign(this,{inserted:"",rawInserted:"",skip:!1,tailShift:0},e)}aggregate(e){return this.rawInserted+=e.rawInserted,this.skip=this.skip||e.skip,this.inserted+=e.inserted,this.tailShift+=e.tailShift,this}get offset(){return this.tailShift+this.inserted.length}}function isString(e){return"string"==typeof e||e instanceof String}IMask.ChangeDetails=ChangeDetails;const DIRECTION={NONE:"NONE",LEFT:"LEFT",FORCE_LEFT:"FORCE_LEFT",RIGHT:"RIGHT",FORCE_RIGHT:"FORCE_RIGHT"};function forceDirection(e){switch(e){case DIRECTION.LEFT:return DIRECTION.FORCE_LEFT;case DIRECTION.RIGHT:return DIRECTION.FORCE_RIGHT;default:return e}}function escapeRegExp(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function normalizePrepare(e){return Array.isArray(e)?e:[e,new ChangeDetails]}function objectIncludes(e,t){if(t===e)return!0;var s,i=Array.isArray(t),n=Array.isArray(e);if(i&&n){if(t.length!=e.length)return!1;for(s=0;s0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2?arguments[2]:void 0;this.value=e,this.from=t,this.stop=s}toString(){return this.value}extend(e){this.value+=String(e)}appendTo(e){return e.append(this.toString(),{tail:!0}).aggregate(e._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(e){Object.assign(this,e)}unshift(e){if(!this.value.length||null!=e&&this.from>=e)return"";const t=this.value[0];return this.value=this.value.slice(1),t}shift(){if(!this.value.length)return"";const e=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),e}}class Masked{constructor(e){this._value="",this._update(Object.assign({},Masked.DEFAULTS,e)),this.isInitialized=!0}updateOptions(e){Object.keys(e).length&&this.withValueRefresh(this._update.bind(this,e))}_update(e){Object.assign(this,e)}get state(){return{_value:this.value}}set state(e){this._value=e._value}reset(){this._value=""}get value(){return this._value}set value(e){this.resolve(e)}resolve(e){return this.reset(),this.append(e,{input:!0},""),this.doCommit(),this.value}get unmaskedValue(){return this.value}set unmaskedValue(e){this.reset(),this.append(e,{},""),this.doCommit()}get typedValue(){return this.doParse(this.value)}set typedValue(e){this.value=this.doFormat(e)}get rawInputValue(){return this.extractInput(0,this.value.length,{raw:!0})}set rawInputValue(e){this.reset(),this.append(e,{raw:!0},""),this.doCommit()}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(e,t){return e}totalInputPositions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return Math.min(this.value.length,t-e)}extractInput(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this.value.slice(e,t)}extractTail(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return new ContinuousTailDetails(this.extractInput(e,t),e)}appendTail(e){return isString(e)&&(e=new ContinuousTailDetails(String(e))),e.appendTo(this)}_appendCharRaw(e){return e?(this._value+=e,new ChangeDetails({inserted:e,rawInserted:e})):new ChangeDetails}_appendChar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;const i=this.state;let n;if([e,n]=normalizePrepare(this.doPrepare(e,t)),n=n.aggregate(this._appendCharRaw(e,t)),n.inserted){let e,r=!1!==this.doValidate(t);if(r&&null!=s){const t=this.state;!0===this.overwrite&&(e=s.state,s.unshift(this.value.length-n.tailShift));let i=this.appendTail(s);r=i.rawInserted===s.toString(),r&&i.inserted||"shift"!==this.overwrite||(this.state=t,e=s.state,s.shift(),i=this.appendTail(s),r=i.rawInserted===s.toString()),r&&i.inserted&&(this.state=t)}r||(n=new ChangeDetails,this.state=i,s&&e&&(s.state=e))}return n}_appendPlaceholder(){return new ChangeDetails}_appendEager(){return new ChangeDetails}append(e,t,s){if(!isString(e))throw new Error("value should be string");const i=new ChangeDetails,n=isString(s)?new ContinuousTailDetails(String(s)):s;null!=t&&t.tail&&(t._beforeTailState=this.state);for(let s=0;s0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this._value=this.value.slice(0,e)+this.value.slice(t),new ChangeDetails}withValueRefresh(e){if(this._refreshing||!this.isInitialized)return e();this._refreshing=!0;const t=this.rawInputValue,s=this.value,i=e();return this.rawInputValue=t,this.value&&this.value!==s&&0===s.indexOf(this.value)&&this.append(s.slice(this.value.length),{},""),delete this._refreshing,i}runIsolated(e){if(this._isolated||!this.isInitialized)return e(this);this._isolated=!0;const t=this.state,s=e(this);return this.state=t,delete this._isolated,s}doSkipInvalid(e){return this.skipInvalid}doPrepare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.prepare?this.prepare(e,this,t):e}doValidate(e){return(!this.validate||this.validate(this.value,this,e))&&(!this.parent||this.parent.doValidate(e))}doCommit(){this.commit&&this.commit(this.value,this)}doFormat(e){return this.format?this.format(e,this):e}doParse(e){return this.parse?this.parse(e,this):e}splice(e,t,s,i){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{input:!0};const r=e+t,a=this.extractTail(r),o=!0===this.eager||"remove"===this.eager;let l;o&&(i=forceDirection(i),l=this.extractInput(0,r,{raw:!0}));let u=e;const c=new ChangeDetails;if(i!==DIRECTION.NONE&&(u=this.nearestInputPos(e,t>1&&0!==e&&!o?DIRECTION.NONE:i),c.tailShift=u-e),c.aggregate(this.remove(u)),o&&i!==DIRECTION.NONE&&l===this.rawInputValue)if(i===DIRECTION.FORCE_LEFT){let e;for(;l===this.rawInputValue&&(e=this.value.length);)c.aggregate(new ChangeDetails({tailShift:-1})).aggregate(this.remove(e-1))}else i===DIRECTION.FORCE_RIGHT&&a.unshift();return c.aggregate(this.append(s,n,a))}maskEquals(e){return this.mask===e}typedValueEquals(e){const t=this.typedValue;return e===t||Masked.EMPTY_VALUES.includes(e)&&Masked.EMPTY_VALUES.includes(t)||this.doFormat(e)===this.doFormat(this.typedValue)}}function maskedClass(e){if(null==e)throw new Error("mask property should be defined");return e instanceof RegExp?IMask.MaskedRegExp:isString(e)?IMask.MaskedPattern:e instanceof Date||e===Date?IMask.MaskedDate:e instanceof Number||"number"==typeof e||e===Number?IMask.MaskedNumber:Array.isArray(e)||e===Array?IMask.MaskedDynamic:IMask.Masked&&e.prototype instanceof IMask.Masked?e:e instanceof IMask.Masked?e.constructor:e instanceof Function?IMask.MaskedFunction:(console.warn("Mask not found for mask",e),IMask.Masked)}function createMask(e){if(IMask.Masked&&e instanceof IMask.Masked)return e;const t=(e=Object.assign({},e)).mask;if(IMask.Masked&&t instanceof IMask.Masked)return t;const s=maskedClass(t);if(!s)throw new Error("Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.");return new s(e)}Masked.DEFAULTS={format:String,parse:e=>e,skipInvalid:!0},Masked.EMPTY_VALUES=[void 0,null,""],IMask.Masked=Masked,IMask.createMask=createMask;const _excluded$4=["parent","isOptional","placeholderChar","displayChar","lazy","eager"],DEFAULT_INPUT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./};class PatternInputDefinition{constructor(e){const{parent:t,isOptional:s,placeholderChar:i,displayChar:n,lazy:r,eager:a}=e,o=_objectWithoutPropertiesLoose(e,_excluded$4);this.masked=createMask(o),Object.assign(this,{parent:t,isOptional:s,placeholderChar:i,displayChar:n,lazy:r,eager:a})}reset(){this.isFilled=!1,this.masked.reset()}remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return 0===e&&t>=1?(this.isFilled=!1,this.masked.remove(e,t)):new ChangeDetails}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.isFilled)return new ChangeDetails;const s=this.masked.state,i=this.masked._appendChar(e,t);return i.inserted&&!1===this.doValidate(t)&&(i.inserted=i.rawInserted="",this.masked.state=s),i.inserted||this.isOptional||this.lazy||t.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(){return this.masked.append(...arguments)}_appendPlaceholder(){const e=new ChangeDetails;return this.isFilled||this.isOptional||(this.isFilled=!0,e.inserted=this.placeholderChar),e}_appendEager(){return new ChangeDetails}extractTail(){return this.masked.extractTail(...arguments)}appendTail(){return this.masked.appendTail(...arguments)}extractInput(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;return this.masked.extractInput(e,t,s)}nearestInputPos(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:DIRECTION.NONE;const s=this.value.length,i=Math.min(Math.max(e,0),s);switch(t){case DIRECTION.LEFT:case DIRECTION.FORCE_LEFT:return this.isComplete?i:0;case DIRECTION.RIGHT:case DIRECTION.FORCE_RIGHT:return this.isComplete?i:s;default:return i}}totalInputPositions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this.value.slice(e,t).length}doValidate(){return this.masked.doValidate(...arguments)&&(!this.parent||this.parent.doValidate(...arguments))}doCommit(){this.masked.doCommit()}get state(){return{masked:this.masked.state,isFilled:this.isFilled}}set state(e){this.masked.state=e.masked,this.isFilled=e.isFilled}}class PatternFixedDefinition{constructor(e){Object.assign(this,e),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return this._value=this._value.slice(0,e)+this._value.slice(t),this._value||(this._isRawInput=!1),new ChangeDetails}nearestInputPos(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:DIRECTION.NONE;const s=this._value.length;switch(t){case DIRECTION.LEFT:case DIRECTION.FORCE_LEFT:return 0;default:return s}}totalInputPositions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return this._isRawInput?t-e:0}extractInput(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).raw&&this._isRawInput&&this._value.slice(e,t)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=new ChangeDetails;if(this.isFilled)return s;const i=!0===this.eager||"append"===this.eager,n=this.char===e&&(this.isUnmasking||t.input||t.raw)&&(!t.raw||!i)&&!t.tail;return n&&(s.rawInserted=this.char),this._value=s.inserted=this.char,this._isRawInput=n&&(t.raw||t.input),s}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const e=new ChangeDetails;return this.isFilled||(this._value=e.inserted=this.char),e}extractTail(){return arguments.length>1&&void 0!==arguments[1]||this.value.length,new ContinuousTailDetails("")}appendTail(e){return isString(e)&&(e=new ContinuousTailDetails(String(e))),e.appendTo(this)}append(e,t,s){const i=this._appendChar(e[0],t);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_isRawInput:this._isRawInput}}set state(e){Object.assign(this,e)}}const _excluded$3=["chunks"];class ChunksTailDetails{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.chunks=e,this.from=t}toString(){return this.chunks.map(String).join("")}extend(e){if(!String(e))return;isString(e)&&(e=new ContinuousTailDetails(String(e)));const t=this.chunks[this.chunks.length-1],s=t&&(t.stop===e.stop||null==e.stop)&&e.from===t.from+t.toString().length;if(e instanceof ContinuousTailDetails)s?t.extend(e.toString()):this.chunks.push(e);else if(e instanceof ChunksTailDetails){if(null==e.stop){let t;for(;e.chunks.length&&null==e.chunks[0].stop;)t=e.chunks.shift(),t.from+=e.from,this.extend(t)}e.toString()&&(e.stop=e.blockIndex,this.chunks.push(e))}}appendTo(e){if(!(e instanceof IMask.MaskedPattern)){return new ContinuousTailDetails(this.toString()).appendTo(e)}const t=new ChangeDetails;for(let s=0;s=0){const s=e._appendPlaceholder(r);t.aggregate(s)}a=i instanceof ChunksTailDetails&&e._blocks[r]}if(a){const s=a.appendTail(i);s.skip=!1,t.aggregate(s),e._value+=s.inserted;const n=i.toString().slice(s.rawInserted.length);n&&t.aggregate(e.append(n,{tail:!0}))}else t.aggregate(e.append(i.toString(),{tail:!0}))}return t}get state(){return{chunks:this.chunks.map((e=>e.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(e){const{chunks:t}=e,s=_objectWithoutPropertiesLoose(e,_excluded$3);Object.assign(this,s),this.chunks=t.map((e=>{const t="chunks"in e?new ChunksTailDetails:new ContinuousTailDetails;return t.state=e,t}))}unshift(e){if(!this.chunks.length||null!=e&&this.from>=e)return"";const t=null!=e?e-this.from:e;let s=0;for(;s=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.value.length))}_pushLeft(e){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null===(t=this.block)||void 0===t?void 0:t.value.length)||0){var t;if(e())return this.ok=!0}return this.ok=!1}_pushRight(e){for(this.pushState(),this.bindBlock();this.index{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.FORCE_LEFT),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.LEFT),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.LEFT),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.FORCE_RIGHT),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.NONE),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,DIRECTION.NONE),!0}))}}class MaskedRegExp extends Masked{_update(e){e.mask&&(e.validate=t=>t.search(e.mask)>=0),super._update(e)}}IMask.MaskedRegExp=MaskedRegExp;const _excluded$2=["_blocks"];class MaskedPattern extends Masked{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.definitions=Object.assign({},DEFAULT_INPUT_DEFINITIONS,e.definitions),super(Object.assign({},MaskedPattern.DEFAULTS,e))}_update(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.definitions=Object.assign({},this.definitions,e.definitions),super._update(e),this._rebuildMask()}_rebuildMask(){const e=this.definitions;this._blocks=[],this._stops=[],this._maskedBlocks={};let t=this.mask;if(!t||!e)return;let s=!1,i=!1;for(let a=0;a0===e.indexOf(t)));s.sort(((e,t)=>t.length-e.length));const i=s[0];if(i){const e=createMask(Object.assign({parent:this,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite},this.blocks[i]));e&&(this._blocks.push(e),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),a+=i.length-1;continue}}let o=t[a],l=o in e;if(o===MaskedPattern.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===o||"}"===o){s=!s;continue}if("["===o||"]"===o){i=!i;continue}if(o===MaskedPattern.ESCAPE_CHAR){if(++a,o=t[a],!o)break;l=!1}const u=null===(n=e[o])||void 0===n||!n.mask||(null===(r=e[o])||void 0===r?void 0:r.mask.prototype)instanceof IMask.Masked?{mask:e[o]}:e[o],c=l?new PatternInputDefinition(Object.assign({parent:this,isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar},u)):new PatternFixedDefinition({char:o,eager:this.eager,isUnmasking:s});this._blocks.push(c)}}get state(){return Object.assign({},super.state,{_blocks:this._blocks.map((e=>e.state))})}set state(e){const{_blocks:t}=e,s=_objectWithoutPropertiesLoose(e,_excluded$2);this._blocks.forEach(((e,s)=>e.state=t[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((e=>e.reset()))}get isComplete(){return this._blocks.every((e=>e.isComplete))}get isFilled(){return this._blocks.every((e=>e.isFilled))}get isFixed(){return this._blocks.every((e=>e.isFixed))}get isOptional(){return this._blocks.every((e=>e.isOptional))}doCommit(){this._blocks.forEach((e=>e.doCommit())),super.doCommit()}get unmaskedValue(){return this._blocks.reduce(((e,t)=>e+t.unmaskedValue),"")}set unmaskedValue(e){super.unmaskedValue=e}get value(){return this._blocks.reduce(((e,t)=>e+t.value),"")}set value(e){super.value=e}get displayValue(){return this._blocks.reduce(((e,t)=>e+t.displayValue),"")}appendTail(e){return super.appendTail(e).aggregate(this._appendPlaceholder())}_appendEager(){var e;const t=new ChangeDetails;let s=null===(e=this._mapPosToBlock(this.value.length))||void 0===e?void 0:e.index;if(null==s)return t;this._blocks[s].isFilled&&++s;for(let e=s;e1&&void 0!==arguments[1]?arguments[1]:{};const s=this._mapPosToBlock(this.value.length),i=new ChangeDetails;if(!s)return i;for(let a=s.index;;++a){var n,r;const s=this._blocks[a];if(!s)break;const o=s._appendChar(e,Object.assign({},t,{_beforeTailState:null===(n=t._beforeTailState)||void 0===n||null===(r=n._blocks)||void 0===r?void 0:r[a]})),l=o.skip;if(i.aggregate(o),l||o.rawInserted)break}return i}extractTail(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;const s=new ChunksTailDetails;return e===t||this._forEachBlocksInRange(e,t,((e,t,i,n)=>{const r=e.extractTail(i,n);r.stop=this._findStopBefore(t),r.from=this._blockStartPos(t),r instanceof ChunksTailDetails&&(r.blockIndex=t),s.extend(r)})),s}extractInput(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e===t)return"";let i="";return this._forEachBlocksInRange(e,t,((e,t,n,r)=>{i+=e.extractInput(n,r,s)})),i}_findStopBefore(e){let t;for(let s=0;s{if(!s.lazy||null!=e){const e=null!=s._blocks?[s._blocks.length]:[],i=s._appendPlaceholder(...e);this._value+=i.inserted,t.aggregate(i)}})),t}_mapPosToBlock(e){let t="";for(let s=0;se+t.value.length),0)}_forEachBlocksInRange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;const i=this._mapPosToBlock(e);if(i){const e=this._mapPosToBlock(t),n=e&&i.index===e.index,r=i.offset,a=e&&n?e.offset:this._blocks[i.index].value.length;if(s(this._blocks[i.index],i.index,r,a),e&&!n){for(let t=i.index+1;t0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;const s=super.remove(e,t);return this._forEachBlocksInRange(e,t,((e,t,i,n)=>{s.aggregate(e.remove(i,n))})),s}nearestInputPos(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:DIRECTION.NONE;if(!this._blocks.length)return 0;const s=new PatternCursor(this,e);if(t===DIRECTION.NONE)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.value.length);if(t===DIRECTION.LEFT||t===DIRECTION.FORCE_LEFT){if(t===DIRECTION.LEFT){if(s.pushRightBeforeFilled(),s.ok&&s.pos===e)return e;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),t===DIRECTION.LEFT){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=e)return s.pos;if(s.popState(),s.ok&&s.pos<=e)return s.pos;s.popState()}return s.ok?s.pos:t===DIRECTION.FORCE_LEFT?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return t===DIRECTION.RIGHT||t===DIRECTION.FORCE_RIGHT?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:t===DIRECTION.FORCE_RIGHT?this.value.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(e,DIRECTION.LEFT)))):e}totalInputPositions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=0;return this._forEachBlocksInRange(e,t,((e,t,i,n)=>{s+=e.totalInputPositions(i,n)})),s}maskedBlock(e){return this.maskedBlocks(e)[0]}maskedBlocks(e){const t=this._maskedBlocks[e];return t?t.map((e=>this._blocks[e])):[]}}MaskedPattern.DEFAULTS={lazy:!0,placeholderChar:"_"},MaskedPattern.STOP_CHAR="`",MaskedPattern.ESCAPE_CHAR="\\",MaskedPattern.InputDefinition=PatternInputDefinition,MaskedPattern.FixedDefinition=PatternFixedDefinition,IMask.MaskedPattern=MaskedPattern;class MaskedRange extends MaskedPattern{get _matchFrom(){return this.maxLength-String(this.from).length}_update(e){e=Object.assign({to:this.to||0,from:this.from||0,maxLength:this.maxLength||0},e);let t=String(e.to).length;null!=e.maxLength&&(t=Math.max(t,e.maxLength)),e.maxLength=t;const s=String(e.from).padStart(t,"0"),i=String(e.to).padStart(t,"0");let n=0;for(;n1&&void 0!==arguments[1]?arguments[1]:{};if([e,t]=normalizePrepare(super.doPrepare(e.replace(/\D/g,""),s)),!this.autofix||!e)return e;const i=String(this.from).padStart(this.maxLength,"0"),n=String(this.to).padStart(this.maxLength,"0");let r=this.value+e;if(r.length>this.maxLength)return"";const[a,o]=this.boundaries(r);return Number(o)this.to?"pad"===this.autofix&&r.length{const s=e.blocks[t];!("autofix"in s)&&"autofix"in e&&(s.autofix=e.autofix)})),super._update(e)}doValidate(){const e=this.date;return super.doValidate(...arguments)&&(!this.isComplete||this.isDateExist(this.value)&&null!=e&&(null==this.min||this.min<=e)&&(null==this.max||e<=this.max))}isDateExist(e){return this.format(this.parse(e,this),this).indexOf(e)>=0}get date(){return this.typedValue}set date(e){this.typedValue=e}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(e){super.typedValue=e}maskEquals(e){return e===Date||super.maskEquals(e)}}MaskedDate.DEFAULTS={pattern:"d{.}`m{.}`Y",format:e=>{if(!e)return"";return[String(e.getDate()).padStart(2,"0"),String(e.getMonth()+1).padStart(2,"0"),e.getFullYear()].join(".")},parse:e=>{const[t,s,i]=e.split(".");return new Date(i,s-1,t)}},MaskedDate.GET_DEFAULT_BLOCKS=()=>({d:{mask:MaskedRange,from:1,to:31,maxLength:2},m:{mask:MaskedRange,from:1,to:12,maxLength:2},Y:{mask:MaskedRange,from:1900,to:9999}}),IMask.MaskedDate=MaskedDate;class MaskElement{get selectionStart(){let e;try{e=this._unsafeSelectionStart}catch(e){}return null!=e?e:this.value.length}get selectionEnd(){let e;try{e=this._unsafeSelectionEnd}catch(e){}return null!=e?e:this.value.length}select(e,t){if(null!=e&&null!=t&&(e!==this.selectionStart||t!==this.selectionEnd))try{this._unsafeSelect(e,t)}catch(e){}}_unsafeSelect(e,t){}get isActive(){return!1}bindEvents(e){}unbindEvents(){}}IMask.MaskElement=MaskElement;class HTMLMaskElement extends MaskElement{constructor(e){super(),this.input=e,this._handlers={}}get rootElement(){var e,t,s;return null!==(e=null===(t=(s=this.input).getRootNode)||void 0===t?void 0:t.call(s))&&void 0!==e?e:document}get isActive(){return this.input===this.rootElement.activeElement}get _unsafeSelectionStart(){return this.input.selectionStart}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(e,t){this.input.setSelectionRange(e,t)}get value(){return this.input.value}set value(e){this.input.value=e}bindEvents(e){Object.keys(e).forEach((t=>this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[t],e[t])))}unbindEvents(){Object.keys(this._handlers).forEach((e=>this._toggleEventHandler(e)))}_toggleEventHandler(e,t){this._handlers[e]&&(this.input.removeEventListener(e,this._handlers[e]),delete this._handlers[e]),t&&(this.input.addEventListener(e,t),this._handlers[e]=t)}}HTMLMaskElement.EVENTS_MAP={selectionChange:"keydown",input:"input",drop:"drop",click:"click",focus:"focus",commit:"blur"},IMask.HTMLMaskElement=HTMLMaskElement;class HTMLContenteditableMaskElement extends HTMLMaskElement{get _unsafeSelectionStart(){const e=this.rootElement,t=e.getSelection&&e.getSelection(),s=t&&t.anchorOffset,i=t&&t.focusOffset;return null==i||null==s||si?s:i}_unsafeSelect(e,t){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,e),s.setEnd(this.input.lastChild||this.input,t);const i=this.rootElement,n=i.getSelection&&i.getSelection();n&&(n.removeAllRanges(),n.addRange(s))}get value(){return this.input.textContent}set value(e){this.input.textContent=e}}IMask.HTMLContenteditableMaskElement=HTMLContenteditableMaskElement;const _excluded$1=["mask"];class InputMask{constructor(e,t){this.el=e instanceof MaskElement?e:e.isContentEditable&&"INPUT"!==e.tagName&&"TEXTAREA"!==e.tagName?new HTMLContenteditableMaskElement(e):new HTMLMaskElement(e),this.masked=createMask(t),this._listeners={},this._value="",this._unmaskedValue="",this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}get mask(){return this.masked.mask}maskEquals(e){var t;return null==e||(null===(t=this.masked)||void 0===t?void 0:t.maskEquals(e))}set mask(e){if(this.maskEquals(e))return;if(!(e instanceof IMask.Masked)&&this.masked.constructor===maskedClass(e))return void this.masked.updateOptions({mask:e});const t=createMask({mask:e});t.unmaskedValue=this.masked.unmaskedValue,this.masked=t}get value(){return this._value}set value(e){this.value!==e&&(this.masked.value=e,this.updateControl(),this.alignCursor())}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(e){this.unmaskedValue!==e&&(this.masked.unmaskedValue=e,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(e){this.masked.typedValueEquals(e)||(this.masked.typedValue=e,this.updateControl(),this.alignCursor())}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;ie(...s)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(e){this.el&&this.el.isActive&&(this.el.select(e,e),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value}updateControl(){const e=this.masked.unmaskedValue,t=this.masked.value,s=this.displayValue,i=this.unmaskedValue!==e||this.value!==t;this._unmaskedValue=e,this._value=t,this.el.value!==s&&(this.el.value=s),i&&this._fireChangeEvents()}updateOptions(e){const{mask:t}=e,s=_objectWithoutPropertiesLoose(e,_excluded$1),i=!this.maskEquals(t),n=!objectIncludes(this.masked,s);i&&(this.mask=t),n&&this.masked.updateOptions(s),(i||n)&&this.updateControl()}updateCursor(e){null!=e&&(this.cursorPos=e,this._delayUpdateCursor(e))}_delayUpdateCursor(e){this._abortUpdateCursor(),this._changingCursorPos=e,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,DIRECTION.LEFT))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(e,t){return this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t),this}off(e,t){if(!this._listeners[e])return this;if(!t)return delete this._listeners[e],this;const s=this._listeners[e].indexOf(t);return s>=0&&this._listeners[e].splice(s,1),this}_onInput(e){if(this._inputEvent=e,this._abortUpdateCursor(),!this._selection)return this.updateValue();const t=new ActionDetails(this.el.value,this.cursorPos,this.displayValue,this._selection),s=this.masked.rawInputValue,i=this.masked.splice(t.startChangePos,t.removed.length,t.inserted,t.removeDirection,{input:!0,raw:!0}).offset,n=s===this.masked.rawInputValue?t.removeDirection:DIRECTION.NONE;let r=this.masked.nearestInputPos(t.startChangePos+i,n);n!==DIRECTION.NONE&&(r=this.masked.nearestInputPos(r,DIRECTION.NONE)),this.updateControl(),this.updateCursor(r),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(e){e.preventDefault(),e.stopPropagation()}_onFocus(e){this.alignCursorFriendly()}_onClick(e){this.alignCursorFriendly()}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}}IMask.InputMask=InputMask;class MaskedEnum extends MaskedPattern{_update(e){e.enum&&(e.mask="*".repeat(e.enum[0].length)),super._update(e)}doValidate(){return this.enum.some((e=>e.indexOf(this.unmaskedValue)>=0))&&super.doValidate(...arguments)}}IMask.MaskedEnum=MaskedEnum;class MaskedNumber extends Masked{constructor(e){super(Object.assign({},MaskedNumber.DEFAULTS,e))}_update(e){super._update(e),this._updateRegExps()}_updateRegExps(){let e="^"+(this.allowNegative?"[+|\\-]?":""),t=(this.scale?"(".concat(escapeRegExp(this.radix),"\\d{0,").concat(this.scale,"})?"):"")+"$";this._numberRegExp=new RegExp(e+"\\d*"+t),this._mapToRadixRegExp=new RegExp("[".concat(this.mapToRadix.map(escapeRegExp).join(""),"]"),"g"),this._thousandsSeparatorRegExp=new RegExp(escapeRegExp(this.thousandsSeparator),"g")}_removeThousandsSeparators(e){return e.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(e){const t=e.split(this.radix);return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),t.join(this.radix)}doPrepare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(t.input&&t.raw||!t.input&&!t.raw)?e.replace(this._mapToRadixRegExp,this.radix):e);const[s,i]=normalizePrepare(super.doPrepare(e,t));return e&&!s&&(i.skip=!0),[s,i]}_separatorsCount(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=0;for(let i=0;i0&&void 0!==arguments[0]?arguments[0]:this._value;return this._separatorsCount(this._removeThousandsSeparators(e).length,!0)}extractInput(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;return[e,t]=this._adjustRangeWithSeparators(e,t),this._removeThousandsSeparators(super.extractInput(e,t,s))}_appendCharRaw(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.thousandsSeparator)return super._appendCharRaw(e,t);const s=t.tail&&t._beforeTailState?t._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const n=super._appendCharRaw(e,t);this._value=this._insertThousandsSeparators(this._value);const r=t.tail&&t._beforeTailState?t._beforeTailState._value:this._value,a=this._separatorsCountFromSlice(r);return n.tailShift+=(a-i)*this.thousandsSeparator.length,n.skip=!n.rawInserted&&e===this.thousandsSeparator,n}_findSeparatorAround(e){if(this.thousandsSeparator){const t=e-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,t);if(s<=e)return s}return-1}_adjustRangeWithSeparators(e,t){const s=this._findSeparatorAround(e);s>=0&&(e=s);const i=this._findSeparatorAround(t);return i>=0&&(t=i+this.thousandsSeparator.length),[e,t]}remove(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;[e,t]=this._adjustRangeWithSeparators(e,t);const s=this.value.slice(0,e),i=this.value.slice(t),n=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const r=this._separatorsCountFromSlice(s);return new ChangeDetails({tailShift:(r-n)*this.thousandsSeparator.length})}nearestInputPos(e,t){if(!this.thousandsSeparator)return e;switch(t){case DIRECTION.NONE:case DIRECTION.LEFT:case DIRECTION.FORCE_LEFT:{const s=this._findSeparatorAround(e-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(e=0)return t+this.thousandsSeparator.length}}return e}doValidate(e){let t=Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));if(t){const e=this.number;t=t&&!isNaN(e)&&(null==this.min||this.min>=0||this.min<=this.number)&&(null==this.max||this.max<=0||this.number<=this.max)}return t&&super.doValidate(e)}doCommit(){if(this.value){const e=this.number;let t=e;null!=this.min&&(t=Math.max(t,this.min)),null!=this.max&&(t=Math.min(t,this.max)),t!==e&&(this.unmaskedValue=this.doFormat(t));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(e){const t=this._removeThousandsSeparators(e).split(this.radix);return t[0]=t[0].replace(/^(\D*)(0*)(\d*)/,((e,t,s,i)=>t+i)),e.length&&!/\d$/.test(t[0])&&(t[0]=t[0]+"0"),t.length>1&&(t[1]=t[1].replace(/0*$/,""),t[1].length||(t.length=1)),this._insertThousandsSeparators(t.join(this.radix))}_padFractionalZeros(e){if(!e)return e;const t=e.split(this.radix);return t.length<2&&t.push(""),t[1]=t[1].padEnd(this.scale,"0"),t.join(this.radix)}doSkipInvalid(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;const i=0===this.scale&&e!==this.thousandsSeparator&&(e===this.radix||e===MaskedNumber.UNMASKED_RADIX||this.mapToRadix.includes(e));return super.doSkipInvalid(e,t,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,MaskedNumber.UNMASKED_RADIX)}set unmaskedValue(e){super.unmaskedValue=e}get typedValue(){return this.doParse(this.unmaskedValue)}set typedValue(e){this.rawInputValue=this.doFormat(e).replace(MaskedNumber.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(e){this.typedValue=e}get allowNegative(){return this.signed||null!=this.min&&this.min<0||null!=this.max&&this.max<0}typedValueEquals(e){return(super.typedValueEquals(e)||MaskedNumber.EMPTY_VALUES.includes(e)&&MaskedNumber.EMPTY_VALUES.includes(this.typedValue))&&!(0===e&&""===this.value)}}MaskedNumber.UNMASKED_RADIX=".",MaskedNumber.DEFAULTS={radix:",",thousandsSeparator:"",mapToRadix:[MaskedNumber.UNMASKED_RADIX],scale:2,signed:!1,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:e=>e.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},MaskedNumber.EMPTY_VALUES=[...Masked.EMPTY_VALUES,0],IMask.MaskedNumber=MaskedNumber;class MaskedFunction extends Masked{_update(e){e.mask&&(e.validate=e.mask),super._update(e)}}IMask.MaskedFunction=MaskedFunction;const _excluded=["compiledMasks","currentMaskRef","currentMask"],_excluded2=["mask"];class MaskedDynamic extends Masked{constructor(e){super(Object.assign({},MaskedDynamic.DEFAULTS,e)),this.currentMask=null}_update(e){super._update(e),"mask"in e&&(this.compiledMasks=Array.isArray(e.mask)?e.mask.map((e=>createMask(e))):[])}_appendCharRaw(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=this._applyDispatch(e,t);return this.currentMask&&s.aggregate(this.currentMask._appendChar(e,this.currentMaskFlags(t))),s}_applyDispatch(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";const i=t.tail&&null!=t._beforeTailState?t._beforeTailState._value:this.value,n=this.rawInputValue,r=t.tail&&null!=t._beforeTailState?t._beforeTailState._rawInputValue:n,a=n.slice(r.length),o=this.currentMask,l=new ChangeDetails,u=null==o?void 0:o.state;if(this.currentMask=this.doDispatch(e,Object.assign({},t),s),this.currentMask)if(this.currentMask!==o){if(this.currentMask.reset(),r){const e=this.currentMask.append(r,{raw:!0});l.tailShift=e.inserted.length-i.length}a&&(l.tailShift+=this.currentMask.append(a,{raw:!0,tail:!0}).tailShift)}else this.currentMask.state=u;return l}_appendPlaceholder(){const e=this._applyDispatch(...arguments);return this.currentMask&&e.aggregate(this.currentMask._appendPlaceholder()),e}_appendEager(){const e=this._applyDispatch(...arguments);return this.currentMask&&e.aggregate(this.currentMask._appendEager()),e}appendTail(e){const t=new ChangeDetails;return e&&t.aggregate(this._applyDispatch("",{},e)),t.aggregate(this.currentMask?this.currentMask.appendTail(e):super.appendTail(e))}currentMaskFlags(e){var t,s;return Object.assign({},e,{_beforeTailState:(null===(t=e._beforeTailState)||void 0===t?void 0:t.currentMaskRef)===this.currentMask&&(null===(s=e._beforeTailState)||void 0===s?void 0:s.currentMask)||e._beforeTailState})}doDispatch(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return this.dispatch(e,this,t,s)}doValidate(e){return super.doValidate(e)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(e)))}doPrepare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[s,i]=normalizePrepare(super.doPrepare(e,t));if(this.currentMask){let e;[s,e]=normalizePrepare(super.doPrepare(s,this.currentMaskFlags(t))),i=i.aggregate(e)}return[s,i]}reset(){var e;null===(e=this.currentMask)||void 0===e||e.reset(),this.compiledMasks.forEach((e=>e.reset()))}get value(){return this.currentMask?this.currentMask.value:""}set value(e){super.value=e}get unmaskedValue(){return this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(e){super.unmaskedValue=e}get typedValue(){return this.currentMask?this.currentMask.typedValue:""}set typedValue(e){let t=String(e);this.currentMask&&(this.currentMask.typedValue=e,t=this.currentMask.unmaskedValue),this.unmaskedValue=t}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var e;return Boolean(null===(e=this.currentMask)||void 0===e?void 0:e.isComplete)}get isFilled(){var e;return Boolean(null===(e=this.currentMask)||void 0===e?void 0:e.isFilled)}remove(){const e=new ChangeDetails;return this.currentMask&&e.aggregate(this.currentMask.remove(...arguments)).aggregate(this._applyDispatch()),e}get state(){var e;return Object.assign({},super.state,{_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((e=>e.state)),currentMaskRef:this.currentMask,currentMask:null===(e=this.currentMask)||void 0===e?void 0:e.state})}set state(e){const{compiledMasks:t,currentMaskRef:s,currentMask:i}=e,n=_objectWithoutPropertiesLoose(e,_excluded);this.compiledMasks.forEach(((e,s)=>e.state=t[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=n}extractInput(){return this.currentMask?this.currentMask.extractInput(...arguments):""}extractTail(){return this.currentMask?this.currentMask.extractTail(...arguments):super.extractTail(...arguments)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(){return this.currentMask?this.currentMask.nearestInputPos(...arguments):super.nearestInputPos(...arguments)}get overwrite(){return this.currentMask?this.currentMask.overwrite:super.overwrite}set overwrite(e){console.warn('"overwrite" option is not available in dynamic mask, use this option in siblings')}get eager(){return this.currentMask?this.currentMask.eager:super.eager}set eager(e){console.warn('"eager" option is not available in dynamic mask, use this option in siblings')}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:super.skipInvalid}set skipInvalid(e){(this.isInitialized||e!==Masked.DEFAULTS.skipInvalid)&&console.warn('"skipInvalid" option is not available in dynamic mask, use this option in siblings')}maskEquals(e){return Array.isArray(e)&&this.compiledMasks.every(((t,s)=>{if(!e[s])return;const i=e[s],{mask:n}=i;return objectIncludes(t,_objectWithoutPropertiesLoose(i,_excluded2))&&t.maskEquals(n)}))}typedValueEquals(e){var t;return Boolean(null===(t=this.currentMask)||void 0===t?void 0:t.typedValueEquals(e))}}MaskedDynamic.DEFAULTS={dispatch:(e,t,s,i)=>{if(!t.compiledMasks.length)return;const n=t.rawInputValue,r=t.compiledMasks.map(((r,a)=>{const o=t.currentMask===r,l=o?r.value.length:r.nearestInputPos(r.value.length,DIRECTION.FORCE_LEFT);return r.rawInputValue!==n?(r.reset(),r.append(n,{raw:!0})):o||r.remove(l),r.append(e,t.currentMaskFlags(s)),r.appendTail(i),{index:a,weight:r.rawInputValue.length,totalInputPositions:r.totalInputPositions(0,Math.max(l,r.nearestInputPos(r.value.length,DIRECTION.FORCE_LEFT)))}}));return r.sort(((e,t)=>t.weight-e.weight||t.totalInputPositions-e.totalInputPositions)),t.compiledMasks[r[0].index]}},IMask.MaskedDynamic=MaskedDynamic;const PIPE_TYPE={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function createPipe(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:PIPE_TYPE.MASKED,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:PIPE_TYPE.MASKED;const i=createMask(e);return e=>i.runIsolated((i=>(i[t]=e,i[s])))}function pipe(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i0&&round(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&round(i.height)/e.offsetHeight||1);var a=(isElement$1(e)?getWindow(e):window).visualViewport,o=!isLayoutViewport()&&s,l=(i.left+(o&&a?a.offsetLeft:0))/n,u=(i.top+(o&&a?a.offsetTop:0))/r,c=i.width/n,h=i.height/r;return{width:c,height:h,top:u,right:l+c,bottom:u+h,left:l,x:l,y:u}}function getLayoutRect(e){var t=getBoundingClientRect(e),s=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-s)<=1&&(s=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:s,height:i}}function contains(e,t){var s=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(s&&isShadowRoot(s)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function isTableElement(e){return["table","td","th"].indexOf(getNodeName(e))>=0}function getDocumentElement(e){return((isElement$1(e)?e.ownerDocument:e.document)||window.document).documentElement}function getParentNode(e){return"html"===getNodeName(e)?e:e.assignedSlot||e.parentNode||(isShadowRoot(e)?e.host:null)||getDocumentElement(e)}function getTrueOffsetParent(e){return isHTMLElement(e)&&"fixed"!==getComputedStyle$1(e).position?e.offsetParent:null}function getContainingBlock(e){var t=/firefox/i.test(getUAString());if(/Trident/i.test(getUAString())&&isHTMLElement(e)&&"fixed"===getComputedStyle$1(e).position)return null;var s=getParentNode(e);for(isShadowRoot(s)&&(s=s.host);isHTMLElement(s)&&["html","body"].indexOf(getNodeName(s))<0;){var i=getComputedStyle$1(s);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return s;s=s.parentNode}return null}function getOffsetParent(e){for(var t=getWindow(e),s=getTrueOffsetParent(e);s&&isTableElement(s)&&"static"===getComputedStyle$1(s).position;)s=getTrueOffsetParent(s);return s&&("html"===getNodeName(s)||"body"===getNodeName(s)&&"static"===getComputedStyle$1(s).position)?t:s||getContainingBlock(e)||t}function getMainAxisFromPlacement(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function within(e,t,s){return max(e,min(t,s))}function withinMaxClamp(e,t,s){var i=within(e,t,s);return i>s?s:i}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(e){return Object.assign({},getFreshSideObject(),e)}function expandToHashMap(e,t){return t.reduce((function(t,s){return t[s]=e,t}),{})}var toPaddingObject=function(e,t){return mergePaddingObject("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:expandToHashMap(e,basePlacements))};function arrow(e){var t,s=e.state,i=e.name,n=e.options,r=s.elements.arrow,a=s.modifiersData.popperOffsets,o=getBasePlacement(s.placement),l=getMainAxisFromPlacement(o),u=[left,right].indexOf(o)>=0?"height":"width";if(r&&a){var c=toPaddingObject(n.padding,s),h=getLayoutRect(r),d="y"===l?top:left,p="y"===l?bottom:right,g=s.rects.reference[u]+s.rects.reference[l]-a[l]-s.rects.popper[u],f=a[l]-s.rects.reference[l],E=getOffsetParent(r),_=E?"y"===l?E.clientHeight||0:E.clientWidth||0:0,m=g/2-f/2,v=c[d],T=_-h[u]-c[p],A=_/2-h[u]/2+m,b=within(v,A,T),C=l;s.modifiersData[i]=((t={})[C]=b,t.centerOffset=b-A,t)}}function effect$1(e){var t=e.state,s=e.options.element,i=void 0===s?"[data-popper-arrow]":s;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&contains(t.elements.popper,i)&&(t.elements.arrow=i)}var arrow$1={name:"arrow",enabled:!0,phase:"main",fn:arrow,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(e){return e.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(e,t){var s=e.x,i=e.y,n=t.devicePixelRatio||1;return{x:round(s*n)/n||0,y:round(i*n)/n||0}}function mapToStyles(e){var t,s=e.popper,i=e.popperRect,n=e.placement,r=e.variation,a=e.offsets,o=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,h=e.isFixed,d=a.x,p=void 0===d?0:d,g=a.y,f=void 0===g?0:g,E="function"==typeof c?c({x:p,y:f}):{x:p,y:f};p=E.x,f=E.y;var _=a.hasOwnProperty("x"),m=a.hasOwnProperty("y"),v=left,T=top,A=window;if(u){var b=getOffsetParent(s),C="clientHeight",S="clientWidth";if(b===getWindow(s)&&"static"!==getComputedStyle$1(b=getDocumentElement(s)).position&&"absolute"===o&&(C="scrollHeight",S="scrollWidth"),n===top||(n===left||n===right)&&r===end)T=bottom,f-=(h&&b===A&&A.visualViewport?A.visualViewport.height:b[C])-i.height,f*=l?1:-1;if(n===left||(n===top||n===bottom)&&r===end)v=right,p-=(h&&b===A&&A.visualViewport?A.visualViewport.width:b[S])-i.width,p*=l?1:-1}var D,k=Object.assign({position:o},u&&unsetSides),N=!0===c?roundOffsetsByDPR({x:p,y:f},getWindow(s)):{x:p,y:f};return p=N.x,f=N.y,l?Object.assign({},k,((D={})[T]=m?"0":"",D[v]=_?"0":"",D.transform=(A.devicePixelRatio||1)<=1?"translate("+p+"px, "+f+"px)":"translate3d("+p+"px, "+f+"px, 0)",D)):Object.assign({},k,((t={})[T]=m?f+"px":"",t[v]=_?p+"px":"",t.transform="",t))}function computeStyles(e){var t=e.state,s=e.options,i=s.gpuAcceleration,n=void 0===i||i,r=s.adaptive,a=void 0===r||r,o=s.roundOffsets,l=void 0===o||o,u={placement:getBasePlacement(t.placement),variation:getVariation(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,mapToStyles(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,mapToStyles(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var computeStyles$1={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles,data:{}},passive={passive:!0};function effect(e){var t=e.state,s=e.instance,i=e.options,n=i.scroll,r=void 0===n||n,a=i.resize,o=void 0===a||a,l=getWindow(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&u.forEach((function(e){e.addEventListener("scroll",s.update,passive)})),o&&l.addEventListener("resize",s.update,passive),function(){r&&u.forEach((function(e){e.removeEventListener("scroll",s.update,passive)})),o&&l.removeEventListener("resize",s.update,passive)}}var eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:effect,data:{}},hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,(function(e){return hash$1[e]}))}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(e){return e.replace(/start|end/g,(function(e){return hash[e]}))}function getWindowScroll(e){var t=getWindow(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function getWindowScrollBarX(e){return getBoundingClientRect(getDocumentElement(e)).left+getWindowScroll(e).scrollLeft}function getViewportRect(e,t){var s=getWindow(e),i=getDocumentElement(e),n=s.visualViewport,r=i.clientWidth,a=i.clientHeight,o=0,l=0;if(n){r=n.width,a=n.height;var u=isLayoutViewport();(u||!u&&"fixed"===t)&&(o=n.offsetLeft,l=n.offsetTop)}return{width:r,height:a,x:o+getWindowScrollBarX(e),y:l}}function getDocumentRect(e){var t,s=getDocumentElement(e),i=getWindowScroll(e),n=null==(t=e.ownerDocument)?void 0:t.body,r=max(s.scrollWidth,s.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),a=max(s.scrollHeight,s.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),o=-i.scrollLeft+getWindowScrollBarX(e),l=-i.scrollTop;return"rtl"===getComputedStyle$1(n||s).direction&&(o+=max(s.clientWidth,n?n.clientWidth:0)-r),{width:r,height:a,x:o,y:l}}function isScrollParent(e){var t=getComputedStyle$1(e),s=t.overflow,i=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(s+n+i)}function getScrollParent(e){return["html","body","#document"].indexOf(getNodeName(e))>=0?e.ownerDocument.body:isHTMLElement(e)&&isScrollParent(e)?e:getScrollParent(getParentNode(e))}function listScrollParents(e,t){var s;void 0===t&&(t=[]);var i=getScrollParent(e),n=i===(null==(s=e.ownerDocument)?void 0:s.body),r=getWindow(i),a=n?[r].concat(r.visualViewport||[],isScrollParent(i)?i:[]):i,o=t.concat(a);return n?o:o.concat(listScrollParents(getParentNode(a)))}function rectToClientRect(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function getInnerBoundingClientRect(e,t){var s=getBoundingClientRect(e,!1,"fixed"===t);return s.top=s.top+e.clientTop,s.left=s.left+e.clientLeft,s.bottom=s.top+e.clientHeight,s.right=s.left+e.clientWidth,s.width=e.clientWidth,s.height=e.clientHeight,s.x=s.left,s.y=s.top,s}function getClientRectFromMixedType(e,t,s){return t===viewport?rectToClientRect(getViewportRect(e,s)):isElement$1(t)?getInnerBoundingClientRect(t,s):rectToClientRect(getDocumentRect(getDocumentElement(e)))}function getClippingParents(e){var t=listScrollParents(getParentNode(e)),s=["absolute","fixed"].indexOf(getComputedStyle$1(e).position)>=0&&isHTMLElement(e)?getOffsetParent(e):e;return isElement$1(s)?t.filter((function(e){return isElement$1(e)&&contains(e,s)&&"body"!==getNodeName(e)})):[]}function getClippingRect(e,t,s,i){var n="clippingParents"===t?getClippingParents(e):[].concat(t),r=[].concat(n,[s]),a=r[0],o=r.reduce((function(t,s){var n=getClientRectFromMixedType(e,s,i);return t.top=max(n.top,t.top),t.right=min(n.right,t.right),t.bottom=min(n.bottom,t.bottom),t.left=max(n.left,t.left),t}),getClientRectFromMixedType(e,a,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function computeOffsets(e){var t,s=e.reference,i=e.element,n=e.placement,r=n?getBasePlacement(n):null,a=n?getVariation(n):null,o=s.x+s.width/2-i.width/2,l=s.y+s.height/2-i.height/2;switch(r){case top:t={x:o,y:s.y-i.height};break;case bottom:t={x:o,y:s.y+s.height};break;case right:t={x:s.x+s.width,y:l};break;case left:t={x:s.x-i.width,y:l};break;default:t={x:s.x,y:s.y}}var u=r?getMainAxisFromPlacement(r):null;if(null!=u){var c="y"===u?"height":"width";switch(a){case start:t[u]=t[u]-(s[c]/2-i[c]/2);break;case end:t[u]=t[u]+(s[c]/2-i[c]/2)}}return t}function detectOverflow(e,t){void 0===t&&(t={});var s=t,i=s.placement,n=void 0===i?e.placement:i,r=s.strategy,a=void 0===r?e.strategy:r,o=s.boundary,l=void 0===o?clippingParents:o,u=s.rootBoundary,c=void 0===u?viewport:u,h=s.elementContext,d=void 0===h?popper:h,p=s.altBoundary,g=void 0!==p&&p,f=s.padding,E=void 0===f?0:f,_=mergePaddingObject("number"!=typeof E?E:expandToHashMap(E,basePlacements)),m=d===popper?reference:popper,v=e.rects.popper,T=e.elements[g?m:d],A=getClippingRect(isElement$1(T)?T:T.contextElement||getDocumentElement(e.elements.popper),l,c,a),b=getBoundingClientRect(e.elements.reference),C=computeOffsets({reference:b,element:v,strategy:"absolute",placement:n}),S=rectToClientRect(Object.assign({},v,C)),D=d===popper?S:b,k={top:A.top-D.top+_.top,bottom:D.bottom-A.bottom+_.bottom,left:A.left-D.left+_.left,right:D.right-A.right+_.right},N=e.modifiersData.offset;if(d===popper&&N){var O=N[n];Object.keys(k).forEach((function(e){var t=[right,bottom].indexOf(e)>=0?1:-1,s=[top,bottom].indexOf(e)>=0?"y":"x";k[e]+=O[s]*t}))}return k}function computeAutoPlacement(e,t){void 0===t&&(t={});var s=t,i=s.placement,n=s.boundary,r=s.rootBoundary,a=s.padding,o=s.flipVariations,l=s.allowedAutoPlacements,u=void 0===l?placements:l,c=getVariation(i),h=c?o?variationPlacements:variationPlacements.filter((function(e){return getVariation(e)===c})):basePlacements,d=h.filter((function(e){return u.indexOf(e)>=0}));0===d.length&&(d=h);var p=d.reduce((function(t,s){return t[s]=detectOverflow(e,{placement:s,boundary:n,rootBoundary:r,padding:a})[getBasePlacement(s)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}function getExpandedFallbackPlacements(e){if(getBasePlacement(e)===auto)return[];var t=getOppositePlacement(e);return[getOppositeVariationPlacement(e),t,getOppositeVariationPlacement(t)]}function flip(e){var t=e.state,s=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var n=s.mainAxis,r=void 0===n||n,a=s.altAxis,o=void 0===a||a,l=s.fallbackPlacements,u=s.padding,c=s.boundary,h=s.rootBoundary,d=s.altBoundary,p=s.flipVariations,g=void 0===p||p,f=s.allowedAutoPlacements,E=t.options.placement,_=getBasePlacement(E),m=l||(_===E||!g?[getOppositePlacement(E)]:getExpandedFallbackPlacements(E)),v=[E].concat(m).reduce((function(e,s){return e.concat(getBasePlacement(s)===auto?computeAutoPlacement(t,{placement:s,boundary:c,rootBoundary:h,padding:u,flipVariations:g,allowedAutoPlacements:f}):s)}),[]),T=t.rects.reference,A=t.rects.popper,b=new Map,C=!0,S=v[0],D=0;D=0,w=y?"width":"height",I=detectOverflow(t,{placement:k,boundary:c,rootBoundary:h,altBoundary:d,padding:u}),M=y?O?right:left:O?bottom:top;T[w]>A[w]&&(M=getOppositePlacement(M));var L=getOppositePlacement(M),R=[];if(r&&R.push(I[N]<=0),o&&R.push(I[M]<=0,I[L]<=0),R.every((function(e){return e}))){S=k,C=!1;break}b.set(k,R)}if(C)for(var P=function(e){var t=v.find((function(t){var s=b.get(t);if(s)return s.slice(0,e).every((function(e){return e}))}));if(t)return S=t,"break"},$=g?3:1;$>0;$--){if("break"===P($))break}t.placement!==S&&(t.modifiersData[i]._skip=!0,t.placement=S,t.reset=!0)}}var flip$1={name:"flip",enabled:!0,phase:"main",fn:flip,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(e,t,s){return void 0===s&&(s={x:0,y:0}),{top:e.top-t.height-s.y,right:e.right-t.width+s.x,bottom:e.bottom-t.height+s.y,left:e.left-t.width-s.x}}function isAnySideFullyClipped(e){return[top,right,bottom,left].some((function(t){return e[t]>=0}))}function hide(e){var t=e.state,s=e.name,i=t.rects.reference,n=t.rects.popper,r=t.modifiersData.preventOverflow,a=detectOverflow(t,{elementContext:"reference"}),o=detectOverflow(t,{altBoundary:!0}),l=getSideOffsets(a,i),u=getSideOffsets(o,n,r),c=isAnySideFullyClipped(l),h=isAnySideFullyClipped(u);t.modifiersData[s]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":h})}var hide$1={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide};function distanceAndSkiddingToXY(e,t,s){var i=getBasePlacement(e),n=[left,top].indexOf(i)>=0?-1:1,r="function"==typeof s?s(Object.assign({},t,{placement:e})):s,a=r[0],o=r[1];return a=a||0,o=(o||0)*n,[left,right].indexOf(i)>=0?{x:o,y:a}:{x:a,y:o}}function offset(e){var t=e.state,s=e.options,i=e.name,n=s.offset,r=void 0===n?[0,0]:n,a=placements.reduce((function(e,s){return e[s]=distanceAndSkiddingToXY(s,t.rects,r),e}),{}),o=a[t.placement],l=o.x,u=o.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[i]=a}var offset$1={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset};function popperOffsets(e){var t=e.state,s=e.name;t.modifiersData[s]=computeOffsets({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var popperOffsets$1={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets,data:{}};function getAltAxis(e){return"x"===e?"y":"x"}function preventOverflow(e){var t=e.state,s=e.options,i=e.name,n=s.mainAxis,r=void 0===n||n,a=s.altAxis,o=void 0!==a&&a,l=s.boundary,u=s.rootBoundary,c=s.altBoundary,h=s.padding,d=s.tether,p=void 0===d||d,g=s.tetherOffset,f=void 0===g?0:g,E=detectOverflow(t,{boundary:l,rootBoundary:u,padding:h,altBoundary:c}),_=getBasePlacement(t.placement),m=getVariation(t.placement),v=!m,T=getMainAxisFromPlacement(_),A=getAltAxis(T),b=t.modifiersData.popperOffsets,C=t.rects.reference,S=t.rects.popper,D="function"==typeof f?f(Object.assign({},t.rects,{placement:t.placement})):f,k="number"==typeof D?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(b){if(r){var y,w="y"===T?top:left,I="y"===T?bottom:right,M="y"===T?"height":"width",L=b[T],R=L+E[w],P=L-E[I],$=p?-S[M]/2:0,F=m===start?C[M]:S[M],x=m===start?-S[M]:-C[M],V=t.elements.arrow,H=p&&V?getLayoutRect(V):{width:0,height:0},B=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:getFreshSideObject(),W=B[w],K=B[I],Y=within(0,C[M],H[M]),j=v?C[M]/2-$-Y-W-k.mainAxis:F-Y-W-k.mainAxis,U=v?-C[M]/2+$+Y+K+k.mainAxis:x+Y+K+k.mainAxis,G=t.elements.arrow&&getOffsetParent(t.elements.arrow),z=G?"y"===T?G.clientTop||0:G.clientLeft||0:0,q=null!=(y=null==N?void 0:N[T])?y:0,X=L+U-q,Q=within(p?min(R,L+j-q-z):R,L,p?max(P,X):P);b[T]=Q,O[T]=Q-L}if(o){var Z,J="x"===T?top:left,ee="x"===T?bottom:right,te=b[A],se="y"===A?"height":"width",ie=te+E[J],ne=te-E[ee],re=-1!==[top,left].indexOf(_),ae=null!=(Z=null==N?void 0:N[A])?Z:0,oe=re?ie:te-C[se]-S[se]-ae+k.altAxis,le=re?te+C[se]+S[se]-ae-k.altAxis:ne,ue=p&&re?withinMaxClamp(oe,te,le):within(p?oe:ie,te,p?le:ne);b[A]=ue,O[A]=ue-te}t.modifiersData[i]=O}}var preventOverflow$1={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow,requiresIfExists:["offset"]};function getHTMLElementScroll(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function getNodeScroll(e){return e!==getWindow(e)&&isHTMLElement(e)?getHTMLElementScroll(e):getWindowScroll(e)}function isElementScaled(e){var t=e.getBoundingClientRect(),s=round(t.width)/e.offsetWidth||1,i=round(t.height)/e.offsetHeight||1;return 1!==s||1!==i}function getCompositeRect(e,t,s){void 0===s&&(s=!1);var i=isHTMLElement(t),n=isHTMLElement(t)&&isElementScaled(t),r=getDocumentElement(t),a=getBoundingClientRect(e,n,s),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!s)&&(("body"!==getNodeName(t)||isScrollParent(r))&&(o=getNodeScroll(t)),isHTMLElement(t)?((l=getBoundingClientRect(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):r&&(l.x=getWindowScrollBarX(r))),{x:a.left+o.scrollLeft-l.x,y:a.top+o.scrollTop-l.y,width:a.width,height:a.height}}function order(e){var t=new Map,s=new Set,i=[];function n(e){s.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!s.has(e)){var i=t.get(e);i&&n(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){s.has(e.name)||n(e)})),i}function orderModifiers(e){var t=order(e);return modifierPhases.reduce((function(e,s){return e.concat(t.filter((function(e){return e.phase===s})))}),[])}function debounce(e){var t;return function(){return t||(t=new Promise((function(s){Promise.resolve().then((function(){t=void 0,s(e())}))}))),t}}function mergeByName(e){var t=e.reduce((function(e,t){var s=e[t.name];return e[t.name]=s?Object.assign({},s,t,{options:Object.assign({},s.options,t.options),data:Object.assign({},s.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var e=arguments.length,t=new Array(e),s=0;selementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const s=elementMap.get(e);s.delete(t),0===s.size&&elementMap.delete(e)}},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:s}=window.getComputedStyle(e);const i=Number.parseFloat(t),n=Number.parseFloat(s);return i||n?(t=t.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(s))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),getElement=e=>isElement(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),s=e.closest("details:not([open])");if(!s)return t;if(s!==e){const t=e.closest("summary");if(t&&t.parentNode!==s)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},getjQuery=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,DOMContentLoadedCallbacks=[],onDOMContentLoaded=e=>{"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of DOMContentLoadedCallbacks)e()})),DOMContentLoadedCallbacks.push(e)):e()},isRTL=()=>"rtl"===document.documentElement.dir,defineJQueryPlugin=e=>{var t;t=()=>{const t=getjQuery();if(t){const s=e.NAME,i=t.fn[s];t.fn[s]=e.jQueryInterface,t.fn[s].Constructor=e,t.fn[s].noConflict=()=>(t.fn[s]=i,e.jQueryInterface)}},"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of DOMContentLoadedCallbacks)e()})),DOMContentLoadedCallbacks.push(t)):t()},execute=(e,t=[],s=e)=>"function"==typeof e?e(...t):s,executeAfterTransition=(e,t,s=!0)=>{if(!s)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let n=!1;const r=({target:s})=>{s===t&&(n=!0,t.removeEventListener(TRANSITION_END,r),execute(e))};t.addEventListener(TRANSITION_END,r),setTimeout((()=>{n||triggerTransitionEnd(t)}),i)},getNextActiveElement=(e,t,s,i)=>{const n=e.length;let r=e.indexOf(t);return-1===r?!s&&i?e[n-1]:e[0]:(r+=s?1:-1,i&&(r=(r+n)%n),e[Math.max(0,Math.min(r,n-1))])},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function s(i){return hydrateObj(i,{delegateTarget:e}),s.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,s){return function i(n){const r=e.querySelectorAll(t);for(let{target:a}=n;a&&a!==this;a=a.parentNode)for(const o of r)if(o===a)return hydrateObj(n,{delegateTarget:a}),i.oneOff&&EventHandler.off(e,n.type,t,s),s.apply(a,[n])}}function findHandler(e,t,s=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===s))}function normalizeParameters(e,t,s){const i="string"==typeof t,n=i?s:t||s;let r=getTypeEvent(e);return nativeEvents.has(r)||(r=e),[i,n,r]}function addHandler(e,t,s,i,n){if("string"!=typeof t||!e)return;let[r,a,o]=normalizeParameters(t,s,i);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const l=getElementEvents(e),u=l[o]||(l[o]={}),c=findHandler(u,a,r?s:null);if(c)return void(c.oneOff=c.oneOff&&n);const h=makeEventUid(a,t.replace(namespaceRegex,"")),d=r?bootstrapDelegationHandler(e,s,a):bootstrapHandler(e,a);d.delegationSelector=r?s:null,d.callable=a,d.oneOff=n,d.uidEvent=h,u[h]=d,e.addEventListener(o,d,r)}function removeHandler(e,t,s,i,n){const r=findHandler(t[s],i,n);r&&(e.removeEventListener(s,r,Boolean(n)),delete t[s][r.uidEvent])}function removeNamespacedHandlers(e,t,s,i){const n=t[s]||{};for(const[r,a]of Object.entries(n))r.includes(i)&&removeHandler(e,t,s,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,s,i){addHandler(e,t,s,i,!1)},one(e,t,s,i){addHandler(e,t,s,i,!0)},off(e,t,s,i){if("string"!=typeof t||!e)return;const[n,r,a]=normalizeParameters(t,s,i),o=a!==t,l=getElementEvents(e),u=l[a]||{},c=t.startsWith(".");if(void 0===r){if(c)for(const s of Object.keys(l))removeNamespacedHandlers(e,l,s,t.slice(1));for(const[s,i]of Object.entries(u)){const n=s.replace(stripUidRegex,"");o&&!t.includes(n)||removeHandler(e,l,a,i.callable,i.delegationSelector)}}else{if(!Object.keys(u).length)return;removeHandler(e,l,a,r,n?s:null)}},trigger(e,t,s){if("string"!=typeof t||!e)return null;const i=getjQuery();let n=null,r=!0,a=!0,o=!1;t!==getTypeEvent(t)&&i&&(n=i.Event(t,s),i(e).trigger(n),r=!n.isPropagationStopped(),a=!n.isImmediatePropagationStopped(),o=n.isDefaultPrevented());const l=hydrateObj(new Event(t,{bubbles:r,cancelable:!0}),s);return o&&l.preventDefault(),a&&e.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function hydrateObj(e,t={}){for(const[s,i]of Object.entries(t))try{e[s]=i}catch(t){Object.defineProperty(e,s,{configurable:!0,get:()=>i})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const Manipulator={setDataAttribute(e,t,s){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,s)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},s=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of s){let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),t[s]=normalizeData(e.dataset[i])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const s=isElement(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof s?s:{},...isElement(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[i,n]of Object.entries(t)){const t=e[i],r=isElement(t)?"element":null==(s=t)?`${s}`:Object.prototype.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)}var s}}const VERSION="5.3.1";class BaseComponent extends Config{constructor(e,t){super(),(e=getElement(e))&&(this._element=e,this._config=this._getConfig(t),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,s=!0){executeAfterTransition(e,t,s)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let s=e.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),t=s&&"#"!==s?s.trim():null}return parseSelector(t)},SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const s=[];let i=e.parentNode.closest(t);for(;i;)s.push(i),i=i.parentNode.closest(t);return s},prev(e,t){let s=e.previousElementSibling;for(;s;){if(s.matches(t))return[s];s=s.previousElementSibling}return[]},next(e,t){let s=e.nextElementSibling;for(;s;){if(s.matches(t))return[s];s=s.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!isDisabled(e)&&isVisible(e)))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const s=`click.dismiss${e.EVENT_KEY}`,i=e.NAME;EventHandler.on(document,s,`[data-bs-dismiss="${i}"]`,(function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),isDisabled(this))return;const n=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);e.getOrCreateInstance(n)[t]()}))},NAME$f="alert",DATA_KEY$a="bs.alert",EVENT_KEY$b=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$5="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$f}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}static jQueryInterface(e){return this.each((function(){const t=Alert.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}enableDismissTrigger(Alert,"close"),defineJQueryPlugin(Alert);const NAME$e="button",DATA_KEY$9="bs.button",EVENT_KEY$a=`.${DATA_KEY$9}`,DATA_API_KEY$6=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$a}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$e}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){const t=Button.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$5,(e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$5);Button.getOrCreateInstance(t).toggle()})),defineJQueryPlugin(Button);const NAME$d="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$c={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$c={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&execute(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,(e=>this._start(e))),EventHandler.on(this._element,EVENT_POINTERUP,(e=>this._end(e))),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,(e=>this._start(e))),EventHandler.on(this._element,EVENT_TOUCHMOVE,(e=>this._move(e))),EventHandler.on(this._element,EVENT_TOUCHEND,(e=>this._end(e))))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$c="carousel",DATA_KEY$8="bs.carousel",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$8}`,EVENT_SLID=`slid${EVENT_KEY$8}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$8}`,EVENT_MOUSEENTER$1=`mouseenter${EVENT_KEY$8}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$8}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$8}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$8}.data-api`,EVENT_CLICK_DATA_API$5=`click${EVENT_KEY$8}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={ArrowLeft:"right",ArrowRight:"left"},Default$b={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$b={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),"carousel"===this._config.ride&&this.cycle()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}next(){this._slide("next")}nextWhenVisible(){!document.hidden&&isVisible(this._element)&&this.next()}prev(){this._slide("prev")}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?EventHandler.one(this._element,EVENT_SLID,(()=>this.cycle())):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,(()=>this.to(e)));const s=this._getItemIndex(this._getActive());if(s===e)return;const i=e>s?"next":"prev";this._slide(i,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,(e=>this._keydown(e))),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$1,(()=>this.pause())),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,(()=>this._maybeEnableCycle()))),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(e,EVENT_DRAG_START,(e=>e.preventDefault()));const e={leftCallback:()=>this._slide(this._directionToOrder("left")),rightCallback:()=>this._slide(this._directionToOrder("right")),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const s=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);s&&(s.classList.add("active"),s.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const s=this._getActive(),i="next"===e,n=t||getNextActiveElement(this._getItems(),s,i,this._config.wrap);if(n===s)return;const r=this._getItemIndex(n),a=t=>EventHandler.trigger(this._element,t,{relatedTarget:n,direction:this._orderToDirection(e),from:this._getItemIndex(s),to:r});if(a(EVENT_SLIDE).defaultPrevented)return;if(!s||!n)return;const o=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(r),this._activeElement=n;const l=i?CLASS_NAME_START:CLASS_NAME_END,u=i?CLASS_NAME_NEXT:CLASS_NAME_PREV;n.classList.add(u),reflow(n),s.classList.add(l),n.classList.add(l);this._queueCallback((()=>{n.classList.remove(l,u),n.classList.add("active"),s.classList.remove("active",u,l),this._isSliding=!1,a(EVENT_SLID)}),s,this._isAnimated()),o&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return isRTL()?"left"===e?"prev":"next":"left"===e?"next":"prev"}_orderToDirection(e){return isRTL()?"prev"===e?"left":"right":"prev"===e?"right":"left"}static jQueryInterface(e){return this.each((function(){const t=Carousel.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}else t.to(e)}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_SLIDE,(function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const s=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");return i?(s.to(i),void s._maybeEnableCycle()):"next"===Manipulator.getDataAttribute(this,"slide")?(s.next(),void s._maybeEnableCycle()):(s.prev(),void s._maybeEnableCycle())})),EventHandler.on(window,EVENT_LOAD_DATA_API$3,(()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of e)Carousel.getOrCreateInstance(t)})),defineJQueryPlugin(Carousel);const NAME$b="collapse",DATA_KEY$7="bs.collapse",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_SHOW$6=`show${EVENT_KEY$7}`,EVENT_SHOWN$6=`shown${EVENT_KEY$7}`,EVENT_HIDE$6=`hide${EVENT_KEY$7}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$7}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$7}.data-api`,CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="collapse"]',Default$a={parent:null,toggle:!0},DefaultType$a={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const s=SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);for(const e of s){const t=SelectorEngine.getSelectorFromElement(e),s=SelectorEngine.find(t).filter((e=>e===this._element));null!==t&&s.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((e=>e!==this._element)).map((e=>Collapse.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$6).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)}),this._element,!0),this._element.style[t]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$6)}),this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const s of e)s.classList.toggle("collapsed",!t),s.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const s=Collapse.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$4,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()})),defineJQueryPlugin(Collapse);const NAME$a="dropdown",DATA_KEY$6="bs.dropdown",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",RIGHT_MOUSE_BUTTON=2,EVENT_HIDE$5=`hide${EVENT_KEY$6}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$6}`,EVENT_SHOW$5=`show${EVENT_KEY$6}`,EVENT_SHOWN$5=`shown${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$6}.data-api`,EVENT_KEYDOWN_DATA_API=`keydown${EVENT_KEY$6}.data-api`,EVENT_KEYUP_DATA_API=`keyup${EVENT_KEY$6}.data-api`,CLASS_NAME_SHOW$6="show",CLASS_NAME_DROPUP="dropup",CLASS_NAME_DROPEND="dropend",CLASS_NAME_DROPSTART="dropstart",CLASS_NAME_DROPUP_CENTER="dropup-center",CLASS_NAME_DROPDOWN_CENTER="dropdown-center",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',SELECTOR_DATA_TOGGLE_SHOWN=`${SELECTOR_DATA_TOGGLE$3}.show`,SELECTOR_MENU=".dropdown-menu",SELECTOR_NAVBAR=".navbar",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",PLACEMENT_TOP=isRTL()?"top-end":"top-start",PLACEMENT_TOPEND=isRTL()?"top-start":"top-end",PLACEMENT_BOTTOM=isRTL()?"bottom-end":"bottom-start",PLACEMENT_BOTTOMEND=isRTL()?"bottom-start":"bottom-end",PLACEMENT_RIGHT=isRTL()?"left-start":"right-start",PLACEMENT_LEFT=isRTL()?"right-start":"left-start",PLACEMENT_TOPCENTER="top",PLACEMENT_BOTTOMCENTER="bottom",Default$9={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},DefaultType$9={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Dropdown extends BaseComponent{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=SelectorEngine.next(this._element,SELECTOR_MENU)[0]||SelectorEngine.prev(this._element,SELECTOR_MENU)[0]||SelectorEngine.findOne(SELECTOR_MENU,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$5,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),EventHandler.trigger(this._element,EVENT_SHOWN$5,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"popper"),EventHandler.trigger(this._element,EVENT_HIDDEN$5,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(void 0===Popper)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=createPopper(e,this._menu,t)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return PLACEMENT_RIGHT;if(e.classList.contains("dropstart"))return PLACEMENT_LEFT;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?PLACEMENT_TOPEND:PLACEMENT_TOP:t?PLACEMENT_BOTTOMEND:PLACEMENT_BOTTOM}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(Manipulator.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...execute(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:t}){const s=SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter((e=>isVisible(e)));s.length&&getNextActiveElement(s,t,e===ARROW_DOWN_KEY$1,!s.includes(t)).focus()}static jQueryInterface(e){return this.each((function(){const t=Dropdown.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);for(const s of t){const t=Dropdown.getInstance(s);if(!t||!1===t._config.autoClose)continue;const i=e.composedPath(),n=i.includes(t._menu);if(i.includes(t._element)||"inside"===t._config.autoClose&&!n||"outside"===t._config.autoClose&&n)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const r={relatedTarget:t._element};"click"===e.type&&(r.clickEvent=e),t._completeHide(r)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),s="Escape"===e.key,i=[ARROW_UP_KEY$1,ARROW_DOWN_KEY$1].includes(e.key);if(!i&&!s)return;if(t&&!s)return;e.preventDefault();const n=this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$3)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3,e.delegateTarget.parentNode),r=Dropdown.getOrCreateInstance(n);if(i)return e.stopPropagation(),r.show(),void r._selectMenuItem(e);r._isShown()&&(e.stopPropagation(),r.hide(),n.focus())}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$3,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$3,Dropdown.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$3,(function(e){e.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()})),defineJQueryPlugin(Dropdown);const NAME$9="backdrop",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$5="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$9}`,Default$8={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$8={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}show(e){if(!this._config.isVisible)return void execute(e);this._append();const t=this._getElement();this._config.isAnimated&&reflow(t),t.classList.add("show"),this._emulateAnimation((()=>{execute(e)}))}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation((()=>{this.dispose(),execute(e)}))):execute(e)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=getElement(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),EventHandler.on(e,EVENT_MOUSEDOWN,(()=>{execute(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const NAME$8="focustrap",DATA_KEY$5="bs.focustrap",EVENT_KEY$5=`.${DATA_KEY$5}`,EVENT_FOCUSIN$2=`focusin${EVENT_KEY$5}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$5}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$7={autofocus:!0,trapElement:null},DefaultType$7={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$5),EventHandler.on(document,EVENT_FOCUSIN$2,(e=>this._handleFocusin(e))),EventHandler.on(document,EVENT_KEYDOWN_TAB,(e=>this._handleKeydown(e))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$5))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const s=SelectorEngine.focusableChildren(t);0===s.length?t.focus():"backward"===this._lastTabNavDirection?s[s.length-1].focus():s[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"padding-right",(t=>t+e)),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right",(t=>t+e)),this._setElementAttributes(".sticky-top","margin-right",(t=>t-e))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"padding-right"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right"),this._resetElementAttributes(".sticky-top","margin-right")}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,s){const i=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+i)return;this._saveInitialAttribute(e,t);const n=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(e,t){const s=e.style.getPropertyValue(t);s&&Manipulator.setDataAttribute(e,t,s)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const s=Manipulator.getDataAttribute(e,t);null!==s?(Manipulator.removeDataAttribute(e,t),e.style.setProperty(t,s)):e.style.removeProperty(t)}))}_applyManipulationCallback(e,t){if(isElement(e))t(e);else for(const s of SelectorEngine.find(e,this._element))t(s)}}const NAME$7="modal",DATA_KEY$4="bs.modal",EVENT_KEY$4=".bs.modal",DATA_API_KEY$2=".data-api",ESCAPE_KEY$1="Escape",EVENT_HIDE$4="hide.bs.modal",EVENT_HIDE_PREVENTED$1="hidePrevented.bs.modal",EVENT_HIDDEN$4="hidden.bs.modal",EVENT_SHOW$4="show.bs.modal",EVENT_SHOWN$4="shown.bs.modal",EVENT_RESIZE$1="resize.bs.modal",EVENT_CLICK_DISMISS="click.dismiss.bs.modal",EVENT_MOUSEDOWN_DISMISS="mousedown.dismiss.bs.modal",EVENT_KEYDOWN_DISMISS$1="keydown.dismiss.bs.modal",EVENT_CLICK_DATA_API$2="click.bs.modal.data-api",CLASS_NAME_OPEN="modal-open",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",CLASS_NAME_STATIC="modal-static",OPEN_SELECTOR$1=".modal.show",SELECTOR_DIALOG=".modal-dialog",SELECTOR_MODAL_BODY=".modal-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="modal"]',Default$6={backdrop:!0,focus:!0,keyboard:!0},DefaultType$6={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Modal extends BaseComponent{constructor(e,t){super(e,t),this._dialog=SelectorEngine.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ScrollBarHelper,this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||this._isTransitioning)return;EventHandler.trigger(this._element,EVENT_SHOW$4,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._backdrop.show((()=>this._showElement(e))))}hide(){if(!this._isShown||this._isTransitioning)return;EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove("show"),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated()))}dispose(){EventHandler.off(window,".bs.modal"),EventHandler.off(this._dialog,".bs.modal"),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Backdrop({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_showElement(e){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 t=SelectorEngine.findOne(".modal-body",this._dialog);t&&(t.scrollTop=0),reflow(this._element),this._element.classList.add("show");this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$4,{relatedTarget:e})}),this._dialog,this._isAnimated())}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS$1,(e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),EventHandler.on(window,EVENT_RESIZE$1,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),EventHandler.on(this._element,EVENT_MOUSEDOWN_DISMISS,(e=>{EventHandler.one(this._element,EVENT_CLICK_DISMISS,(t=>{this._element===e.target&&this._element===t.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("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$4)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains("modal-static")||(e||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static"),this._queueCallback((()=>{this._element.classList.remove("modal-static"),this._queueCallback((()=>{this._element.style.overflowY=t}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),s=t>0;if(s&&!e){const e=isRTL()?"paddingLeft":"paddingRight";this._element.style[e]=`${t}px`}if(!s&&e){const e=isRTL()?"paddingRight":"paddingLeft";this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each((function(){const s=Modal.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e](t)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$2,(function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$4,(e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,(()=>{isVisible(this)&&this.focus()}))}));const s=SelectorEngine.findOne(".modal.show");s&&Modal.getInstance(s).hide();Modal.getOrCreateInstance(t).toggle(this)})),enableDismissTrigger(Modal),defineJQueryPlugin(Modal);const NAME$6="offcanvas",DATA_KEY$3="bs.offcanvas",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY$1=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$3}.data-api`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$3}`,EVENT_SHOWN$3=`shown${EVENT_KEY$3}`,EVENT_HIDE$3=`hide${EVENT_KEY$3}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$3}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$3}.data-api`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$3}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="offcanvas"]',Default$5={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$5={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown)return;if(EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("showing");this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})}),this._element,!0)}hide(){if(!this._isShown)return;if(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide();this._queueCallback((()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,(e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED))}))}static jQueryInterface(e){return this.each((function(){const t=Offcanvas.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$1,(function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,(()=>{isVisible(this)&&this.focus()}));const s=SelectorEngine.findOne(OPEN_SELECTOR);s&&s!==t&&Offcanvas.getInstance(s).hide();Offcanvas.getOrCreateInstance(t).toggle(this)})),EventHandler.on(window,EVENT_LOAD_DATA_API$2,(()=>{for(const e of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(e).show()})),EventHandler.on(window,EVENT_RESIZE,(()=>{for(const e of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Offcanvas.getOrCreateInstance(e).hide()})),enableDismissTrigger(Offcanvas),defineJQueryPlugin(Offcanvas);const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],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:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(e,t)=>{const s=e.nodeName.toLowerCase();return t.includes(s)?!uriAttributes.has(s)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(s)))};function sanitizeHtml(e,t,s){if(!e.length)return e;if(s&&"function"==typeof s)return s(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),n=[].concat(...i.body.querySelectorAll("*"));for(const e of n){const s=e.nodeName.toLowerCase();if(!Object.keys(t).includes(s)){e.remove();continue}const i=[].concat(...e.attributes),n=[].concat(t["*"]||[],t[s]||[]);for(const t of i)allowedAttribute(t,n)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}const NAME$5="TemplateFactory",Default$4={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},DefaultType$4={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,s]of Object.entries(this._config.content))this._setContent(e,s,t);const t=e.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s&&t.classList.add(...s.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,s]of Object.entries(e))super._typeCheckConfig({selector:t,entry:s},DefaultContentType)}_setContent(e,t,s){const i=SelectorEngine.findOne(s,e);i&&((t=this._resolvePossibleFunction(t))?isElement(t)?this._putElementInTemplate(getElement(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$4="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$1="click",EVENT_FOCUSIN$1="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$3={allowList:DefaultAllowlist,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"},DefaultType$3={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 Tooltip extends BaseComponent{constructor(e,t){if(void 0===Popper)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),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 Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}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),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._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 e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute("aria-describedby",s.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(s),s.classList.add("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._queueCallback((()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),EventHandler.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(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const s=getUID(this.constructor.NAME).toString();return t.setAttribute("id",s),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_createPopper(e){const t=execute(this._config.placement,[this,e,this._element]),s=AttachmentMap[t.toUpperCase()];return createPopper(this._element,e,this._getPopperConfig(s))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element])}_getPopperConfig(e){const t={placement:e,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:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...execute(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),s="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()})),EventHandler.on(this._element,s,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,s]of Object.entries(this._config))this.constructor.Default[t]!==s&&(e[t]=s);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Tooltip.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(Tooltip);const NAME$3="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",Default$2={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},DefaultType$2={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each((function(){const t=Popover.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(Popover);const NAME$2="scrollspy",DATA_KEY$2="bs.scrollspy",EVENT_KEY$2=`.${DATA_KEY$2}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$2}`,EVENT_CLICK=`click${EVENT_KEY$2}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$2}.data-api`,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",Default$1={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$1={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$2}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map((e=>Number.parseFloat(e)))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK),EventHandler.on(this._config.target,EVENT_CLICK,"[href]",(e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const s=this._rootElement||window,i=t.offsetTop-this._element.offsetTop;if(s.scrollTo)return void s.scrollTo({top:i,behavior:"smooth"});s.scrollTop=i}})))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((e=>this._observerCallback(e)),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),s=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},i=(this._rootElement||document.documentElement).scrollTop,n=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const r of e){if(!r.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(r));continue}const e=r.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&e){if(s(r),!i)return}else n||e||s(r)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=SelectorEngine.find("[href]",this._config.target);for(const t of e){if(!t.hash||isDisabled(t))continue;const e=SelectorEngine.findOne(decodeURI(t.hash),this._element);isVisible(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))SelectorEngine.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add("active");else for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}static jQueryInterface(e){return this.each((function(){const t=ScrollSpy.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,(()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)})),defineJQueryPlugin(ScrollSpy);const NAME$1="tab",DATA_KEY$1="bs.tab",EVENT_KEY$1=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",CLASS_DROPDOWN="dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_MENU=".dropdown-menu",NOT_SELECTOR_DROPDOWN_TOGGLE=":not(.dropdown-toggle)",SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER='.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle)',SELECTOR_DATA_TOGGLE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,(e=>this._keydown(e))))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),s=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||s&&s.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){if(!e)return;e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e));this._queueCallback((()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")}),e,e.classList.contains("fade"))}_deactivate(e,t){if(!e)return;e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e));this._queueCallback((()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")}),e,e.classList.contains("fade"))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter((e=>!isDisabled(e)));let s;if([HOME_KEY,END_KEY].includes(e.key))s=t[e.key===HOME_KEY?0:t.length-1];else{const i=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);s=getNextActiveElement(t,e.target,i,!0)}s&&(s.focus({preventScroll:!0}),Tab.getOrCreateInstance(s).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find((e=>this._elemIsActive(e)))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),s=this._getOuterElement(e);e.setAttribute("aria-selected",t),s!==e&&this._setAttributeIfNotExists(s,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,t){const s=this._getOuterElement(e);if(!s.classList.contains("dropdown"))return;const i=(e,i)=>{const n=SelectorEngine.findOne(e,s);n&&n.classList.toggle(i,t)};i(".dropdown-toggle","active"),i(".dropdown-menu","show"),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,s){e.hasAttribute(t)||e.setAttribute(t,s)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}static jQueryInterface(e){return this.each((function(){const t=Tab.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()})),EventHandler.on(window,"load.bs.tab",(()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)})),defineJQueryPlugin(Tab);const NAME="toast",DATA_KEY="bs.toast",EVENT_KEY=`.${DATA_KEY}`,EVENT_MOUSEOVER=`mouseover${EVENT_KEY}`,EVENT_MOUSEOUT=`mouseout${EVENT_KEY}`,EVENT_FOCUSIN=`focusin${EVENT_KEY}`,EVENT_FOCUSOUT=`focusout${EVENT_KEY}`,EVENT_HIDE=`hide${EVENT_KEY}`,EVENT_HIDDEN=`hidden${EVENT_KEY}`,EVENT_SHOW=`show${EVENT_KEY}`,EVENT_SHOWN=`shown${EVENT_KEY}`,CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType={animation:"boolean",autohide:"boolean",delay:"number"},Default={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}show(){if(EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback((()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented)return;this._element.classList.add("showing"),this._queueCallback((()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const s=e.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,(e=>this._onInteraction(e,!0))),EventHandler.on(this._element,EVENT_MOUSEOUT,(e=>this._onInteraction(e,!1))),EventHandler.on(this._element,EVENT_FOCUSIN,(e=>this._onInteraction(e,!0))),EventHandler.on(this._element,EVENT_FOCUSOUT,(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=Toast.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}enableDismissTrigger(Toast),defineJQueryPlugin(Toast);var dropdownTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]'));dropdownTriggerList.map((function(e){var t={boundary:"viewport"===e.getAttribute("data-bs-boundary")?document.querySelector(".btn"):"clippingParents"};return new Dropdown(e,t)}));var tooltipTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));tooltipTriggerList.map((function(e){var t,s,i={delay:{show:50,hide:50},html:null!==(t="true"===e.getAttribute("data-bs-html"))&&void 0!==t&&t,placement:null!==(s=e.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new Tooltip(e,i)}));var popoverTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));popoverTriggerList.map((function(e){var t,s,i={delay:{show:50,hide:50},html:null!==(t="true"===e.getAttribute("data-bs-html"))&&void 0!==t&&t,placement:null!==(s=e.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new Popover(e,i)}));var switchesTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]'));switchesTriggerList.map((function(e){e.addEventListener("click",(function(t){t.stopPropagation(),e.classList.toggle("active")}))}));var toastsTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]'));toastsTriggerList.map((function(e){return new Toast(e)})); \ No newline at end of file diff --git a/public/js/tabler.js b/public/js/tabler.js new file mode 100644 index 0000000..a9daf46 --- /dev/null +++ b/public/js/tabler.js @@ -0,0 +1,7543 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +})((function () { 'use strict'; + + var e=new Map;function t(t){var o=e.get(t);o&&o.destroy();}function o(t){var o=e.get(t);o&&o.update();}var r=null;"undefined"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:""===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value;}),l=function(o){t.removeEventListener("autosize:destroy",l),t.removeEventListener("autosize:update",s),t.removeEventListener("input",i),window.removeEventListener("resize",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t);}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",l),t.addEventListener("autosize:update",s),t.addEventListener("input",i),window.addEventListener("resize",s),t.style.overflowX="hidden",t.style.wordWrap="break-word",e.set(t,{destroy:l,update:s}),s();}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&("vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior="auto",t.scrollTop=o,t.style.scrollBehavior=null;})}}(t),t.style.height=""),i="content-box"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),"none"!==n.maxHeight&&i>parseFloat(n.maxHeight)?("hidden"===n.overflowY&&(t.style.overflow="scroll"),i=parseFloat(n.maxHeight)):"hidden"!==n.overflowY&&(t.style.overflow="hidden"),t.style.height=i+"px",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;"hidden"===n.overflow&&(t.style.textAlign="start"===v?"end":"start"),a({restoreTextAlign:v,testForHeightReduction:!0});}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null});}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r; + + var elements = document.querySelectorAll('[data-bs-toggle="autosize"]'); + if (elements.length) { + elements.forEach(function (element) { + n(element); + }); + } + + function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; + } + + function IMask(el) { + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return new IMask.InputMask(el, opts); + } + + class ChangeDetails { + constructor(details) { + Object.assign(this, { + inserted: '', + rawInserted: '', + skip: false, + tailShift: 0 + }, details); + } + aggregate(details) { + this.rawInserted += details.rawInserted; + this.skip = this.skip || details.skip; + this.inserted += details.inserted; + this.tailShift += details.tailShift; + return this; + } + get offset() { + return this.tailShift + this.inserted.length; + } + } + IMask.ChangeDetails = ChangeDetails; + + function isString(str) { + return typeof str === 'string' || str instanceof String; + } + const DIRECTION = { + NONE: 'NONE', + LEFT: 'LEFT', + FORCE_LEFT: 'FORCE_LEFT', + RIGHT: 'RIGHT', + FORCE_RIGHT: 'FORCE_RIGHT' + }; + function forceDirection(direction) { + switch (direction) { + case DIRECTION.LEFT: + return DIRECTION.FORCE_LEFT; + case DIRECTION.RIGHT: + return DIRECTION.FORCE_RIGHT; + default: + return direction; + } + } + function escapeRegExp(str) { + return str.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); + } + function normalizePrepare(prep) { + return Array.isArray(prep) ? prep : [prep, new ChangeDetails()]; + } + function objectIncludes(b, a) { + if (a === b) return true; + var arrA = Array.isArray(a), + arrB = Array.isArray(b), + i; + if (arrA && arrB) { + if (a.length != b.length) return false; + for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false; + return true; + } + if (arrA != arrB) return false; + if (a && b && typeof a === 'object' && typeof b === 'object') { + var dateA = a instanceof Date, + dateB = b instanceof Date; + if (dateA && dateB) return a.getTime() == b.getTime(); + if (dateA != dateB) return false; + var regexpA = a instanceof RegExp, + regexpB = b instanceof RegExp; + if (regexpA && regexpB) return a.toString() == b.toString(); + if (regexpA != regexpB) return false; + var keys = Object.keys(a); + for (i = 0; i < keys.length; i++) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false; + return true; + } else if (a && b && typeof a === 'function' && typeof b === 'function') { + return a.toString() === b.toString(); + } + return false; + } + + class ActionDetails { + constructor(value, cursorPos, oldValue, oldSelection) { + this.value = value; + this.cursorPos = cursorPos; + this.oldValue = oldValue; + this.oldSelection = oldSelection; + while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) { + --this.oldSelection.start; + } + } + get startChangePos() { + return Math.min(this.cursorPos, this.oldSelection.start); + } + get insertedCount() { + return this.cursorPos - this.startChangePos; + } + get inserted() { + return this.value.substr(this.startChangePos, this.insertedCount); + } + get removedCount() { + return Math.max(this.oldSelection.end - this.startChangePos || + this.oldValue.length - this.value.length, 0); + } + get removed() { + return this.oldValue.substr(this.startChangePos, this.removedCount); + } + get head() { + return this.value.substring(0, this.startChangePos); + } + get tail() { + return this.value.substring(this.startChangePos + this.insertedCount); + } + get removeDirection() { + if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; + return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) && + this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT; + } + } + + class ContinuousTailDetails { + constructor() { + let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + let stop = arguments.length > 2 ? arguments[2] : undefined; + this.value = value; + this.from = from; + this.stop = stop; + } + toString() { + return this.value; + } + extend(tail) { + this.value += String(tail); + } + appendTo(masked) { + return masked.append(this.toString(), { + tail: true + }).aggregate(masked._appendPlaceholder()); + } + get state() { + return { + value: this.value, + from: this.from, + stop: this.stop + }; + } + set state(state) { + Object.assign(this, state); + } + unshift(beforePos) { + if (!this.value.length || beforePos != null && this.from >= beforePos) return ''; + const shiftChar = this.value[0]; + this.value = this.value.slice(1); + return shiftChar; + } + shift() { + if (!this.value.length) return ''; + const shiftChar = this.value[this.value.length - 1]; + this.value = this.value.slice(0, -1); + return shiftChar; + } + } + + class Masked { + constructor(opts) { + this._value = ''; + this._update(Object.assign({}, Masked.DEFAULTS, opts)); + this.isInitialized = true; + } + updateOptions(opts) { + if (!Object.keys(opts).length) return; + this.withValueRefresh(this._update.bind(this, opts)); + } + _update(opts) { + Object.assign(this, opts); + } + get state() { + return { + _value: this.value + }; + } + set state(state) { + this._value = state._value; + } + reset() { + this._value = ''; + } + get value() { + return this._value; + } + set value(value) { + this.resolve(value); + } + resolve(value) { + this.reset(); + this.append(value, { + input: true + }, ''); + this.doCommit(); + return this.value; + } + get unmaskedValue() { + return this.value; + } + set unmaskedValue(value) { + this.reset(); + this.append(value, {}, ''); + this.doCommit(); + } + get typedValue() { + return this.doParse(this.value); + } + set typedValue(value) { + this.value = this.doFormat(value); + } + get rawInputValue() { + return this.extractInput(0, this.value.length, { + raw: true + }); + } + set rawInputValue(value) { + this.reset(); + this.append(value, { + raw: true + }, ''); + this.doCommit(); + } + get displayValue() { + return this.value; + } + get isComplete() { + return true; + } + get isFilled() { + return this.isComplete; + } + nearestInputPos(cursorPos, direction) { + return cursorPos; + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return Math.min(this.value.length, toPos - fromPos); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return this.value.slice(fromPos, toPos); + } + extractTail() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos); + } + appendTail(tail) { + if (isString(tail)) tail = new ContinuousTailDetails(String(tail)); + return tail.appendTo(this); + } + _appendCharRaw(ch) { + if (!ch) return new ChangeDetails(); + this._value += ch; + return new ChangeDetails({ + inserted: ch, + rawInserted: ch + }); + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let checkTail = arguments.length > 2 ? arguments[2] : undefined; + const consistentState = this.state; + let details; + [ch, details] = normalizePrepare(this.doPrepare(ch, flags)); + details = details.aggregate(this._appendCharRaw(ch, flags)); + if (details.inserted) { + let consistentTail; + let appended = this.doValidate(flags) !== false; + if (appended && checkTail != null) { + const beforeTailState = this.state; + if (this.overwrite === true) { + consistentTail = checkTail.state; + checkTail.unshift(this.value.length - details.tailShift); + } + let tailDetails = this.appendTail(checkTail); + appended = tailDetails.rawInserted === checkTail.toString(); + if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') { + this.state = beforeTailState; + consistentTail = checkTail.state; + checkTail.shift(); + tailDetails = this.appendTail(checkTail); + appended = tailDetails.rawInserted === checkTail.toString(); + } + if (appended && tailDetails.inserted) this.state = beforeTailState; + } + if (!appended) { + details = new ChangeDetails(); + this.state = consistentState; + if (checkTail && consistentTail) checkTail.state = consistentTail; + } + } + return details; + } + _appendPlaceholder() { + return new ChangeDetails(); + } + _appendEager() { + return new ChangeDetails(); + } + append(str, flags, tail) { + if (!isString(str)) throw new Error('value should be string'); + const details = new ChangeDetails(); + const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail; + if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state; + for (let ci = 0; ci < str.length; ++ci) { + const d = this._appendChar(str[ci], flags, checkTail); + if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break; + details.aggregate(d); + } + if (checkTail != null) { + details.tailShift += this.appendTail(checkTail).tailShift; + } + if ((this.eager === true || this.eager === 'append') && flags !== null && flags !== void 0 && flags.input && str) { + details.aggregate(this._appendEager()); + } + return details; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + this._value = this.value.slice(0, fromPos) + this.value.slice(toPos); + return new ChangeDetails(); + } + withValueRefresh(fn) { + if (this._refreshing || !this.isInitialized) return fn(); + this._refreshing = true; + const rawInput = this.rawInputValue; + const value = this.value; + const ret = fn(); + this.rawInputValue = rawInput; + if (this.value && this.value !== value && value.indexOf(this.value) === 0) { + this.append(value.slice(this.value.length), {}, ''); + } + delete this._refreshing; + return ret; + } + runIsolated(fn) { + if (this._isolated || !this.isInitialized) return fn(this); + this._isolated = true; + const state = this.state; + const ret = fn(this); + this.state = state; + delete this._isolated; + return ret; + } + doSkipInvalid(ch) { + return this.skipInvalid; + } + doPrepare(str) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.prepare ? this.prepare(str, this, flags) : str; + } + doValidate(flags) { + return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags)); + } + doCommit() { + if (this.commit) this.commit(this.value, this); + } + doFormat(value) { + return this.format ? this.format(value, this) : value; + } + doParse(str) { + return this.parse ? this.parse(str, this) : str; + } + splice(start, deleteCount, inserted, removeDirection) { + let flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : { + input: true + }; + const tailPos = start + deleteCount; + const tail = this.extractTail(tailPos); + const eagerRemove = this.eager === true || this.eager === 'remove'; + let oldRawValue; + if (eagerRemove) { + removeDirection = forceDirection(removeDirection); + oldRawValue = this.extractInput(0, tailPos, { + raw: true + }); + } + let startChangePos = start; + const details = new ChangeDetails(); + if (removeDirection !== DIRECTION.NONE) { + startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection); + details.tailShift = startChangePos - start; + } + details.aggregate(this.remove(startChangePos)); + if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) { + if (removeDirection === DIRECTION.FORCE_LEFT) { + let valLength; + while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) { + details.aggregate(new ChangeDetails({ + tailShift: -1 + })).aggregate(this.remove(valLength - 1)); + } + } else if (removeDirection === DIRECTION.FORCE_RIGHT) { + tail.unshift(); + } + } + return details.aggregate(this.append(inserted, flags, tail)); + } + maskEquals(mask) { + return this.mask === mask; + } + typedValueEquals(value) { + const tval = this.typedValue; + return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue); + } + } + Masked.DEFAULTS = { + format: String, + parse: v => v, + skipInvalid: true + }; + Masked.EMPTY_VALUES = [undefined, null, '']; + IMask.Masked = Masked; + + function maskedClass(mask) { + if (mask == null) { + throw new Error('mask property should be defined'); + } + if (mask instanceof RegExp) return IMask.MaskedRegExp; + if (isString(mask)) return IMask.MaskedPattern; + if (mask instanceof Date || mask === Date) return IMask.MaskedDate; + if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; + if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; + if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; + if (mask instanceof IMask.Masked) return mask.constructor; + if (mask instanceof Function) return IMask.MaskedFunction; + console.warn('Mask not found for mask', mask); + return IMask.Masked; + } + function createMask(opts) { + if (IMask.Masked && opts instanceof IMask.Masked) return opts; + opts = Object.assign({}, opts); + const mask = opts.mask; + if (IMask.Masked && mask instanceof IMask.Masked) return mask; + const MaskedClass = maskedClass(mask); + if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.'); + return new MaskedClass(opts); + } + IMask.createMask = createMask; + + const _excluded$4 = ["parent", "isOptional", "placeholderChar", "displayChar", "lazy", "eager"]; + const DEFAULT_INPUT_DEFINITIONS = { + '0': /\d/, + 'a': /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, + '*': /./ + }; + class PatternInputDefinition { + constructor(opts) { + const { + parent, + isOptional, + placeholderChar, + displayChar, + lazy, + eager + } = opts, + maskOpts = _objectWithoutPropertiesLoose(opts, _excluded$4); + this.masked = createMask(maskOpts); + Object.assign(this, { + parent, + isOptional, + placeholderChar, + displayChar, + lazy, + eager + }); + } + reset() { + this.isFilled = false; + this.masked.reset(); + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + if (fromPos === 0 && toPos >= 1) { + this.isFilled = false; + return this.masked.remove(fromPos, toPos); + } + return new ChangeDetails(); + } + get value() { + return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : ''); + } + get unmaskedValue() { + return this.masked.unmaskedValue; + } + get displayValue() { + return this.masked.value && this.displayChar || this.value; + } + get isComplete() { + return Boolean(this.masked.value) || this.isOptional; + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (this.isFilled) return new ChangeDetails(); + const state = this.masked.state; + const details = this.masked._appendChar(ch, flags); + if (details.inserted && this.doValidate(flags) === false) { + details.inserted = details.rawInserted = ''; + this.masked.state = state; + } + if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) { + details.inserted = this.placeholderChar; + } + details.skip = !details.inserted && !this.isOptional; + this.isFilled = Boolean(details.inserted); + return details; + } + append() { + return this.masked.append(...arguments); + } + _appendPlaceholder() { + const details = new ChangeDetails(); + if (this.isFilled || this.isOptional) return details; + this.isFilled = true; + details.inserted = this.placeholderChar; + return details; + } + _appendEager() { + return new ChangeDetails(); + } + extractTail() { + return this.masked.extractTail(...arguments); + } + appendTail() { + return this.masked.appendTail(...arguments); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 ? arguments[2] : undefined; + return this.masked.extractInput(fromPos, toPos, flags); + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + const minPos = 0; + const maxPos = this.value.length; + const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos); + switch (direction) { + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + return this.isComplete ? boundPos : minPos; + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + return this.isComplete ? boundPos : maxPos; + case DIRECTION.NONE: + default: + return boundPos; + } + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return this.value.slice(fromPos, toPos).length; + } + doValidate() { + return this.masked.doValidate(...arguments) && (!this.parent || this.parent.doValidate(...arguments)); + } + doCommit() { + this.masked.doCommit(); + } + get state() { + return { + masked: this.masked.state, + isFilled: this.isFilled + }; + } + set state(state) { + this.masked.state = state.masked; + this.isFilled = state.isFilled; + } + } + + class PatternFixedDefinition { + constructor(opts) { + Object.assign(this, opts); + this._value = ''; + this.isFixed = true; + } + get value() { + return this._value; + } + get unmaskedValue() { + return this.isUnmasking ? this.value : ''; + } + get displayValue() { + return this.value; + } + reset() { + this._isRawInput = false; + this._value = ''; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + this._value = this._value.slice(0, fromPos) + this._value.slice(toPos); + if (!this._value) this._isRawInput = false; + return new ChangeDetails(); + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + const minPos = 0; + const maxPos = this._value.length; + switch (direction) { + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + return minPos; + case DIRECTION.NONE: + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + default: + return maxPos; + } + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + return this._isRawInput ? toPos - fromPos : 0; + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length; + let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || ''; + } + get isComplete() { + return true; + } + get isFilled() { + return Boolean(this._value); + } + _appendChar(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const details = new ChangeDetails(); + if (this.isFilled) return details; + const appendEager = this.eager === true || this.eager === 'append'; + const appended = this.char === ch; + const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail; + if (isResolved) details.rawInserted = this.char; + this._value = details.inserted = this.char; + this._isRawInput = isResolved && (flags.raw || flags.input); + return details; + } + _appendEager() { + return this._appendChar(this.char, { + tail: true + }); + } + _appendPlaceholder() { + const details = new ChangeDetails(); + if (this.isFilled) return details; + this._value = details.inserted = this.char; + return details; + } + extractTail() { + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + return new ContinuousTailDetails(''); + } + appendTail(tail) { + if (isString(tail)) tail = new ContinuousTailDetails(String(tail)); + return tail.appendTo(this); + } + append(str, flags, tail) { + const details = this._appendChar(str[0], flags); + if (tail != null) { + details.tailShift += this.appendTail(tail).tailShift; + } + return details; + } + doCommit() {} + get state() { + return { + _value: this._value, + _isRawInput: this._isRawInput + }; + } + set state(state) { + Object.assign(this, state); + } + } + + const _excluded$3 = ["chunks"]; + class ChunksTailDetails { + constructor() { + let chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + this.chunks = chunks; + this.from = from; + } + toString() { + return this.chunks.map(String).join(''); + } + extend(tailChunk) { + if (!String(tailChunk)) return; + if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk)); + const lastChunk = this.chunks[this.chunks.length - 1]; + const extendLast = lastChunk && ( + lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && + tailChunk.from === lastChunk.from + lastChunk.toString().length; + if (tailChunk instanceof ContinuousTailDetails) { + if (extendLast) { + lastChunk.extend(tailChunk.toString()); + } else { + this.chunks.push(tailChunk); + } + } else if (tailChunk instanceof ChunksTailDetails) { + if (tailChunk.stop == null) { + let firstTailChunk; + while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) { + firstTailChunk = tailChunk.chunks.shift(); + firstTailChunk.from += tailChunk.from; + this.extend(firstTailChunk); + } + } + if (tailChunk.toString()) { + tailChunk.stop = tailChunk.blockIndex; + this.chunks.push(tailChunk); + } + } + } + appendTo(masked) { + if (!(masked instanceof IMask.MaskedPattern)) { + const tail = new ContinuousTailDetails(this.toString()); + return tail.appendTo(masked); + } + const details = new ChangeDetails(); + for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) { + const chunk = this.chunks[ci]; + const lastBlockIter = masked._mapPosToBlock(masked.value.length); + const stop = chunk.stop; + let chunkBlock; + if (stop != null && ( + !lastBlockIter || lastBlockIter.index <= stop)) { + if (chunk instanceof ChunksTailDetails || + masked._stops.indexOf(stop) >= 0) { + const phDetails = masked._appendPlaceholder(stop); + details.aggregate(phDetails); + } + chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop]; + } + if (chunkBlock) { + const tailDetails = chunkBlock.appendTail(chunk); + tailDetails.skip = false; + details.aggregate(tailDetails); + masked._value += tailDetails.inserted; + const remainChars = chunk.toString().slice(tailDetails.rawInserted.length); + if (remainChars) details.aggregate(masked.append(remainChars, { + tail: true + })); + } else { + details.aggregate(masked.append(chunk.toString(), { + tail: true + })); + } + } + return details; + } + get state() { + return { + chunks: this.chunks.map(c => c.state), + from: this.from, + stop: this.stop, + blockIndex: this.blockIndex + }; + } + set state(state) { + const { + chunks + } = state, + props = _objectWithoutPropertiesLoose(state, _excluded$3); + Object.assign(this, props); + this.chunks = chunks.map(cstate => { + const chunk = "chunks" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); + chunk.state = cstate; + return chunk; + }); + } + unshift(beforePos) { + if (!this.chunks.length || beforePos != null && this.from >= beforePos) return ''; + const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos; + let ci = 0; + while (ci < this.chunks.length) { + const chunk = this.chunks[ci]; + const shiftChar = chunk.unshift(chunkShiftPos); + if (chunk.toString()) { + if (!shiftChar) break; + ++ci; + } else { + this.chunks.splice(ci, 1); + } + if (shiftChar) return shiftChar; + } + return ''; + } + shift() { + if (!this.chunks.length) return ''; + let ci = this.chunks.length - 1; + while (0 <= ci) { + const chunk = this.chunks[ci]; + const shiftChar = chunk.shift(); + if (chunk.toString()) { + if (!shiftChar) break; + --ci; + } else { + this.chunks.splice(ci, 1); + } + if (shiftChar) return shiftChar; + } + return ''; + } + } + + class PatternCursor { + constructor(masked, pos) { + this.masked = masked; + this._log = []; + const { + offset, + index + } = masked._mapPosToBlock(pos) || (pos < 0 ? + { + index: 0, + offset: 0 + } : + { + index: this.masked._blocks.length, + offset: 0 + }); + this.offset = offset; + this.index = index; + this.ok = false; + } + get block() { + return this.masked._blocks[this.index]; + } + get pos() { + return this.masked._blockStartPos(this.index) + this.offset; + } + get state() { + return { + index: this.index, + offset: this.offset, + ok: this.ok + }; + } + set state(s) { + Object.assign(this, s); + } + pushState() { + this._log.push(this.state); + } + popState() { + const s = this._log.pop(); + this.state = s; + return s; + } + bindBlock() { + if (this.block) return; + if (this.index < 0) { + this.index = 0; + this.offset = 0; + } + if (this.index >= this.masked._blocks.length) { + this.index = this.masked._blocks.length - 1; + this.offset = this.block.value.length; + } + } + _pushLeft(fn) { + this.pushState(); + for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) { + var _this$block; + if (fn()) return this.ok = true; + } + return this.ok = false; + } + _pushRight(fn) { + this.pushState(); + for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) { + if (fn()) return this.ok = true; + } + return this.ok = false; + } + pushLeftBeforeFilled() { + return this._pushLeft(() => { + if (this.block.isFixed || !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT); + if (this.offset !== 0) return true; + }); + } + pushLeftBeforeInput() { + return this._pushLeft(() => { + if (this.block.isFixed) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT); + return true; + }); + } + pushLeftBeforeRequired() { + return this._pushLeft(() => { + if (this.block.isFixed || this.block.isOptional && !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT); + return true; + }); + } + pushRightBeforeFilled() { + return this._pushRight(() => { + if (this.block.isFixed || !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT); + if (this.offset !== this.block.value.length) return true; + }); + } + pushRightBeforeInput() { + return this._pushRight(() => { + if (this.block.isFixed) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE); + return true; + }); + } + pushRightBeforeRequired() { + return this._pushRight(() => { + if (this.block.isFixed || this.block.isOptional && !this.block.value) return; + this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE); + return true; + }); + } + } + + class MaskedRegExp extends Masked { + _update(opts) { + if (opts.mask) opts.validate = value => value.search(opts.mask) >= 0; + super._update(opts); + } + } + IMask.MaskedRegExp = MaskedRegExp; + + const _excluded$2 = ["_blocks"]; + class MaskedPattern extends Masked { + constructor() { + let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions); + super(Object.assign({}, MaskedPattern.DEFAULTS, opts)); + } + _update() { + let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + opts.definitions = Object.assign({}, this.definitions, opts.definitions); + super._update(opts); + this._rebuildMask(); + } + _rebuildMask() { + const defs = this.definitions; + this._blocks = []; + this._stops = []; + this._maskedBlocks = {}; + let pattern = this.mask; + if (!pattern || !defs) return; + let unmaskingBlock = false; + let optionalBlock = false; + for (let i = 0; i < pattern.length; ++i) { + var _defs$char, _defs$char2; + if (this.blocks) { + const p = pattern.slice(i); + const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0); + bNames.sort((a, b) => b.length - a.length); + const bName = bNames[0]; + if (bName) { + const maskedBlock = createMask(Object.assign({ + parent: this, + lazy: this.lazy, + eager: this.eager, + placeholderChar: this.placeholderChar, + displayChar: this.displayChar, + overwrite: this.overwrite + }, this.blocks[bName])); + if (maskedBlock) { + this._blocks.push(maskedBlock); + if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = []; + this._maskedBlocks[bName].push(this._blocks.length - 1); + } + i += bName.length - 1; + continue; + } + } + let char = pattern[i]; + let isInput = (char in defs); + if (char === MaskedPattern.STOP_CHAR) { + this._stops.push(this._blocks.length); + continue; + } + if (char === '{' || char === '}') { + unmaskingBlock = !unmaskingBlock; + continue; + } + if (char === '[' || char === ']') { + optionalBlock = !optionalBlock; + continue; + } + if (char === MaskedPattern.ESCAPE_CHAR) { + ++i; + char = pattern[i]; + if (!char) break; + isInput = false; + } + const maskOpts = (_defs$char = defs[char]) !== null && _defs$char !== void 0 && _defs$char.mask && !(((_defs$char2 = defs[char]) === null || _defs$char2 === void 0 ? void 0 : _defs$char2.mask.prototype) instanceof IMask.Masked) ? defs[char] : { + mask: defs[char] + }; + const def = isInput ? new PatternInputDefinition(Object.assign({ + parent: this, + isOptional: optionalBlock, + lazy: this.lazy, + eager: this.eager, + placeholderChar: this.placeholderChar, + displayChar: this.displayChar + }, maskOpts)) : new PatternFixedDefinition({ + char, + eager: this.eager, + isUnmasking: unmaskingBlock + }); + this._blocks.push(def); + } + } + get state() { + return Object.assign({}, super.state, { + _blocks: this._blocks.map(b => b.state) + }); + } + set state(state) { + const { + _blocks + } = state, + maskedState = _objectWithoutPropertiesLoose(state, _excluded$2); + this._blocks.forEach((b, bi) => b.state = _blocks[bi]); + super.state = maskedState; + } + reset() { + super.reset(); + this._blocks.forEach(b => b.reset()); + } + get isComplete() { + return this._blocks.every(b => b.isComplete); + } + get isFilled() { + return this._blocks.every(b => b.isFilled); + } + get isFixed() { + return this._blocks.every(b => b.isFixed); + } + get isOptional() { + return this._blocks.every(b => b.isOptional); + } + doCommit() { + this._blocks.forEach(b => b.doCommit()); + super.doCommit(); + } + get unmaskedValue() { + return this._blocks.reduce((str, b) => str += b.unmaskedValue, ''); + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get value() { + return this._blocks.reduce((str, b) => str += b.value, ''); + } + set value(value) { + super.value = value; + } + get displayValue() { + return this._blocks.reduce((str, b) => str += b.displayValue, ''); + } + appendTail(tail) { + return super.appendTail(tail).aggregate(this._appendPlaceholder()); + } + _appendEager() { + var _this$_mapPosToBlock; + const details = new ChangeDetails(); + let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index; + if (startBlockIndex == null) return details; + if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex; + for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) { + const d = this._blocks[bi]._appendEager(); + if (!d.inserted) break; + details.aggregate(d); + } + return details; + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const blockIter = this._mapPosToBlock(this.value.length); + const details = new ChangeDetails(); + if (!blockIter) return details; + for (let bi = blockIter.index;; ++bi) { + var _flags$_beforeTailSta, _flags$_beforeTailSta2; + const block = this._blocks[bi]; + if (!block) break; + const blockDetails = block._appendChar(ch, Object.assign({}, flags, { + _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi] + })); + const skip = blockDetails.skip; + details.aggregate(blockDetails); + if (skip || blockDetails.rawInserted) break; + } + return details; + } + extractTail() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + const chunkTail = new ChunksTailDetails(); + if (fromPos === toPos) return chunkTail; + this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => { + const blockChunk = b.extractTail(bFromPos, bToPos); + blockChunk.stop = this._findStopBefore(bi); + blockChunk.from = this._blockStartPos(bi); + if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi; + chunkTail.extend(blockChunk); + }); + return chunkTail; + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + if (fromPos === toPos) return ''; + let input = ''; + this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => { + input += b.extractInput(fromPos, toPos, flags); + }); + return input; + } + _findStopBefore(blockIndex) { + let stopBefore; + for (let si = 0; si < this._stops.length; ++si) { + const stop = this._stops[si]; + if (stop <= blockIndex) stopBefore = stop;else break; + } + return stopBefore; + } + _appendPlaceholder(toBlockIndex) { + const details = new ChangeDetails(); + if (this.lazy && toBlockIndex == null) return details; + const startBlockIter = this._mapPosToBlock(this.value.length); + if (!startBlockIter) return details; + const startBlockIndex = startBlockIter.index; + const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length; + this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => { + if (!b.lazy || toBlockIndex != null) { + const args = b._blocks != null ? [b._blocks.length] : []; + const bDetails = b._appendPlaceholder(...args); + this._value += bDetails.inserted; + details.aggregate(bDetails); + } + }); + return details; + } + _mapPosToBlock(pos) { + let accVal = ''; + for (let bi = 0; bi < this._blocks.length; ++bi) { + const block = this._blocks[bi]; + const blockStartPos = accVal.length; + accVal += block.value; + if (pos <= accVal.length) { + return { + index: bi, + offset: pos - blockStartPos + }; + } + } + } + _blockStartPos(blockIndex) { + return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.value.length, 0); + } + _forEachBlocksInRange(fromPos) { + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let fn = arguments.length > 2 ? arguments[2] : undefined; + const fromBlockIter = this._mapPosToBlock(fromPos); + if (fromBlockIter) { + const toBlockIter = this._mapPosToBlock(toPos); + const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index; + const fromBlockStartPos = fromBlockIter.offset; + const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length; + fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos); + if (toBlockIter && !isSameBlock) { + for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) { + fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length); + } + fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset); + } + } + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + const removeDetails = super.remove(fromPos, toPos); + this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => { + removeDetails.aggregate(b.remove(bFromPos, bToPos)); + }); + return removeDetails; + } + nearestInputPos(cursorPos) { + let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; + if (!this._blocks.length) return 0; + const cursor = new PatternCursor(this, cursorPos); + if (direction === DIRECTION.NONE) { + if (cursor.pushRightBeforeInput()) return cursor.pos; + cursor.popState(); + if (cursor.pushLeftBeforeInput()) return cursor.pos; + return this.value.length; + } + if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) { + if (direction === DIRECTION.LEFT) { + cursor.pushRightBeforeFilled(); + if (cursor.ok && cursor.pos === cursorPos) return cursorPos; + cursor.popState(); + } + cursor.pushLeftBeforeInput(); + cursor.pushLeftBeforeRequired(); + cursor.pushLeftBeforeFilled(); + if (direction === DIRECTION.LEFT) { + cursor.pushRightBeforeInput(); + cursor.pushRightBeforeRequired(); + if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos; + cursor.popState(); + if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos; + cursor.popState(); + } + if (cursor.ok) return cursor.pos; + if (direction === DIRECTION.FORCE_LEFT) return 0; + cursor.popState(); + if (cursor.ok) return cursor.pos; + cursor.popState(); + if (cursor.ok) return cursor.pos; + return 0; + } + if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) { + cursor.pushRightBeforeInput(); + cursor.pushRightBeforeRequired(); + if (cursor.pushRightBeforeFilled()) return cursor.pos; + if (direction === DIRECTION.FORCE_RIGHT) return this.value.length; + cursor.popState(); + if (cursor.ok) return cursor.pos; + cursor.popState(); + if (cursor.ok) return cursor.pos; + return this.nearestInputPos(cursorPos, DIRECTION.LEFT); + } + return cursorPos; + } + totalInputPositions() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let total = 0; + this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => { + total += b.totalInputPositions(bFromPos, bToPos); + }); + return total; + } + maskedBlock(name) { + return this.maskedBlocks(name)[0]; + } + maskedBlocks(name) { + const indices = this._maskedBlocks[name]; + if (!indices) return []; + return indices.map(gi => this._blocks[gi]); + } + } + MaskedPattern.DEFAULTS = { + lazy: true, + placeholderChar: '_' + }; + MaskedPattern.STOP_CHAR = '`'; + MaskedPattern.ESCAPE_CHAR = '\\'; + MaskedPattern.InputDefinition = PatternInputDefinition; + MaskedPattern.FixedDefinition = PatternFixedDefinition; + IMask.MaskedPattern = MaskedPattern; + + class MaskedRange extends MaskedPattern { + get _matchFrom() { + return this.maxLength - String(this.from).length; + } + _update(opts) { + opts = Object.assign({ + to: this.to || 0, + from: this.from || 0, + maxLength: this.maxLength || 0 + }, opts); + let maxLength = String(opts.to).length; + if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength); + opts.maxLength = maxLength; + const fromStr = String(opts.from).padStart(maxLength, '0'); + const toStr = String(opts.to).padStart(maxLength, '0'); + let sameCharsCount = 0; + while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount; + opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\0') + '0'.repeat(maxLength - sameCharsCount); + super._update(opts); + } + get isComplete() { + return super.isComplete && Boolean(this.value); + } + boundaries(str) { + let minstr = ''; + let maxstr = ''; + const [, placeholder, num] = str.match(/^(\D*)(\d*)(\D*)/) || []; + if (num) { + minstr = '0'.repeat(placeholder.length) + num; + maxstr = '9'.repeat(placeholder.length) + num; + } + minstr = minstr.padEnd(this.maxLength, '0'); + maxstr = maxstr.padEnd(this.maxLength, '9'); + return [minstr, maxstr]; + } + doPrepare(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let details; + [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\D/g, ''), flags)); + if (!this.autofix || !ch) return ch; + const fromStr = String(this.from).padStart(this.maxLength, '0'); + const toStr = String(this.to).padStart(this.maxLength, '0'); + let nextVal = this.value + ch; + if (nextVal.length > this.maxLength) return ''; + const [minstr, maxstr] = this.boundaries(nextVal); + if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1]; + if (Number(minstr) > this.to) { + if (this.autofix === 'pad' && nextVal.length < this.maxLength) { + return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))]; + } + return toStr[nextVal.length - 1]; + } + return ch; + } + doValidate() { + const str = this.value; + const firstNonZero = str.search(/[^0]/); + if (firstNonZero === -1 && str.length <= this._matchFrom) return true; + const [minstr, maxstr] = this.boundaries(str); + return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(...arguments); + } + } + IMask.MaskedRange = MaskedRange; + + class MaskedDate extends MaskedPattern { + constructor(opts) { + super(Object.assign({}, MaskedDate.DEFAULTS, opts)); + } + _update(opts) { + if (opts.mask === Date) delete opts.mask; + if (opts.pattern) opts.mask = opts.pattern; + const blocks = opts.blocks; + opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); + if (opts.min) opts.blocks.Y.from = opts.min.getFullYear(); + if (opts.max) opts.blocks.Y.to = opts.max.getFullYear(); + if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) { + opts.blocks.m.from = opts.min.getMonth() + 1; + opts.blocks.m.to = opts.max.getMonth() + 1; + if (opts.blocks.m.from === opts.blocks.m.to) { + opts.blocks.d.from = opts.min.getDate(); + opts.blocks.d.to = opts.max.getDate(); + } + } + Object.assign(opts.blocks, this.blocks, blocks); + Object.keys(opts.blocks).forEach(bk => { + const b = opts.blocks[bk]; + if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix; + }); + super._update(opts); + } + doValidate() { + const date = this.date; + return super.doValidate(...arguments) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max)); + } + isDateExist(str) { + return this.format(this.parse(str, this), this).indexOf(str) >= 0; + } + get date() { + return this.typedValue; + } + set date(date) { + this.typedValue = date; + } + get typedValue() { + return this.isComplete ? super.typedValue : null; + } + set typedValue(value) { + super.typedValue = value; + } + maskEquals(mask) { + return mask === Date || super.maskEquals(mask); + } + } + MaskedDate.DEFAULTS = { + pattern: 'd{.}`m{.}`Y', + format: date => { + if (!date) return ''; + const day = String(date.getDate()).padStart(2, '0'); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const year = date.getFullYear(); + return [day, month, year].join('.'); + }, + parse: str => { + const [day, month, year] = str.split('.'); + return new Date(year, month - 1, day); + } + }; + MaskedDate.GET_DEFAULT_BLOCKS = () => ({ + d: { + mask: MaskedRange, + from: 1, + to: 31, + maxLength: 2 + }, + m: { + mask: MaskedRange, + from: 1, + to: 12, + maxLength: 2 + }, + Y: { + mask: MaskedRange, + from: 1900, + to: 9999 + } + }); + IMask.MaskedDate = MaskedDate; + + class MaskElement { + get selectionStart() { + let start; + try { + start = this._unsafeSelectionStart; + } catch (e) {} + return start != null ? start : this.value.length; + } + get selectionEnd() { + let end; + try { + end = this._unsafeSelectionEnd; + } catch (e) {} + return end != null ? end : this.value.length; + } + select(start, end) { + if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return; + try { + this._unsafeSelect(start, end); + } catch (e) {} + } + _unsafeSelect(start, end) {} + get isActive() { + return false; + } + bindEvents(handlers) {} + unbindEvents() {} + } + IMask.MaskElement = MaskElement; + + class HTMLMaskElement extends MaskElement { + constructor(input) { + super(); + this.input = input; + this._handlers = {}; + } + get rootElement() { + var _this$input$getRootNo, _this$input$getRootNo2, _this$input; + return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document; + } + get isActive() { + return this.input === this.rootElement.activeElement; + } + get _unsafeSelectionStart() { + return this.input.selectionStart; + } + get _unsafeSelectionEnd() { + return this.input.selectionEnd; + } + _unsafeSelect(start, end) { + this.input.setSelectionRange(start, end); + } + get value() { + return this.input.value; + } + set value(value) { + this.input.value = value; + } + bindEvents(handlers) { + Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event])); + } + unbindEvents() { + Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event)); + } + _toggleEventHandler(event, handler) { + if (this._handlers[event]) { + this.input.removeEventListener(event, this._handlers[event]); + delete this._handlers[event]; + } + if (handler) { + this.input.addEventListener(event, handler); + this._handlers[event] = handler; + } + } + } + HTMLMaskElement.EVENTS_MAP = { + selectionChange: 'keydown', + input: 'input', + drop: 'drop', + click: 'click', + focus: 'focus', + commit: 'blur' + }; + IMask.HTMLMaskElement = HTMLMaskElement; + + class HTMLContenteditableMaskElement extends HTMLMaskElement { + get _unsafeSelectionStart() { + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + const anchorOffset = selection && selection.anchorOffset; + const focusOffset = selection && selection.focusOffset; + if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) { + return anchorOffset; + } + return focusOffset; + } + get _unsafeSelectionEnd() { + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + const anchorOffset = selection && selection.anchorOffset; + const focusOffset = selection && selection.focusOffset; + if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) { + return anchorOffset; + } + return focusOffset; + } + _unsafeSelect(start, end) { + if (!this.rootElement.createRange) return; + const range = this.rootElement.createRange(); + range.setStart(this.input.firstChild || this.input, start); + range.setEnd(this.input.lastChild || this.input, end); + const root = this.rootElement; + const selection = root.getSelection && root.getSelection(); + if (selection) { + selection.removeAllRanges(); + selection.addRange(range); + } + } + get value() { + return this.input.textContent; + } + set value(value) { + this.input.textContent = value; + } + } + IMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement; + + const _excluded$1 = ["mask"]; + class InputMask { + constructor(el, opts) { + this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el); + this.masked = createMask(opts); + this._listeners = {}; + this._value = ''; + this._unmaskedValue = ''; + this._saveSelection = this._saveSelection.bind(this); + this._onInput = this._onInput.bind(this); + this._onChange = this._onChange.bind(this); + this._onDrop = this._onDrop.bind(this); + this._onFocus = this._onFocus.bind(this); + this._onClick = this._onClick.bind(this); + this.alignCursor = this.alignCursor.bind(this); + this.alignCursorFriendly = this.alignCursorFriendly.bind(this); + this._bindEvents(); + this.updateValue(); + this._onChange(); + } + get mask() { + return this.masked.mask; + } + maskEquals(mask) { + var _this$masked; + return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask)); + } + set mask(mask) { + if (this.maskEquals(mask)) return; + if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) { + this.masked.updateOptions({ + mask + }); + return; + } + const masked = createMask({ + mask + }); + masked.unmaskedValue = this.masked.unmaskedValue; + this.masked = masked; + } + get value() { + return this._value; + } + set value(str) { + if (this.value === str) return; + this.masked.value = str; + this.updateControl(); + this.alignCursor(); + } + get unmaskedValue() { + return this._unmaskedValue; + } + set unmaskedValue(str) { + if (this.unmaskedValue === str) return; + this.masked.unmaskedValue = str; + this.updateControl(); + this.alignCursor(); + } + get typedValue() { + return this.masked.typedValue; + } + set typedValue(val) { + if (this.masked.typedValueEquals(val)) return; + this.masked.typedValue = val; + this.updateControl(); + this.alignCursor(); + } + get displayValue() { + return this.masked.displayValue; + } + _bindEvents() { + this.el.bindEvents({ + selectionChange: this._saveSelection, + input: this._onInput, + drop: this._onDrop, + click: this._onClick, + focus: this._onFocus, + commit: this._onChange + }); + } + _unbindEvents() { + if (this.el) this.el.unbindEvents(); + } + _fireEvent(ev) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const listeners = this._listeners[ev]; + if (!listeners) return; + listeners.forEach(l => l(...args)); + } + get selectionStart() { + return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart; + } + get cursorPos() { + return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd; + } + set cursorPos(pos) { + if (!this.el || !this.el.isActive) return; + this.el.select(pos, pos); + this._saveSelection(); + } + _saveSelection( + ) { + if (this.displayValue !== this.el.value) { + console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); + } + this._selection = { + start: this.selectionStart, + end: this.cursorPos + }; + } + updateValue() { + this.masked.value = this.el.value; + this._value = this.masked.value; + } + updateControl() { + const newUnmaskedValue = this.masked.unmaskedValue; + const newValue = this.masked.value; + const newDisplayValue = this.displayValue; + const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue; + this._unmaskedValue = newUnmaskedValue; + this._value = newValue; + if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue; + if (isChanged) this._fireChangeEvents(); + } + updateOptions(opts) { + const { + mask + } = opts, + restOpts = _objectWithoutPropertiesLoose(opts, _excluded$1); + const updateMask = !this.maskEquals(mask); + const updateOpts = !objectIncludes(this.masked, restOpts); + if (updateMask) this.mask = mask; + if (updateOpts) this.masked.updateOptions(restOpts); + if (updateMask || updateOpts) this.updateControl(); + } + updateCursor(cursorPos) { + if (cursorPos == null) return; + this.cursorPos = cursorPos; + this._delayUpdateCursor(cursorPos); + } + _delayUpdateCursor(cursorPos) { + this._abortUpdateCursor(); + this._changingCursorPos = cursorPos; + this._cursorChanging = setTimeout(() => { + if (!this.el) return; + this.cursorPos = this._changingCursorPos; + this._abortUpdateCursor(); + }, 10); + } + _fireChangeEvents() { + this._fireEvent('accept', this._inputEvent); + if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent); + } + _abortUpdateCursor() { + if (this._cursorChanging) { + clearTimeout(this._cursorChanging); + delete this._cursorChanging; + } + } + alignCursor() { + this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT)); + } + alignCursorFriendly() { + if (this.selectionStart !== this.cursorPos) return; + this.alignCursor(); + } + on(ev, handler) { + if (!this._listeners[ev]) this._listeners[ev] = []; + this._listeners[ev].push(handler); + return this; + } + off(ev, handler) { + if (!this._listeners[ev]) return this; + if (!handler) { + delete this._listeners[ev]; + return this; + } + const hIndex = this._listeners[ev].indexOf(handler); + if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1); + return this; + } + _onInput(e) { + this._inputEvent = e; + this._abortUpdateCursor(); + if (!this._selection) return this.updateValue(); + const details = new ActionDetails( + this.el.value, this.cursorPos, + this.displayValue, this._selection); + const oldRawValue = this.masked.rawInputValue; + const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, { + input: true, + raw: true + }).offset; + const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE; + let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection); + if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE); + this.updateControl(); + this.updateCursor(cursorPos); + delete this._inputEvent; + } + _onChange() { + if (this.displayValue !== this.el.value) { + this.updateValue(); + } + this.masked.doCommit(); + this.updateControl(); + this._saveSelection(); + } + _onDrop(ev) { + ev.preventDefault(); + ev.stopPropagation(); + } + _onFocus(ev) { + this.alignCursorFriendly(); + } + _onClick(ev) { + this.alignCursorFriendly(); + } + destroy() { + this._unbindEvents(); + this._listeners.length = 0; + delete this.el; + } + } + IMask.InputMask = InputMask; + + class MaskedEnum extends MaskedPattern { + _update(opts) { + if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length); + super._update(opts); + } + doValidate() { + return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) && super.doValidate(...arguments); + } + } + IMask.MaskedEnum = MaskedEnum; + + class MaskedNumber extends Masked { + constructor(opts) { + super(Object.assign({}, MaskedNumber.DEFAULTS, opts)); + } + _update(opts) { + super._update(opts); + this._updateRegExps(); + } + _updateRegExps() { + let start = '^' + (this.allowNegative ? '[+|\\-]?' : ''); + let mid = '\\d*'; + let end = (this.scale ? "(".concat(escapeRegExp(this.radix), "\\d{0,").concat(this.scale, "})?") : '') + '$'; + this._numberRegExp = new RegExp(start + mid + end); + this._mapToRadixRegExp = new RegExp("[".concat(this.mapToRadix.map(escapeRegExp).join(''), "]"), 'g'); + this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g'); + } + _removeThousandsSeparators(value) { + return value.replace(this._thousandsSeparatorRegExp, ''); + } + _insertThousandsSeparators(value) { + const parts = value.split(this.radix); + parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, this.thousandsSeparator); + return parts.join(this.radix); + } + doPrepare(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + ch = this._removeThousandsSeparators(this.scale && this.mapToRadix.length && ( + flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch); + const [prepCh, details] = normalizePrepare(super.doPrepare(ch, flags)); + if (ch && !prepCh) details.skip = true; + return [prepCh, details]; + } + _separatorsCount(to) { + let extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + let count = 0; + for (let pos = 0; pos < to; ++pos) { + if (this._value.indexOf(this.thousandsSeparator, pos) === pos) { + ++count; + if (extendOnSeparators) to += this.thousandsSeparator.length; + } + } + return count; + } + _separatorsCountFromSlice() { + let slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value; + return this._separatorsCount(this._removeThousandsSeparators(slice).length, true); + } + extractInput() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + let flags = arguments.length > 2 ? arguments[2] : undefined; + [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos); + return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags)); + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags); + const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value; + const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue); + this._value = this._removeThousandsSeparators(this.value); + const appendDetails = super._appendCharRaw(ch, flags); + this._value = this._insertThousandsSeparators(this._value); + const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value; + const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue); + appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length; + appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator; + return appendDetails; + } + _findSeparatorAround(pos) { + if (this.thousandsSeparator) { + const searchFrom = pos - this.thousandsSeparator.length + 1; + const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom); + if (separatorPos <= pos) return separatorPos; + } + return -1; + } + _adjustRangeWithSeparators(from, to) { + const separatorAroundFromPos = this._findSeparatorAround(from); + if (separatorAroundFromPos >= 0) from = separatorAroundFromPos; + const separatorAroundToPos = this._findSeparatorAround(to); + if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length; + return [from, to]; + } + remove() { + let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length; + [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos); + const valueBeforePos = this.value.slice(0, fromPos); + const valueAfterPos = this.value.slice(toPos); + const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length); + this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos)); + const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos); + return new ChangeDetails({ + tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length + }); + } + nearestInputPos(cursorPos, direction) { + if (!this.thousandsSeparator) return cursorPos; + switch (direction) { + case DIRECTION.NONE: + case DIRECTION.LEFT: + case DIRECTION.FORCE_LEFT: + { + const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1); + if (separatorAtLeftPos >= 0) { + const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length; + if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) { + return separatorAtLeftPos; + } + } + break; + } + case DIRECTION.RIGHT: + case DIRECTION.FORCE_RIGHT: + { + const separatorAtRightPos = this._findSeparatorAround(cursorPos); + if (separatorAtRightPos >= 0) { + return separatorAtRightPos + this.thousandsSeparator.length; + } + } + } + return cursorPos; + } + doValidate(flags) { + let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp)); + if (valid) { + const number = this.number; + valid = valid && !isNaN(number) && ( + this.min == null || this.min >= 0 || this.min <= this.number) && ( + this.max == null || this.max <= 0 || this.number <= this.max); + } + return valid && super.doValidate(flags); + } + doCommit() { + if (this.value) { + const number = this.number; + let validnum = number; + if (this.min != null) validnum = Math.max(validnum, this.min); + if (this.max != null) validnum = Math.min(validnum, this.max); + if (validnum !== number) this.unmaskedValue = this.doFormat(validnum); + let formatted = this.value; + if (this.normalizeZeros) formatted = this._normalizeZeros(formatted); + if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted); + this._value = formatted; + } + super.doCommit(); + } + _normalizeZeros(value) { + const parts = this._removeThousandsSeparators(value).split(this.radix); + parts[0] = parts[0].replace(/^(\D*)(0*)(\d*)/, (match, sign, zeros, num) => sign + num); + if (value.length && !/\d$/.test(parts[0])) parts[0] = parts[0] + '0'; + if (parts.length > 1) { + parts[1] = parts[1].replace(/0*$/, ''); + if (!parts[1].length) parts.length = 1; + } + return this._insertThousandsSeparators(parts.join(this.radix)); + } + _padFractionalZeros(value) { + if (!value) return value; + const parts = value.split(this.radix); + if (parts.length < 2) parts.push(''); + parts[1] = parts[1].padEnd(this.scale, '0'); + return parts.join(this.radix); + } + doSkipInvalid(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let checkTail = arguments.length > 2 ? arguments[2] : undefined; + const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch)); + return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional; + } + get unmaskedValue() { + return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX); + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get typedValue() { + return this.doParse(this.unmaskedValue); + } + set typedValue(n) { + this.rawInputValue = this.doFormat(n).replace(MaskedNumber.UNMASKED_RADIX, this.radix); + } + get number() { + return this.typedValue; + } + set number(number) { + this.typedValue = number; + } + get allowNegative() { + return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0; + } + typedValueEquals(value) { + return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === ''); + } + } + MaskedNumber.UNMASKED_RADIX = '.'; + MaskedNumber.DEFAULTS = { + radix: ',', + thousandsSeparator: '', + mapToRadix: [MaskedNumber.UNMASKED_RADIX], + scale: 2, + signed: false, + normalizeZeros: true, + padFractionalZeros: false, + parse: Number, + format: n => n.toLocaleString('en-US', { + useGrouping: false, + maximumFractionDigits: 20 + }) + }; + MaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0]; + IMask.MaskedNumber = MaskedNumber; + + class MaskedFunction extends Masked { + _update(opts) { + if (opts.mask) opts.validate = opts.mask; + super._update(opts); + } + } + IMask.MaskedFunction = MaskedFunction; + + const _excluded = ["compiledMasks", "currentMaskRef", "currentMask"], + _excluded2 = ["mask"]; + class MaskedDynamic extends Masked { + constructor(opts) { + super(Object.assign({}, MaskedDynamic.DEFAULTS, opts)); + this.currentMask = null; + } + _update(opts) { + super._update(opts); + if ('mask' in opts) { + this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => createMask(m)) : []; + } + } + _appendCharRaw(ch) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + const details = this._applyDispatch(ch, flags); + if (this.currentMask) { + details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags))); + } + return details; + } + _applyDispatch() { + let appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value; + const inputValue = this.rawInputValue; + const insertValue = flags.tail && flags._beforeTailState != null ? + flags._beforeTailState._rawInputValue : inputValue; + const tailValue = inputValue.slice(insertValue.length); + const prevMask = this.currentMask; + const details = new ChangeDetails(); + const prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state; + this.currentMask = this.doDispatch(appended, Object.assign({}, flags), tail); + if (this.currentMask) { + if (this.currentMask !== prevMask) { + this.currentMask.reset(); + if (insertValue) { + const d = this.currentMask.append(insertValue, { + raw: true + }); + details.tailShift = d.inserted.length - prevValueBeforeTail.length; + } + if (tailValue) { + details.tailShift += this.currentMask.append(tailValue, { + raw: true, + tail: true + }).tailShift; + } + } else { + this.currentMask.state = prevMaskState; + } + } + return details; + } + _appendPlaceholder() { + const details = this._applyDispatch(...arguments); + if (this.currentMask) { + details.aggregate(this.currentMask._appendPlaceholder()); + } + return details; + } + _appendEager() { + const details = this._applyDispatch(...arguments); + if (this.currentMask) { + details.aggregate(this.currentMask._appendEager()); + } + return details; + } + appendTail(tail) { + const details = new ChangeDetails(); + if (tail) details.aggregate(this._applyDispatch('', {}, tail)); + return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail)); + } + currentMaskFlags(flags) { + var _flags$_beforeTailSta, _flags$_beforeTailSta2; + return Object.assign({}, flags, { + _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState + }); + } + doDispatch(appended) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; + return this.dispatch(appended, this, flags, tail); + } + doValidate(flags) { + return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags))); + } + doPrepare(str) { + let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let [s, details] = normalizePrepare(super.doPrepare(str, flags)); + if (this.currentMask) { + let currentDetails; + [s, currentDetails] = normalizePrepare(super.doPrepare(s, this.currentMaskFlags(flags))); + details = details.aggregate(currentDetails); + } + return [s, details]; + } + reset() { + var _this$currentMask; + (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset(); + this.compiledMasks.forEach(m => m.reset()); + } + get value() { + return this.currentMask ? this.currentMask.value : ''; + } + set value(value) { + super.value = value; + } + get unmaskedValue() { + return this.currentMask ? this.currentMask.unmaskedValue : ''; + } + set unmaskedValue(unmaskedValue) { + super.unmaskedValue = unmaskedValue; + } + get typedValue() { + return this.currentMask ? this.currentMask.typedValue : ''; + } + set typedValue(value) { + let unmaskedValue = String(value); + if (this.currentMask) { + this.currentMask.typedValue = value; + unmaskedValue = this.currentMask.unmaskedValue; + } + this.unmaskedValue = unmaskedValue; + } + get displayValue() { + return this.currentMask ? this.currentMask.displayValue : ''; + } + get isComplete() { + var _this$currentMask2; + return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete); + } + get isFilled() { + var _this$currentMask3; + return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled); + } + remove() { + const details = new ChangeDetails(); + if (this.currentMask) { + details.aggregate(this.currentMask.remove(...arguments)) + .aggregate(this._applyDispatch()); + } + return details; + } + get state() { + var _this$currentMask4; + return Object.assign({}, super.state, { + _rawInputValue: this.rawInputValue, + compiledMasks: this.compiledMasks.map(m => m.state), + currentMaskRef: this.currentMask, + currentMask: (_this$currentMask4 = this.currentMask) === null || _this$currentMask4 === void 0 ? void 0 : _this$currentMask4.state + }); + } + set state(state) { + const { + compiledMasks, + currentMaskRef, + currentMask + } = state, + maskedState = _objectWithoutPropertiesLoose(state, _excluded); + this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]); + if (currentMaskRef != null) { + this.currentMask = currentMaskRef; + this.currentMask.state = currentMask; + } + super.state = maskedState; + } + extractInput() { + return this.currentMask ? this.currentMask.extractInput(...arguments) : ''; + } + extractTail() { + return this.currentMask ? this.currentMask.extractTail(...arguments) : super.extractTail(...arguments); + } + doCommit() { + if (this.currentMask) this.currentMask.doCommit(); + super.doCommit(); + } + nearestInputPos() { + return this.currentMask ? this.currentMask.nearestInputPos(...arguments) : super.nearestInputPos(...arguments); + } + get overwrite() { + return this.currentMask ? this.currentMask.overwrite : super.overwrite; + } + set overwrite(overwrite) { + console.warn('"overwrite" option is not available in dynamic mask, use this option in siblings'); + } + get eager() { + return this.currentMask ? this.currentMask.eager : super.eager; + } + set eager(eager) { + console.warn('"eager" option is not available in dynamic mask, use this option in siblings'); + } + get skipInvalid() { + return this.currentMask ? this.currentMask.skipInvalid : super.skipInvalid; + } + set skipInvalid(skipInvalid) { + if (this.isInitialized || skipInvalid !== Masked.DEFAULTS.skipInvalid) { + console.warn('"skipInvalid" option is not available in dynamic mask, use this option in siblings'); + } + } + maskEquals(mask) { + return Array.isArray(mask) && this.compiledMasks.every((m, mi) => { + if (!mask[mi]) return; + const _mask$mi = mask[mi], + { + mask: oldMask + } = _mask$mi, + restOpts = _objectWithoutPropertiesLoose(_mask$mi, _excluded2); + return objectIncludes(m, restOpts) && m.maskEquals(oldMask); + }); + } + typedValueEquals(value) { + var _this$currentMask5; + return Boolean((_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.typedValueEquals(value)); + } + } + MaskedDynamic.DEFAULTS = { + dispatch: (appended, masked, flags, tail) => { + if (!masked.compiledMasks.length) return; + const inputValue = masked.rawInputValue; + const inputs = masked.compiledMasks.map((m, index) => { + const isCurrent = masked.currentMask === m; + const startInputPos = isCurrent ? m.value.length : m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT); + if (m.rawInputValue !== inputValue) { + m.reset(); + m.append(inputValue, { + raw: true + }); + } else if (!isCurrent) { + m.remove(startInputPos); + } + m.append(appended, masked.currentMaskFlags(flags)); + m.appendTail(tail); + return { + index, + weight: m.rawInputValue.length, + totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT))) + }; + }); + inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions); + return masked.compiledMasks[inputs[0].index]; + } + }; + IMask.MaskedDynamic = MaskedDynamic; + + const PIPE_TYPE = { + MASKED: 'value', + UNMASKED: 'unmaskedValue', + TYPED: 'typedValue' + }; + function createPipe(mask) { + let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED; + let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED; + const masked = createMask(mask); + return value => masked.runIsolated(m => { + m[from] = value; + return m[to]; + }); + } + function pipe(value) { + for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + pipeArgs[_key - 1] = arguments[_key]; + } + return createPipe(...pipeArgs)(value); + } + IMask.PIPE_TYPE = PIPE_TYPE; + IMask.createPipe = createPipe; + IMask.pipe = pipe; + + try { + globalThis.IMask = IMask; + } catch (e) {} + + var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]')); + maskElementList.map(function (maskEl) { + return new IMask(maskEl, { + mask: maskEl.dataset.mask, + lazy: maskEl.dataset['mask-visible'] === 'true' + }); + }); + + var top = 'top'; + var bottom = 'bottom'; + var right = 'right'; + var left = 'left'; + var auto = 'auto'; + var basePlacements = [top, bottom, right, left]; + var start = 'start'; + var end = 'end'; + var clippingParents = 'clippingParents'; + var viewport = 'viewport'; + var popper = 'popper'; + var reference = 'reference'; + var variationPlacements = basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = [].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); + var beforeRead = 'beforeRead'; + var read = 'read'; + var afterRead = 'afterRead'; + var beforeMain = 'beforeMain'; + var main = 'main'; + var afterMain = 'afterMain'; + var beforeWrite = 'beforeWrite'; + var write = 'write'; + var afterWrite = 'afterWrite'; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + + function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; + } + + function getWindow(node) { + if (node == null) { + return window; + } + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + return node; + } + + function isElement$1(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + function isShadowRoot(node) { + if (typeof ShadowRoot === 'undefined') { + return false; + } + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); + } + function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } + var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] + }; + + function getBasePlacement(placement) { + return placement.split('-')[0]; + } + + var max = Math.max; + var min = Math.min; + var round = Math.round; + + function getUAString() { + var uaData = navigator.userAgentData; + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + return navigator.userAgent; + } + + function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); + } + + function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; + } + var _ref = isElement$1(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; + } + + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); + var width = element.offsetWidth; + var height = element.offsetHeight; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; + } + + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); + if (parent.contains(child)) { + return true; + } + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + do { + if (next && parent.isSameNode(next)) { + return true; + } + next = next.parentNode || next.host; + } while (next); + } + return false; + } + + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + + function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; + } + + function getDocumentElement(element) { + return ((isElement$1(element) ? element.ownerDocument : + element.document) || window.document).documentElement; + } + + function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + return ( + element.assignedSlot || + element.parentNode || ( + isShadowRoot(element) ? element.host : null) || + getDocumentElement(element) + ); + } + + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || + getComputedStyle$1(element).position === 'fixed') { + return null; + } + return element.offsetParent; + } + function getContainingBlock(element) { + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); + if (isIE && isHTMLElement(element)) { + var elementCss = getComputedStyle$1(element); + if (elementCss.position === 'fixed') { + return null; + } + } + var currentNode = getParentNode(element); + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + return null; + } + function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + return offsetParent || getContainingBlock(element) || window; + } + + function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; + } + + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; + } + + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + + function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; + function arrow(_ref) { + var _state$modifiersData$; + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + if (!arrowElement || !popperOffsets) { + return; + } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); + } + function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + if (arrowElement == null) { + return; + } + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + if (!arrowElement) { + return; + } + } + if (!contains(state.elements.popper, arrowElement)) { + return; + } + state.elements.arrow = arrowElement; + } + var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + + function getVariation(placement) { + return placement.split('-')[1]; + } + + var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' + }; + function roundOffsetsByDPR(_ref, win) { + var x = _ref.x, + y = _ref.y; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + function mapToStyles(_ref2) { + var _Object$assign2; + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } + offsetParent = offsetParent; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }, getWindow(popper)) : { + x: x, + y: y + }; + x = _ref4.x; + y = _ref4.y; + if (gpuAcceleration) { + var _Object$assign; + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + } + function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); + } + var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} + }; + + var passive = { + passive: true + }; + function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; + } + var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} + }; + + var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); + } + + var hash = { + start: 'end', + end: 'start' + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); + } + + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; + } + + function getWindowScrollBarX(element) { + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + + function getViewportRect(element, strategy) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; + } + + function getDocumentRect(element) { + var _element$ownerDocumen; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + return { + width: width, + height: height, + x: x, + y: y + }; + } + + function isScrollParent(element) { + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + + function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + return getScrollParent(getParentNode(node)); + } + + function listScrollParents(element, list) { + var _element$ownerDocumen; + if (list === void 0) { + list = []; + } + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : + updatedList.concat(listScrollParents(getParentNode(target))); + } + + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + + function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } + function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + if (!isElement$1(clipperElement)) { + return []; + } + return clippingParents.filter(function (clippingParent) { + return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); + } + function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + + function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + return offsets; + } + + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + return overflowOffsets; + } + + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + } + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); + } + + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + if (state.modifiersData[name]._skip) { + return; + } + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + var _basePlacement = getBasePlacement(placement); + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + checksMap.set(placement, checks); + } + if (makeFallbackChecks) { + var numberOfChecks = flipVariations ? 3 : 1; + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + if (_ret === "break") break; + } + } + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } + var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } + }; + + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); + } + function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); + } + var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide + }; + + function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + state.modifiersData[name] = data; + } + var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset + }; + + function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); + } + var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} + }; + + function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; + } + + function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + if (!popperOffsets) { + return; + } + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + if (checkAltAxis) { + var _offsetModifierState$2; + var _mainSide = mainAxis === 'x' ? top : left; + var _altSide = mainAxis === 'x' ? bottom : right; + var _offset = popperOffsets[altAxis]; + var _len = altAxis === 'y' ? 'height' : 'width'; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + state.modifiersData[name] = data; + } + var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] + }; + + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + + function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + sort(modifier); + } + }); + return result; + } + function orderModifiers(modifiers) { + var orderedModifiers = order(modifiers); + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); + } + + function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + return pending; + }; + } + + function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); + return Object.keys(merged).map(function (key) { + return merged[key]; + }); + } + + var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' + }; + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); + } + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); + runModifierEffects(); + return instance.update(); + }, + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; + if (!areValidElements(reference, popper)) { + return; + } + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; + state.reset = false; + state.placement = state.options.placement; + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + if (!areValidElements(reference, popper)) { + return instance; + } + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref) { + var name = _ref.name, + _ref$options = _ref.options, + options = _ref$options === void 0 ? {} : _ref$options, + effect = _ref.effect; + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + var noopFn = function noopFn() {}; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + return instance; + }; + } + var createPopper$2 = popperGenerator(); + + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); + + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper = popperGenerator({ + defaultModifiers: defaultModifiers + }); + + var Popper = /*#__PURE__*/Object.freeze({ + __proto__: null, + popperGenerator: popperGenerator, + detectOverflow: detectOverflow, + createPopperBase: createPopper$2, + createPopper: createPopper, + createPopperLite: createPopper$1, + top: top, + bottom: bottom, + right: right, + left: left, + auto: auto, + basePlacements: basePlacements, + start: start, + end: end, + clippingParents: clippingParents, + viewport: viewport, + popper: popper, + reference: reference, + variationPlacements: variationPlacements, + placements: placements, + beforeRead: beforeRead, + read: read, + afterRead: afterRead, + beforeMain: beforeMain, + main: main, + afterMain: afterMain, + beforeWrite: beforeWrite, + write: write, + afterWrite: afterWrite, + modifierPhases: modifierPhases, + applyStyles: applyStyles$1, + arrow: arrow$1, + computeStyles: computeStyles$1, + eventListeners: eventListeners, + flip: flip$1, + hide: hide$1, + offset: offset$1, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1 + }); + + /*! + * Bootstrap v5.3.1 (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) + */ + const elementMap = new Map(); + const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } + const instanceMap = elementMap.get(element); + if (!instanceMap.has(key) && instanceMap.size !== 0) { + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + const MAX_UID = 1000000; + const MILLISECONDS_MULTIPLIER = 1000; + const TRANSITION_END = 'transitionend'; + const parseSelector = selector => { + if (selector && window.CSS && window.CSS.escape) { + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + const toType = object => { + if (object === null || object === undefined) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + const isElement = object => { + if (!object || typeof object !== 'object') { + return false; + } + if (typeof object.jquery !== 'undefined') { + object = object[0]; + } + return typeof object.nodeType !== 'undefined'; + }; + const getElement = object => { + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === 'string' && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + const isVisible = element => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + const closedDetails = element.closest('details:not([open])'); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest('summary'); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains('disabled')) { + return true; + } + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + const noop = () => {}; + const reflow = element => { + element.offsetHeight; + }; + const getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return window.jQuery; + } + return null; + }; + const DOMContentLoadedCallbacks = []; + const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + for (const callback of DOMContentLoadedCallbacks) { + callback(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + const isRTL = () => document.documentElement.dir === 'rtl'; + const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; + }; + const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + const listLength = list.length; + let index = list.indexOf(activeElement); + if (index === -1) { + return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + } + index += shouldGetNext ? 1 : -1; + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + return list[Math.max(0, Math.min(index, listLength - 1))]; + }; + const namespaceRegex = /[^.]*(?=\..*)\.|.*/; + const stripNameRegex = /\..*/; + const stripUidRegex = /::\d+$/; + const eventRegistry = {}; + let uidEvent = 1; + const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { + delegateTarget: element + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { + delegateTarget: target + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === 'string'; + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + if (originalTypeEvent in customEvents) { + const wrapFunction = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; + } + const EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith('.'); + if (typeof callable !== 'undefined') { + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { + bubbles, + cancelable: true + }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (_unused) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + function normalizeData(value) { + if (value === 'true') { + return true; + } + if (value === 'false') { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === '' || value === 'null') { + return null; + } + if (typeof value !== 'string') { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (_unused) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); + } + const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + class Config { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; + return { + ...this.constructor.Default, + ...(typeof jsonConfig === 'object' ? jsonConfig : {}), + ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), + ...(typeof config === 'object' ? config : {}) + }; + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? 'element' : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + } + } + } + const VERSION = '5.3.1'; + class BaseComponent extends Config { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + Data.set(this._element, this.constructor.DATA_KEY, this); + } + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + } + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + if (!selector || selector === '#') { + let hrefAttribute = element.getAttribute('href'); + if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + return null; + } + if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { + hrefAttribute = `#${hrefAttribute.split('#')[1]}`; + } + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; + } + return parseSelector(selector); + }; + const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); + instance[method](); + }); + }; + const NAME$f = 'alert'; + const DATA_KEY$a = 'bs.alert'; + const EVENT_KEY$b = `.${DATA_KEY$a}`; + const EVENT_CLOSE = `close${EVENT_KEY$b}`; + const EVENT_CLOSED = `closed${EVENT_KEY$b}`; + const CLASS_NAME_FADE$5 = 'fade'; + const CLASS_NAME_SHOW$8 = 'show'; + class Alert extends BaseComponent { + static get NAME() { + return NAME$f; + } + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + if (closeEvent.defaultPrevented) { + return; + } + this._element.classList.remove(CLASS_NAME_SHOW$8); + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } + _destroyElement() { + this._element.remove(); + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } + } + enableDismissTrigger(Alert, 'close'); + defineJQueryPlugin(Alert); + const NAME$e = 'button'; + const DATA_KEY$9 = 'bs.button'; + const EVENT_KEY$a = `.${DATA_KEY$9}`; + const DATA_API_KEY$6 = '.data-api'; + const CLASS_NAME_ACTIVE$3 = 'active'; + const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; + const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; + class Button extends BaseComponent { + static get NAME() { + return NAME$e; + } + toggle() { + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + if (config === 'toggle') { + data[config](); + } + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); + }); + defineJQueryPlugin(Button); + const NAME$d = 'swipe'; + const EVENT_KEY$9 = '.bs.swipe'; + const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; + const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; + const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; + const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; + const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; + const POINTER_TYPE_TOUCH = 'touch'; + const POINTER_TYPE_PEN = 'pen'; + const CLASS_NAME_POINTER_EVENT = 'pointer-event'; + const SWIPE_THRESHOLD = 40; + const Default$c = { + endCallback: null, + leftCallback: null, + rightCallback: null + }; + const DefaultType$c = { + endCallback: '(function|null)', + leftCallback: '(function|null)', + rightCallback: '(function|null)' + }; + class Swipe extends Config { + constructor(element, config) { + super(); + this._element = element; + if (!element || !Swipe.isSupported()) { + return; + } + this._config = this._getConfig(config); + this._deltaX = 0; + this._supportPointerEvents = Boolean(window.PointerEvent); + this._initEvents(); + } + static get Default() { + return Default$c; + } + static get DefaultType() { + return DefaultType$c; + } + static get NAME() { + return NAME$d; + } + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); + } + _start(event) { + if (!this._supportPointerEvents) { + this._deltaX = event.touches[0].clientX; + return; + } + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX; + } + } + _end(event) { + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX - this._deltaX; + } + this._handleSwipe(); + execute(this._config.endCallback); + } + _move(event) { + this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; + } + _handleSwipe() { + const absDeltaX = Math.abs(this._deltaX); + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + const direction = absDeltaX / this._deltaX; + this._deltaX = 0; + if (!direction) { + return; + } + execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); + } + _initEvents() { + if (this._supportPointerEvents) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); + } + } + _eventIsPointerPenTouch(event) { + return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + } + static isSupported() { + return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + } + } + const NAME$c = 'carousel'; + const DATA_KEY$8 = 'bs.carousel'; + const EVENT_KEY$8 = `.${DATA_KEY$8}`; + const DATA_API_KEY$5 = '.data-api'; + const ARROW_LEFT_KEY$1 = 'ArrowLeft'; + const ARROW_RIGHT_KEY$1 = 'ArrowRight'; + const TOUCHEVENT_COMPAT_WAIT = 500; + const ORDER_NEXT = 'next'; + const ORDER_PREV = 'prev'; + const DIRECTION_LEFT = 'left'; + const DIRECTION_RIGHT = 'right'; + const EVENT_SLIDE = `slide${EVENT_KEY$8}`; + const EVENT_SLID = `slid${EVENT_KEY$8}`; + const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; + const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; + const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; + const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; + const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; + const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; + const CLASS_NAME_CAROUSEL = 'carousel'; + const CLASS_NAME_ACTIVE$2 = 'active'; + const CLASS_NAME_SLIDE = 'slide'; + const CLASS_NAME_END = 'carousel-item-end'; + const CLASS_NAME_START = 'carousel-item-start'; + const CLASS_NAME_NEXT = 'carousel-item-next'; + const CLASS_NAME_PREV = 'carousel-item-prev'; + const SELECTOR_ACTIVE = '.active'; + const SELECTOR_ITEM = '.carousel-item'; + const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; + const SELECTOR_ITEM_IMG = '.carousel-item img'; + const SELECTOR_INDICATORS = '.carousel-indicators'; + const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; + const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; + const KEY_TO_DIRECTION = { + [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, + [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT + }; + const Default$b = { + interval: 5000, + keyboard: true, + pause: 'hover', + ride: false, + touch: true, + wrap: true + }; + const DefaultType$b = { + interval: '(number|boolean)', + keyboard: 'boolean', + pause: '(string|boolean)', + ride: '(boolean|string)', + touch: 'boolean', + wrap: 'boolean' + }; + class Carousel extends BaseComponent { + constructor(element, config) { + super(element, config); + this._interval = null; + this._activeElement = null; + this._isSliding = false; + this.touchTimeout = null; + this._swipeHelper = null; + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + this._addEventListeners(); + if (this._config.ride === CLASS_NAME_CAROUSEL) { + this.cycle(); + } + } + static get Default() { + return Default$b; + } + static get DefaultType() { + return DefaultType$b; + } + static get NAME() { + return NAME$c; + } + next() { + this._slide(ORDER_NEXT); + } + nextWhenVisible() { + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + prev() { + this._slide(ORDER_PREV); + } + pause() { + if (this._isSliding) { + triggerTransitionEnd(this._element); + } + this._clearInterval(); + } + cycle() { + this._clearInterval(); + this._updateInterval(); + this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); + } + _maybeEnableCycle() { + if (!this._config.ride) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); + return; + } + this.cycle(); + } + to(index) { + const items = this._getItems(); + if (index > items.length - 1 || index < 0) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); + return; + } + const activeIndex = this._getItemIndex(this._getActive()); + if (activeIndex === index) { + return; + } + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; + this._slide(order, items[index]); + } + dispose() { + if (this._swipeHelper) { + this._swipeHelper.dispose(); + } + super.dispose(); + } + _configAfterMerge(config) { + config.defaultInterval = config.interval; + return config; + } + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); + } + if (this._config.pause === 'hover') { + EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); + EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); + } + if (this._config.touch && Swipe.isSupported()) { + this._addTouchEventListeners(); + } + } + _addTouchEventListeners() { + for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { + EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); + } + const endCallBack = () => { + if (this._config.pause !== 'hover') { + return; + } + this.pause(); + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + }; + const swipeConfig = { + leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), + rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), + endCallback: endCallBack + }; + this._swipeHelper = new Swipe(this._element, swipeConfig); + } + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + const direction = KEY_TO_DIRECTION[event.key]; + if (direction) { + event.preventDefault(); + this._slide(this._directionToOrder(direction)); + } + } + _getItemIndex(element) { + return this._getItems().indexOf(element); + } + _setActiveIndicatorElement(index) { + if (!this._indicatorsElement) { + return; + } + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); + if (newActiveIndicator) { + newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); + newActiveIndicator.setAttribute('aria-current', 'true'); + } + } + _updateInterval() { + const element = this._activeElement || this._getActive(); + if (!element) { + return; + } + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + this._config.interval = elementInterval || this._config.defaultInterval; + } + _slide(order, element = null) { + if (this._isSliding) { + return; + } + const activeElement = this._getActive(); + const isNext = order === ORDER_NEXT; + const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); + if (nextElement === activeElement) { + return; + } + const nextElementIndex = this._getItemIndex(nextElement); + const triggerEvent = eventName => { + return EventHandler.trigger(this._element, eventName, { + relatedTarget: nextElement, + direction: this._orderToDirection(order), + from: this._getItemIndex(activeElement), + to: nextElementIndex + }); + }; + const slideEvent = triggerEvent(EVENT_SLIDE); + if (slideEvent.defaultPrevented) { + return; + } + if (!activeElement || !nextElement) { + return; + } + const isCycling = Boolean(this._interval); + this.pause(); + this._isSliding = true; + this._setActiveIndicatorElement(nextElementIndex); + this._activeElement = nextElement; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + const completeCallBack = () => { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + triggerEvent(EVENT_SLID); + }; + this._queueCallback(completeCallBack, activeElement, this._isAnimated()); + if (isCycling) { + this.cycle(); + } + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_SLIDE); + } + _getActive() { + return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + } + _getItems() { + return SelectorEngine.find(SELECTOR_ITEM, this._element); + } + _clearInterval() { + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + } + _directionToOrder(direction) { + if (isRTL()) { + return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; + } + return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; + } + _orderToDirection(order) { + if (isRTL()) { + return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Carousel.getOrCreateInstance(this, config); + if (typeof config === 'number') { + data.to(config); + return; + } + if (typeof config === 'string') { + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; + } + event.preventDefault(); + const carousel = Carousel.getOrCreateInstance(target); + const slideIndex = this.getAttribute('data-bs-slide-to'); + if (slideIndex) { + carousel.to(slideIndex); + carousel._maybeEnableCycle(); + return; + } + if (Manipulator.getDataAttribute(this, 'slide') === 'next') { + carousel.next(); + carousel._maybeEnableCycle(); + return; + } + carousel.prev(); + carousel._maybeEnableCycle(); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); + for (const carousel of carousels) { + Carousel.getOrCreateInstance(carousel); + } + }); + defineJQueryPlugin(Carousel); + const NAME$b = 'collapse'; + const DATA_KEY$7 = 'bs.collapse'; + const EVENT_KEY$7 = `.${DATA_KEY$7}`; + const DATA_API_KEY$4 = '.data-api'; + const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; + const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; + const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; + const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; + const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; + const CLASS_NAME_SHOW$7 = 'show'; + const CLASS_NAME_COLLAPSE = 'collapse'; + const CLASS_NAME_COLLAPSING = 'collapsing'; + const CLASS_NAME_COLLAPSED = 'collapsed'; + const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; + const WIDTH = 'width'; + const HEIGHT = 'height'; + const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; + const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; + const Default$a = { + parent: null, + toggle: true + }; + const DefaultType$a = { + parent: '(null|element)', + toggle: 'boolean' + }; + class Collapse extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); + for (const elem of toggleList) { + const selector = SelectorEngine.getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + static get Default() { + return Default$a; + } + static get DefaultType() { + return DefaultType$a; + } + static get NAME() { + return NAME$b; + } + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { + toggle: false + })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + this._element.style[dimension] = ''; + EventHandler.trigger(this._element, EVENT_SHOWN$6); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + for (const trigger of this._triggerArray) { + const element = SelectorEngine.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + EventHandler.trigger(this._element, EVENT_HIDDEN$6); + }; + this._element.style[dimension] = ''; + this._queueCallback(complete, this._element, true); + } + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$7); + } + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); + for (const element of children) { + const selected = SelectorEngine.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute('aria-expanded', isOpen); + } + } + static jQueryInterface(config) { + const _config = {}; + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function () { + const data = Collapse.getOrCreateInstance(this, _config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { + if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { + event.preventDefault(); + } + for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); + } + }); + defineJQueryPlugin(Collapse); + const NAME$a = 'dropdown'; + const DATA_KEY$6 = 'bs.dropdown'; + const EVENT_KEY$6 = `.${DATA_KEY$6}`; + const DATA_API_KEY$3 = '.data-api'; + const ESCAPE_KEY$2 = 'Escape'; + const TAB_KEY$1 = 'Tab'; + const ARROW_UP_KEY$1 = 'ArrowUp'; + const ARROW_DOWN_KEY$1 = 'ArrowDown'; + const RIGHT_MOUSE_BUTTON = 2; + const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; + const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; + const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; + const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; + const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; + const CLASS_NAME_SHOW$6 = 'show'; + const CLASS_NAME_DROPUP = 'dropup'; + const CLASS_NAME_DROPEND = 'dropend'; + const CLASS_NAME_DROPSTART = 'dropstart'; + const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; + const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; + const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; + const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; + const SELECTOR_MENU = '.dropdown-menu'; + const SELECTOR_NAVBAR = '.navbar'; + const SELECTOR_NAVBAR_NAV = '.navbar-nav'; + const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; + const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; + const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; + const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; + const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; + const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; + const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; + const PLACEMENT_TOPCENTER = 'top'; + const PLACEMENT_BOTTOMCENTER = 'bottom'; + const Default$9 = { + autoClose: true, + boundary: 'clippingParents', + display: 'dynamic', + offset: [0, 2], + popperConfig: null, + reference: 'toggle' + }; + const DefaultType$9 = { + autoClose: '(boolean|string)', + boundary: '(string|element)', + display: 'string', + offset: '(array|string|function)', + popperConfig: '(null|object|function)', + reference: '(string|element|object)' + }; + class Dropdown extends BaseComponent { + constructor(element, config) { + super(element, config); + this._popper = null; + this._parent = this._element.parentNode; + this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); + this._inNavbar = this._detectNavbar(); + } + static get Default() { + return Default$9; + } + static get DefaultType() { + return DefaultType$9; + } + static get NAME() { + return NAME$a; + } + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + show() { + if (isDisabled(this._element) || this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); + if (showEvent.defaultPrevented) { + return; + } + this._createPopper(); + if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + this._element.focus(); + this._element.setAttribute('aria-expanded', true); + this._menu.classList.add(CLASS_NAME_SHOW$6); + this._element.classList.add(CLASS_NAME_SHOW$6); + EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); + } + hide() { + if (isDisabled(this._element) || !this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + this._completeHide(relatedTarget); + } + dispose() { + if (this._popper) { + this._popper.destroy(); + } + super.dispose(); + } + update() { + this._inNavbar = this._detectNavbar(); + if (this._popper) { + this._popper.update(); + } + } + _completeHide(relatedTarget) { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); + if (hideEvent.defaultPrevented) { + return; + } + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + if (this._popper) { + this._popper.destroy(); + } + this._menu.classList.remove(CLASS_NAME_SHOW$6); + this._element.classList.remove(CLASS_NAME_SHOW$6); + this._element.setAttribute('aria-expanded', 'false'); + Manipulator.removeDataAttribute(this._menu, 'popper'); + EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); + } + _getConfig(config) { + config = super._getConfig(config); + if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { + throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); + } + return config; + } + _createPopper() { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + let referenceElement = this._element; + if (this._config.reference === 'parent') { + referenceElement = this._parent; + } else if (isElement(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + const popperConfig = this._getPopperConfig(); + this._popper = createPopper(referenceElement, this._menu, popperConfig); + } + _isShown() { + return this._menu.classList.contains(CLASS_NAME_SHOW$6); + } + _getPlacement() { + const parentDropdown = this._parent; + if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { + return PLACEMENT_RIGHT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { + return PLACEMENT_LEFT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { + return PLACEMENT_TOPCENTER; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { + return PLACEMENT_BOTTOMCENTER; + } + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { + return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } + return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; + } + _detectNavbar() { + return this._element.closest(SELECTOR_NAVBAR) !== null; + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _getPopperConfig() { + const defaultBsPopperConfig = { + placement: this._getPlacement(), + modifiers: [{ + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }] + }; + if (this._inNavbar || this._config.display === 'static') { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); + defaultBsPopperConfig.modifiers = [{ + name: 'applyStyles', + enabled: false + }]; + } + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _selectMenuItem({ + key, + target + }) { + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); + if (!items.length) { + return; + } + getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + static clearMenus(event) { + if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { + return; + } + const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); + for (const toggle of openToggles) { + const context = Dropdown.getInstance(toggle); + if (!context || context._config.autoClose === false) { + continue; + } + const composedPath = event.composedPath(); + const isMenuTarget = composedPath.includes(context._menu); + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + const relatedTarget = { + relatedTarget: context._element + }; + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } + context._completeHide(relatedTarget); + } + } + static dataApiKeydownHandler(event) { + const isInput = /input|textarea/i.test(event.target.tagName); + const isEscapeEvent = event.key === ESCAPE_KEY$2; + const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); + if (!isUpOrDownEvent && !isEscapeEvent) { + return; + } + if (isInput && !isEscapeEvent) { + return; + } + event.preventDefault(); + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); + const instance = Dropdown.getOrCreateInstance(getToggleButton); + if (isUpOrDownEvent) { + event.stopPropagation(); + instance.show(); + instance._selectMenuItem(event); + return; + } + if (instance._isShown()) { + event.stopPropagation(); + instance.hide(); + getToggleButton.focus(); + } + } + } + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); + EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + event.preventDefault(); + Dropdown.getOrCreateInstance(this).toggle(); + }); + defineJQueryPlugin(Dropdown); + const NAME$9 = 'backdrop'; + const CLASS_NAME_FADE$4 = 'fade'; + const CLASS_NAME_SHOW$5 = 'show'; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; + const Default$8 = { + className: 'modal-backdrop', + clickCallback: null, + isAnimated: false, + isVisible: true, + rootElement: 'body' + }; + const DefaultType$8 = { + className: 'string', + clickCallback: '(function|null)', + isAnimated: 'boolean', + isVisible: 'boolean', + rootElement: '(element|string)' + }; + class Backdrop extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } + static get Default() { + return Default$8; + } + static get DefaultType() { + return DefaultType$8; + } + static get NAME() { + return NAME$9; + } + show(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._append(); + const element = this._getElement(); + if (this._config.isAnimated) { + reflow(element); + } + element.classList.add(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + execute(callback); + }); + } + hide(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._getElement().classList.remove(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + this.dispose(); + execute(callback); + }); + } + dispose() { + if (!this._isAppended) { + return; + } + EventHandler.off(this._element, EVENT_MOUSEDOWN); + this._element.remove(); + this._isAppended = false; + } + _getElement() { + if (!this._element) { + const backdrop = document.createElement('div'); + backdrop.className = this._config.className; + if (this._config.isAnimated) { + backdrop.classList.add(CLASS_NAME_FADE$4); + } + this._element = backdrop; + } + return this._element; + } + _configAfterMerge(config) { + config.rootElement = getElement(config.rootElement); + return config; + } + _append() { + if (this._isAppended) { + return; + } + const element = this._getElement(); + this._config.rootElement.append(element); + EventHandler.on(element, EVENT_MOUSEDOWN, () => { + execute(this._config.clickCallback); + }); + this._isAppended = true; + } + _emulateAnimation(callback) { + executeAfterTransition(callback, this._getElement(), this._config.isAnimated); + } + } + const NAME$8 = 'focustrap'; + const DATA_KEY$5 = 'bs.focustrap'; + const EVENT_KEY$5 = `.${DATA_KEY$5}`; + const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + const Default$7 = { + autofocus: true, + trapElement: null + }; + const DefaultType$7 = { + autofocus: 'boolean', + trapElement: 'element' + }; + class FocusTrap extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + static get Default() { + return Default$7; + } + static get DefaultType() { + return DefaultType$7; + } + static get NAME() { + return NAME$8; + } + activate() { + if (this._isActive) { + return; + } + if (this._config.autofocus) { + this._config.trapElement.focus(); + } + EventHandler.off(document, EVENT_KEY$5); + EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + deactivate() { + if (!this._isActive) { + return; + } + this._isActive = false; + EventHandler.off(document, EVENT_KEY$5); + } + _handleFocusin(event) { + const { + trapElement + } = this._config; + if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { + return; + } + const elements = SelectorEngine.focusableChildren(trapElement); + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + } + const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; + const SELECTOR_STICKY_CONTENT = '.sticky-top'; + const PROPERTY_PADDING = 'padding-right'; + const PROPERTY_MARGIN = 'margin-right'; + class ScrollBarHelper { + constructor() { + this._element = document.body; + } + getWidth() { + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); + } + hide() { + const width = this.getWidth(); + this._disableOverFlow(); + this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); + } + reset() { + this._resetElementAttributes(this._element, 'overflow'); + this._resetElementAttributes(this._element, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); + } + isOverflowing() { + return this.getWidth() > 0; + } + _disableOverFlow() { + this._saveInitialAttribute(this._element, 'overflow'); + this._element.style.overflow = 'hidden'; + } + _setElementAttributes(selector, styleProperty, callback) { + const scrollbarWidth = this.getWidth(); + const manipulationCallBack = element => { + if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + this._saveInitialAttribute(element, styleProperty); + const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); + element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _saveInitialAttribute(element, styleProperty) { + const actualValue = element.style.getPropertyValue(styleProperty); + if (actualValue) { + Manipulator.setDataAttribute(element, styleProperty, actualValue); + } + } + _resetElementAttributes(selector, styleProperty) { + const manipulationCallBack = element => { + const value = Manipulator.getDataAttribute(element, styleProperty); + if (value === null) { + element.style.removeProperty(styleProperty); + return; + } + Manipulator.removeDataAttribute(element, styleProperty); + element.style.setProperty(styleProperty, value); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _applyManipulationCallback(selector, callBack) { + if (isElement(selector)) { + callBack(selector); + return; + } + for (const sel of SelectorEngine.find(selector, this._element)) { + callBack(sel); + } + } + } + const NAME$7 = 'modal'; + const DATA_KEY$4 = 'bs.modal'; + const EVENT_KEY$4 = `.${DATA_KEY$4}`; + const DATA_API_KEY$2 = '.data-api'; + const ESCAPE_KEY$1 = 'Escape'; + const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; + const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; + const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; + const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; + const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; + const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; + const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; + const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; + const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; + const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; + const CLASS_NAME_OPEN = 'modal-open'; + const CLASS_NAME_FADE$3 = 'fade'; + const CLASS_NAME_SHOW$4 = 'show'; + const CLASS_NAME_STATIC = 'modal-static'; + const OPEN_SELECTOR$1 = '.modal.show'; + const SELECTOR_DIALOG = '.modal-dialog'; + const SELECTOR_MODAL_BODY = '.modal-body'; + const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; + const Default$6 = { + backdrop: true, + focus: true, + keyboard: true + }; + const DefaultType$6 = { + backdrop: '(boolean|string)', + focus: 'boolean', + keyboard: 'boolean' + }; + class Modal extends BaseComponent { + constructor(element, config) { + super(element, config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._isShown = false; + this._isTransitioning = false; + this._scrollBar = new ScrollBarHelper(); + this._addEventListeners(); + } + static get Default() { + return Default$6; + } + static get DefaultType() { + return DefaultType$6; + } + static get NAME() { + return NAME$7; + } + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._isTransitioning = true; + this._scrollBar.hide(); + document.body.classList.add(CLASS_NAME_OPEN); + this._adjustDialog(); + this._backdrop.show(() => this._showElement(relatedTarget)); + } + hide() { + if (!this._isShown || this._isTransitioning) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); + if (hideEvent.defaultPrevented) { + return; + } + this._isShown = false; + this._isTransitioning = true; + this._focustrap.deactivate(); + this._element.classList.remove(CLASS_NAME_SHOW$4); + this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); + } + dispose() { + EventHandler.off(window, EVENT_KEY$4); + EventHandler.off(this._dialog, EVENT_KEY$4); + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + handleUpdate() { + this._adjustDialog(); + } + _initializeBackDrop() { + return new Backdrop({ + isVisible: Boolean(this._config.backdrop), + isAnimated: this._isAnimated() + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _showElement(relatedTarget) { + if (!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', true); + this._element.setAttribute('role', 'dialog'); + this._element.scrollTop = 0; + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + if (modalBody) { + modalBody.scrollTop = 0; + } + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW$4); + const transitionComplete = () => { + if (this._config.focus) { + this._focustrap.activate(); + } + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$4, { + relatedTarget + }); + }; + this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { + if (event.key !== ESCAPE_KEY$1) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + this._triggerBackdropTransition(); + }); + EventHandler.on(window, EVENT_RESIZE$1, () => { + if (this._isShown && !this._isTransitioning) { + this._adjustDialog(); + } + }); + EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { + EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { + if (this._element !== event.target || this._element !== event2.target) { + return; + } + if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); + return; + } + if (this._config.backdrop) { + this.hide(); + } + }); + }); + } + _hideModal() { + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', true); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + this._isTransitioning = false; + this._backdrop.hide(() => { + document.body.classList.remove(CLASS_NAME_OPEN); + this._resetAdjustments(); + this._scrollBar.reset(); + EventHandler.trigger(this._element, EVENT_HIDDEN$4); + }); + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$3); + } + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); + if (hideEvent.defaultPrevented) { + return; + } + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const initialOverflowY = this._element.style.overflowY; + if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { + return; + } + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } + this._element.classList.add(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.classList.remove(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.style.overflowY = initialOverflowY; + }, this._dialog); + }, this._dialog); + this._element.focus(); + } + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const scrollbarWidth = this._scrollBar.getWidth(); + const isBodyOverflowing = scrollbarWidth > 0; + if (isBodyOverflowing && !isModalOverflowing) { + const property = isRTL() ? 'paddingLeft' : 'paddingRight'; + this._element.style[property] = `${scrollbarWidth}px`; + } + if (!isBodyOverflowing && isModalOverflowing) { + const property = isRTL() ? 'paddingRight' : 'paddingLeft'; + this._element.style[property] = `${scrollbarWidth}px`; + } + } + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + const data = Modal.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](relatedTarget); + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + EventHandler.one(target, EVENT_SHOW$4, showEvent => { + if (showEvent.defaultPrevented) { + return; + } + EventHandler.one(target, EVENT_HIDDEN$4, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + if (alreadyOpen) { + Modal.getInstance(alreadyOpen).hide(); + } + const data = Modal.getOrCreateInstance(target); + data.toggle(this); + }); + enableDismissTrigger(Modal); + defineJQueryPlugin(Modal); + const NAME$6 = 'offcanvas'; + const DATA_KEY$3 = 'bs.offcanvas'; + const EVENT_KEY$3 = `.${DATA_KEY$3}`; + const DATA_API_KEY$1 = '.data-api'; + const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; + const ESCAPE_KEY = 'Escape'; + const CLASS_NAME_SHOW$3 = 'show'; + const CLASS_NAME_SHOWING$1 = 'showing'; + const CLASS_NAME_HIDING = 'hiding'; + const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; + const OPEN_SELECTOR = '.offcanvas.show'; + const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; + const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; + const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; + const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; + const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; + const EVENT_RESIZE = `resize${EVENT_KEY$3}`; + const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; + const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; + const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; + const Default$5 = { + backdrop: true, + keyboard: true, + scroll: false + }; + const DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + scroll: 'boolean' + }; + class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isShown = false; + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._addEventListeners(); + } + static get Default() { + return Default$5; + } + static get DefaultType() { + return DefaultType$5; + } + static get NAME() { + return NAME$6; + } + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._backdrop.show(); + if (!this._config.scroll) { + new ScrollBarHelper().hide(); + } + this._element.setAttribute('aria-modal', true); + this._element.setAttribute('role', 'dialog'); + this._element.classList.add(CLASS_NAME_SHOWING$1); + const completeCallBack = () => { + if (!this._config.scroll || this._config.backdrop) { + this._focustrap.activate(); + } + this._element.classList.add(CLASS_NAME_SHOW$3); + this._element.classList.remove(CLASS_NAME_SHOWING$1); + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget + }); + }; + this._queueCallback(completeCallBack, this._element, true); + } + hide() { + if (!this._isShown) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + if (hideEvent.defaultPrevented) { + return; + } + this._focustrap.deactivate(); + this._element.blur(); + this._isShown = false; + this._element.classList.add(CLASS_NAME_HIDING); + this._backdrop.hide(); + const completeCallback = () => { + this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + if (!this._config.scroll) { + new ScrollBarHelper().reset(); + } + EventHandler.trigger(this._element, EVENT_HIDDEN$3); + }; + this._queueCallback(completeCallback, this._element, true); + } + dispose() { + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + _initializeBackDrop() { + const clickCallback = () => { + if (this._config.backdrop === 'static') { + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + return; + } + this.hide(); + }; + const isVisible = Boolean(this._config.backdrop); + return new Backdrop({ + className: CLASS_NAME_BACKDROP, + isVisible, + isAnimated: true, + rootElement: this._element.parentNode, + clickCallback: isVisible ? clickCallback : null + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (event.key !== ESCAPE_KEY) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + }); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Offcanvas.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + EventHandler.one(target, EVENT_HIDDEN$3, () => { + if (isVisible(this)) { + this.focus(); + } + }); + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + if (alreadyOpen && alreadyOpen !== target) { + Offcanvas.getInstance(alreadyOpen).hide(); + } + const data = Offcanvas.getOrCreateInstance(target); + data.toggle(this); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { + Offcanvas.getOrCreateInstance(selector).show(); + } + }); + EventHandler.on(window, EVENT_RESIZE, () => { + for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { + if (getComputedStyle(element).position !== 'fixed') { + Offcanvas.getOrCreateInstance(element).hide(); + } + } + }); + enableDismissTrigger(Offcanvas); + defineJQueryPlugin(Offcanvas); + const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + const DefaultAllowlist = { + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + 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: [] + }; + const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); + const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + const allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === 'function') { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + const NAME$5 = 'TemplateFactory'; + const Default$4 = { + allowList: DefaultAllowlist, + content: {}, + extraClass: '', + html: false, + sanitize: true, + sanitizeFn: null, + template: '
    ' + }; + const DefaultType$4 = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }; + const DefaultContentType = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class TemplateFactory extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + static get Default() { + return Default$4; + } + static get DefaultType() { + return DefaultType$4; + } + static get NAME() { + return NAME$5; + } + getContent() { + return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content) { + this._checkContent(content); + this._config.content = { + ...this._config.content, + ...content + }; + return this; + } + toHtml() { + const templateWrapper = document.createElement('div'); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(' ')); + } + return template; + } + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content] of Object.entries(arg)) { + super._typeCheckConfig({ + selector, + entry: content + }, DefaultContentType); + } + } + _setContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template); + if (!templateElement) { + return; + } + content = this._resolvePossibleFunction(content); + if (!content) { + templateElement.remove(); + return; + } + if (isElement(content)) { + this._putElementInTemplate(getElement(content), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content); + return; + } + templateElement.textContent = content; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ''; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + } + const NAME$4 = 'tooltip'; + const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); + const CLASS_NAME_FADE$2 = 'fade'; + const CLASS_NAME_MODAL = 'modal'; + const CLASS_NAME_SHOW$2 = 'show'; + const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + const EVENT_MODAL_HIDE = 'hide.bs.modal'; + const TRIGGER_HOVER = 'hover'; + const TRIGGER_FOCUS = 'focus'; + const TRIGGER_CLICK = 'click'; + const TRIGGER_MANUAL = 'manual'; + const EVENT_HIDE$2 = 'hide'; + const EVENT_HIDDEN$2 = 'hidden'; + const EVENT_SHOW$2 = 'show'; + const EVENT_SHOWN$2 = 'shown'; + const EVENT_INSERTED = 'inserted'; + const EVENT_CLICK$1 = 'click'; + const EVENT_FOCUSIN$1 = 'focusin'; + const EVENT_FOCUSOUT$1 = 'focusout'; + const EVENT_MOUSEENTER = 'mouseenter'; + const EVENT_MOUSELEAVE = 'mouseleave'; + const AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: isRTL() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: isRTL() ? 'right' : 'left' + }; + const Default$3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: 'clippingParents', + container: false, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: false, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: '', + trigger: 'hover focus' + }; + const DefaultType$3 = { + 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 Tooltip extends BaseComponent { + constructor(element, config) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } + super(element, config); + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + static get Default() { + return Default$3; + } + static get DefaultType() { + return DefaultType$3; + } + static get NAME() { + return NAME$4; + } + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + this._activeTrigger.click = !this._activeTrigger.click; + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute('data-bs-original-title')) { + this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute('aria-describedby', tip.getAttribute('id')); + const { + container + } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW$2); + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + const complete = () => { + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW$2); + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute('aria-describedby'); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content) { + const tip = this._getTemplateFactory(content).toHtml(); + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute('id', tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE$2); + } + return tip; + } + setContent(content) { + this._newContent = content; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content) { + if (this._templateFactory) { + this._templateFactory.changeContent(content); + } else { + this._templateFactory = new TemplateFactory({ + ...this._config, + content, + extraClass: this._resolvePossibleFunction(this._config.customClass) + }); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); + } + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + 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: true, + phase: 'beforeMain', + fn: data => { + this._getTipElement().setAttribute('data-popper-placement', data.state.placement); + } + }] + }; + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _setListeners() { + const triggers = this._config.trigger.split(' '); + for (const trigger of triggers) { + if (trigger === 'click') { + EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); + EventHandler.on(this._element, eventIn, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + EventHandler.on(this._element, eventOut, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute('title'); + if (!title) { + return; + } + if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { + this._element.setAttribute('aria-label', title); + } + this._element.setAttribute('data-bs-original-title', title); + this._element.removeAttribute('title'); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = { + ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = 'manual'; + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + static jQueryInterface(config) { + return this.each(function () { + const data = Tooltip.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + defineJQueryPlugin(Tooltip); + const NAME$3 = 'popover'; + const SELECTOR_TITLE = '.popover-header'; + const SELECTOR_CONTENT = '.popover-body'; + const Default$2 = { + ...Tooltip.Default, + content: '', + offset: [0, 8], + placement: 'right', + template: '', + trigger: 'click' + }; + const DefaultType$2 = { + ...Tooltip.DefaultType, + content: '(null|string|element|function)' + }; + class Popover extends Tooltip { + static get Default() { + return Default$2; + } + static get DefaultType() { + return DefaultType$2; + } + static get NAME() { + return NAME$3; + } + _isWithContent() { + return this._getTitle() || this._getContent(); + } + _getContentForTemplate() { + return { + [SELECTOR_TITLE]: this._getTitle(), + [SELECTOR_CONTENT]: this._getContent() + }; + } + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } + static jQueryInterface(config) { + return this.each(function () { + const data = Popover.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + defineJQueryPlugin(Popover); + const NAME$2 = 'scrollspy'; + const DATA_KEY$2 = 'bs.scrollspy'; + const EVENT_KEY$2 = `.${DATA_KEY$2}`; + const DATA_API_KEY = '.data-api'; + const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; + const EVENT_CLICK = `click${EVENT_KEY$2}`; + const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; + const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; + const CLASS_NAME_ACTIVE$1 = 'active'; + const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; + const SELECTOR_TARGET_LINKS = '[href]'; + const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; + const SELECTOR_NAV_LINKS = '.nav-link'; + const SELECTOR_NAV_ITEMS = '.nav-item'; + const SELECTOR_LIST_ITEMS = '.list-group-item'; + const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; + const SELECTOR_DROPDOWN = '.dropdown'; + const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; + const Default$1 = { + offset: null, + rootMargin: '0px 0px -25%', + smoothScroll: false, + target: null, + threshold: [0.1, 0.5, 1] + }; + const DefaultType$1 = { + offset: '(number|null)', + rootMargin: 'string', + smoothScroll: 'boolean', + target: 'element', + threshold: 'array' + }; + class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element, config); + this._targetLinks = new Map(); + this._observableSections = new Map(); + this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; + this._activeTarget = null; + this._observer = null; + this._previousScrollData = { + visibleEntryTop: 0, + parentScrollTop: 0 + }; + this.refresh(); + } + static get Default() { + return Default$1; + } + static get DefaultType() { + return DefaultType$1; + } + static get NAME() { + return NAME$2; + } + refresh() { + this._initializeTargetsAndObservables(); + this._maybeEnableSmoothScroll(); + if (this._observer) { + this._observer.disconnect(); + } else { + this._observer = this._getNewObserver(); + } + for (const section of this._observableSections.values()) { + this._observer.observe(section); + } + } + dispose() { + this._observer.disconnect(); + super.dispose(); + } + _configAfterMerge(config) { + config.target = getElement(config.target) || document.body; + config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; + if (typeof config.threshold === 'string') { + config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); + } + return config; + } + _maybeEnableSmoothScroll() { + if (!this._config.smoothScroll) { + return; + } + EventHandler.off(this._config.target, EVENT_CLICK); + EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { + const observableSection = this._observableSections.get(event.target.hash); + if (observableSection) { + event.preventDefault(); + const root = this._rootElement || window; + const height = observableSection.offsetTop - this._element.offsetTop; + if (root.scrollTo) { + root.scrollTo({ + top: height, + behavior: 'smooth' + }); + return; + } + root.scrollTop = height; + } + }); + } + _getNewObserver() { + const options = { + root: this._rootElement, + threshold: this._config.threshold, + rootMargin: this._config.rootMargin + }; + return new IntersectionObserver(entries => this._observerCallback(entries), options); + } + _observerCallback(entries) { + const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); + const activate = entry => { + this._previousScrollData.visibleEntryTop = entry.target.offsetTop; + this._process(targetElement(entry)); + }; + const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; + const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; + this._previousScrollData.parentScrollTop = parentScrollTop; + for (const entry of entries) { + if (!entry.isIntersecting) { + this._activeTarget = null; + this._clearActiveClass(targetElement(entry)); + continue; + } + const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; + if (userScrollsDown && entryIsLowerThanPrevious) { + activate(entry); + if (!parentScrollTop) { + return; + } + continue; + } + if (!userScrollsDown && !entryIsLowerThanPrevious) { + activate(entry); + } + } + } + _initializeTargetsAndObservables() { + this._targetLinks = new Map(); + this._observableSections = new Map(); + const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); + for (const anchor of targetLinks) { + if (!anchor.hash || isDisabled(anchor)) { + continue; + } + const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); + if (isVisible(observableSection)) { + this._targetLinks.set(decodeURI(anchor.hash), anchor); + this._observableSections.set(anchor.hash, observableSection); + } + } + } + _process(target) { + if (this._activeTarget === target) { + return; + } + this._clearActiveClass(this._config.target); + this._activeTarget = target; + target.classList.add(CLASS_NAME_ACTIVE$1); + this._activateParents(target); + EventHandler.trigger(this._element, EVENT_ACTIVATE, { + relatedTarget: target + }); + } + _activateParents(target) { + if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); + return; + } + for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { + for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { + item.classList.add(CLASS_NAME_ACTIVE$1); + } + } + } + _clearActiveClass(parent) { + parent.classList.remove(CLASS_NAME_ACTIVE$1); + const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); + for (const node of activeNodes) { + node.classList.remove(CLASS_NAME_ACTIVE$1); + } + } + static jQueryInterface(config) { + return this.each(function () { + const data = ScrollSpy.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { + for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { + ScrollSpy.getOrCreateInstance(spy); + } + }); + defineJQueryPlugin(ScrollSpy); + const NAME$1 = 'tab'; + const DATA_KEY$1 = 'bs.tab'; + const EVENT_KEY$1 = `.${DATA_KEY$1}`; + const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; + const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; + const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; + const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; + const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; + const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; + const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; + const ARROW_LEFT_KEY = 'ArrowLeft'; + const ARROW_RIGHT_KEY = 'ArrowRight'; + const ARROW_UP_KEY = 'ArrowUp'; + const ARROW_DOWN_KEY = 'ArrowDown'; + const HOME_KEY = 'Home'; + const END_KEY = 'End'; + const CLASS_NAME_ACTIVE = 'active'; + const CLASS_NAME_FADE$1 = 'fade'; + const CLASS_NAME_SHOW$1 = 'show'; + const CLASS_DROPDOWN = 'dropdown'; + const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; + const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; + const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'; + const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; + const SELECTOR_OUTER = '.nav-item, .list-group-item'; + const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; + const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; + const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; + const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; + class Tab extends BaseComponent { + constructor(element) { + super(element); + this._parent = this._element.closest(SELECTOR_TAB_PANEL); + if (!this._parent) { + return; + } + this._setInitialAttributes(this._parent, this._getChildren()); + EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); + } + static get NAME() { + return NAME$1; + } + show() { + const innerElem = this._element; + if (this._elemIsActive(innerElem)) { + return; + } + const active = this._getActiveElem(); + const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { + relatedTarget: innerElem + }) : null; + const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { + relatedTarget: active + }); + if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { + return; + } + this._deactivate(active, innerElem); + this._activate(innerElem, active); + } + _activate(element, relatedElem) { + if (!element) { + return; + } + element.classList.add(CLASS_NAME_ACTIVE); + this._activate(SelectorEngine.getElementFromSelector(element)); + const complete = () => { + if (element.getAttribute('role') !== 'tab') { + element.classList.add(CLASS_NAME_SHOW$1); + return; + } + element.removeAttribute('tabindex'); + element.setAttribute('aria-selected', true); + this._toggleDropDown(element, true); + EventHandler.trigger(element, EVENT_SHOWN$1, { + relatedTarget: relatedElem + }); + }; + this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); + } + _deactivate(element, relatedElem) { + if (!element) { + return; + } + element.classList.remove(CLASS_NAME_ACTIVE); + element.blur(); + this._deactivate(SelectorEngine.getElementFromSelector(element)); + const complete = () => { + if (element.getAttribute('role') !== 'tab') { + element.classList.remove(CLASS_NAME_SHOW$1); + return; + } + element.setAttribute('aria-selected', false); + element.setAttribute('tabindex', '-1'); + this._toggleDropDown(element, false); + EventHandler.trigger(element, EVENT_HIDDEN$1, { + relatedTarget: relatedElem + }); + }; + this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); + } + _keydown(event) { + if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { + return; + } + event.stopPropagation(); + event.preventDefault(); + const children = this._getChildren().filter(element => !isDisabled(element)); + let nextActiveElement; + if ([HOME_KEY, END_KEY].includes(event.key)) { + nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; + } else { + const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); + nextActiveElement = getNextActiveElement(children, event.target, isNext, true); + } + if (nextActiveElement) { + nextActiveElement.focus({ + preventScroll: true + }); + Tab.getOrCreateInstance(nextActiveElement).show(); + } + } + _getChildren() { + return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); + } + _getActiveElem() { + return this._getChildren().find(child => this._elemIsActive(child)) || null; + } + _setInitialAttributes(parent, children) { + this._setAttributeIfNotExists(parent, 'role', 'tablist'); + for (const child of children) { + this._setInitialAttributesOnChild(child); + } + } + _setInitialAttributesOnChild(child) { + child = this._getInnerElement(child); + const isActive = this._elemIsActive(child); + const outerElem = this._getOuterElement(child); + child.setAttribute('aria-selected', isActive); + if (outerElem !== child) { + this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); + } + if (!isActive) { + child.setAttribute('tabindex', '-1'); + } + this._setAttributeIfNotExists(child, 'role', 'tab'); + this._setInitialAttributesOnTargetPanel(child); + } + _setInitialAttributesOnTargetPanel(child) { + const target = SelectorEngine.getElementFromSelector(child); + if (!target) { + return; + } + this._setAttributeIfNotExists(target, 'role', 'tabpanel'); + if (child.id) { + this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); + } + } + _toggleDropDown(element, open) { + const outerElem = this._getOuterElement(element); + if (!outerElem.classList.contains(CLASS_DROPDOWN)) { + return; + } + const toggle = (selector, className) => { + const element = SelectorEngine.findOne(selector, outerElem); + if (element) { + element.classList.toggle(className, open); + } + }; + toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); + toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); + outerElem.setAttribute('aria-expanded', open); + } + _setAttributeIfNotExists(element, attribute, value) { + if (!element.hasAttribute(attribute)) { + element.setAttribute(attribute, value); + } + } + _elemIsActive(elem) { + return elem.classList.contains(CLASS_NAME_ACTIVE); + } + _getInnerElement(elem) { + return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); + } + _getOuterElement(elem) { + return elem.closest(SELECTOR_OUTER) || elem; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Tab.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + Tab.getOrCreateInstance(this).show(); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API, () => { + for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { + Tab.getOrCreateInstance(element); + } + }); + defineJQueryPlugin(Tab); + const NAME = 'toast'; + const DATA_KEY = 'bs.toast'; + const EVENT_KEY = `.${DATA_KEY}`; + const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; + const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; + const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; + const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; + const EVENT_HIDE = `hide${EVENT_KEY}`; + const EVENT_HIDDEN = `hidden${EVENT_KEY}`; + const EVENT_SHOW = `show${EVENT_KEY}`; + const EVENT_SHOWN = `shown${EVENT_KEY}`; + const CLASS_NAME_FADE = 'fade'; + const CLASS_NAME_HIDE = 'hide'; + const CLASS_NAME_SHOW = 'show'; + const CLASS_NAME_SHOWING = 'showing'; + const DefaultType = { + animation: 'boolean', + autohide: 'boolean', + delay: 'number' + }; + const Default = { + animation: true, + autohide: true, + delay: 5000 + }; + class Toast extends BaseComponent { + constructor(element, config) { + super(element, config); + this._timeout = null; + this._hasMouseInteraction = false; + this._hasKeyboardInteraction = false; + this._setListeners(); + } + static get Default() { + return Default; + } + static get DefaultType() { + return DefaultType; + } + static get NAME() { + return NAME; + } + show() { + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); + if (showEvent.defaultPrevented) { + return; + } + this._clearTimeout(); + if (this._config.animation) { + this._element.classList.add(CLASS_NAME_FADE); + } + const complete = () => { + this._element.classList.remove(CLASS_NAME_SHOWING); + EventHandler.trigger(this._element, EVENT_SHOWN); + this._maybeScheduleHide(); + }; + this._element.classList.remove(CLASS_NAME_HIDE); + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); + this._queueCallback(complete, this._element, this._config.animation); + } + hide() { + if (!this.isShown()) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); + if (hideEvent.defaultPrevented) { + return; + } + const complete = () => { + this._element.classList.add(CLASS_NAME_HIDE); + this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); + EventHandler.trigger(this._element, EVENT_HIDDEN); + }; + this._element.classList.add(CLASS_NAME_SHOWING); + this._queueCallback(complete, this._element, this._config.animation); + } + dispose() { + this._clearTimeout(); + if (this.isShown()) { + this._element.classList.remove(CLASS_NAME_SHOW); + } + super.dispose(); + } + isShown() { + return this._element.classList.contains(CLASS_NAME_SHOW); + } + _maybeScheduleHide() { + if (!this._config.autohide) { + return; + } + if (this._hasMouseInteraction || this._hasKeyboardInteraction) { + return; + } + this._timeout = setTimeout(() => { + this.hide(); + }, this._config.delay); + } + _onInteraction(event, isInteracting) { + switch (event.type) { + case 'mouseover': + case 'mouseout': + { + this._hasMouseInteraction = isInteracting; + break; + } + case 'focusin': + case 'focusout': + { + this._hasKeyboardInteraction = isInteracting; + break; + } + } + if (isInteracting) { + this._clearTimeout(); + return; + } + const nextElement = event.relatedTarget; + if (this._element === nextElement || this._element.contains(nextElement)) { + return; + } + this._maybeScheduleHide(); + } + _setListeners() { + EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); + EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); + EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); + EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); + } + _clearTimeout() { + clearTimeout(this._timeout); + this._timeout = null; + } + static jQueryInterface(config) { + return this.each(function () { + const data = Toast.getOrCreateInstance(this, config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + } + }); + } + } + enableDismissTrigger(Toast); + defineJQueryPlugin(Toast); + + var bootstrap = /*#__PURE__*/Object.freeze({ + __proto__: null, + Alert: Alert, + Button: Button, + Carousel: Carousel, + Collapse: Collapse, + Dropdown: Dropdown, + Modal: Modal, + Offcanvas: Offcanvas, + Popover: Popover, + ScrollSpy: ScrollSpy, + Tab: Tab, + Toast: Toast, + Tooltip: Tooltip + }); + + var dropdownTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')); + dropdownTriggerList.map(function (dropdownTriggerEl) { + var options = { + boundary: dropdownTriggerEl.getAttribute('data-bs-boundary') === 'viewport' ? document.querySelector('.btn') : 'clippingParents' + }; + return new Dropdown(dropdownTriggerEl, options); + }); + + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + tooltipTriggerList.map(function (tooltipTriggerEl) { + var _ref, _tooltipTriggerEl$get; + var options = { + delay: { + show: 50, + hide: 50 + }, + html: (_ref = tooltipTriggerEl.getAttribute("data-bs-html") === "true") !== null && _ref !== void 0 ? _ref : false, + placement: (_tooltipTriggerEl$get = tooltipTriggerEl.getAttribute('data-bs-placement')) !== null && _tooltipTriggerEl$get !== void 0 ? _tooltipTriggerEl$get : 'auto' + }; + return new Tooltip(tooltipTriggerEl, options); + }); + + var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); + popoverTriggerList.map(function (popoverTriggerEl) { + var _ref, _popoverTriggerEl$get; + var options = { + delay: { + show: 50, + hide: 50 + }, + html: (_ref = popoverTriggerEl.getAttribute('data-bs-html') === "true") !== null && _ref !== void 0 ? _ref : false, + placement: (_popoverTriggerEl$get = popoverTriggerEl.getAttribute('data-bs-placement')) !== null && _popoverTriggerEl$get !== void 0 ? _popoverTriggerEl$get : 'auto' + }; + return new Popover(popoverTriggerEl, options); + }); + + var switchesTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]')); + switchesTriggerList.map(function (switchTriggerEl) { + switchTriggerEl.addEventListener('click', function (e) { + e.stopPropagation(); + switchTriggerEl.classList.toggle('active'); + }); + }); + + var EnableActivationTabsFromLocationHash = function EnableActivationTabsFromLocationHash() { + var locationHash = window.location.hash; + if (locationHash) { + var tabsList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]')); + var matchedTabs = tabsList.filter(function (tab) { + return tab.hash === locationHash; + }); + matchedTabs.map(function (tab) { + new Tab(tab).show(); + }); + } + }; + EnableActivationTabsFromLocationHash(); + + var toastsTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]')); + toastsTriggerList.map(function (toastTriggerEl) { + return new Toast(toastTriggerEl); + }); + + var prefix = 'tblr-'; + var hexToRgba = function hexToRgba(hex, opacity) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? "rgba(".concat(parseInt(result[1], 16), ", ").concat(parseInt(result[2], 16), ", ").concat(parseInt(result[3], 16), ", ").concat(opacity, ")") : null; + }; + var getColor = function getColor(color) { + var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + var c = getComputedStyle(document.body).getPropertyValue("--".concat(prefix).concat(color)).trim(); + if (opacity !== 1) { + return hexToRgba(c, opacity); + } + return c; + }; + + var tabler = /*#__PURE__*/Object.freeze({ + __proto__: null, + prefix: prefix, + hexToRgba: hexToRgba, + getColor: getColor + }); + + globalThis.bootstrap = bootstrap; + globalThis.tabler = tabler; + +})); diff --git a/public/js/tabler.min.js b/public/js/tabler.min.js index 09b4546..cc676d8 100644 --- a/public/js/tabler.min.js +++ b/public/js/tabler.min.js @@ -1,6 +1,6 @@ /*! -* Tabler v1.0.0-beta19 (https://tabler.io) -* @version 1.0.0-beta19 +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 * @link https://tabler.io * Copyright 2018-2023 The Tabler Authors * Copyright 2018-2023 codecalm.net Paweł Kuna @@ -8,8 +8,8 @@ */ !function(t){"function"==typeof define&&define.amd?define(t):t()}((function(){"use strict";var t=new Map;function e(e){var s=t.get(e);s&&s.destroy()}function s(e){var s=t.get(e);s&&s.update()}var i=null;"undefined"==typeof window?((i=function(t){return t}).destroy=function(t){return t},i.update=function(t){return t}):((i=function(e,s){return e&&Array.prototype.forEach.call(e.length?e:[e],(function(e){return function(e){if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!t.has(e)){var s,i=null,n=window.getComputedStyle(e),r=(s=e.value,function(){a({testForHeightReduction:""===s||!e.value.startsWith(s),restoreTextAlign:null}),s=e.value}),o=function(s){e.removeEventListener("autosize:destroy",o),e.removeEventListener("autosize:update",l),e.removeEventListener("input",r),window.removeEventListener("resize",l),Object.keys(s).forEach((function(t){return e.style[t]=s[t]})),t.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,textAlign:e.style.textAlign,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",o),e.addEventListener("autosize:update",l),e.addEventListener("input",r),window.addEventListener("resize",l),e.style.overflowX="hidden",e.style.wordWrap="break-word",t.set(e,{destroy:o,update:l}),l()}function a(t){var s,r,o=t.restoreTextAlign,l=void 0===o?null:o,u=t.testForHeightReduction,h=void 0===u||u,c=n.overflowY;if(0!==e.scrollHeight&&("vertical"===n.resize?e.style.resize="none":"both"===n.resize&&(e.style.resize="horizontal"),h&&(s=function(t){for(var e=[];t&&t.parentNode&&t.parentNode instanceof Element;)t.parentNode.scrollTop&&e.push([t.parentNode,t.parentNode.scrollTop]),t=t.parentNode;return function(){return e.forEach((function(t){var e=t[0],s=t[1];e.style.scrollBehavior="auto",e.scrollTop=s,e.style.scrollBehavior=null}))}}(e),e.style.height=""),r="content-box"===n.boxSizing?e.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):e.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),"none"!==n.maxHeight&&r>parseFloat(n.maxHeight)?("hidden"===n.overflowY&&(e.style.overflow="scroll"),r=parseFloat(n.maxHeight)):"hidden"!==n.overflowY&&(e.style.overflow="hidden"),e.style.height=r+"px",l&&(e.style.textAlign=l),s&&s(),i!==r&&(e.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),i=r),c!==n.overflow&&!l)){var d=n.textAlign;"hidden"===n.overflow&&(e.style.textAlign="start"===d?"end":"start"),a({restoreTextAlign:d,testForHeightReduction:!0})}}function l(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(e)})),e}).destroy=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],e),t},i.update=function(t){return t&&Array.prototype.forEach.call(t.length?t:[t],s),t});var n=i,r=document.querySelectorAll('[data-bs-toggle="autosize"]');function o(t,e){if(null==t)return{};var s,i,n={},r=Object.keys(t);for(i=0;i=0||(n[s]=t[s]);return n}function a(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new a.InputMask(t,e)}r.length&&r.forEach((function(t){n(t)}));class l{constructor(t){Object.assign(this,{inserted:"",rawInserted:"",skip:!1,tailShift:0},t)}aggregate(t){return this.rawInserted+=t.rawInserted,this.skip=this.skip||t.skip,this.inserted+=t.inserted,this.tailShift+=t.tailShift,this}get offset(){return this.tailShift+this.inserted.length}}function u(t){return"string"==typeof t||t instanceof String}a.ChangeDetails=l;const h="NONE",c="LEFT",d="FORCE_LEFT",p="RIGHT",f="FORCE_RIGHT";function g(t){return t.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function m(t){return Array.isArray(t)?t:[t,new l]}function _(t,e){if(e===t)return!0;var s,i=Array.isArray(e),n=Array.isArray(t);if(i&&n){if(e.length!=t.length)return!1;for(s=0;s0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2?arguments[2]:void 0;this.value=t,this.from=e,this.stop=s}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||null!=t&&this.from>=t)return"";const e=this.value[0];return this.value=this.value.slice(1),e}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class k{constructor(t){this._value="",this._update(Object.assign({},k.DEFAULTS,t)),this.isInitialized=!0}updateOptions(t){Object.keys(t).length&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t)}resolve(t){return this.reset(),this.append(t,{input:!0},""),this.doCommit(),this.value}get unmaskedValue(){return this.value}set unmaskedValue(t){this.reset(),this.append(t,{},""),this.doCommit()}get typedValue(){return this.doParse(this.value)}set typedValue(t){this.value=this.doFormat(t)}get rawInputValue(){return this.extractInput(0,this.value.length,{raw:!0})}set rawInputValue(t){this.reset(),this.append(t,{raw:!0},""),this.doCommit()}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,e){return t}totalInputPositions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return Math.min(this.value.length,e-t)}extractInput(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this.value.slice(t,e)}extractTail(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return new b(this.extractInput(t,e),t)}appendTail(t){return u(t)&&(t=new b(String(t))),t.appendTo(this)}_appendCharRaw(t){return t?(this._value+=t,new l({inserted:t,rawInserted:t})):new l}_appendChar(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;const i=this.state;let n;if([t,n]=m(this.doPrepare(t,e)),n=n.aggregate(this._appendCharRaw(t,e)),n.inserted){let t,r=!1!==this.doValidate(e);if(r&&null!=s){const e=this.state;!0===this.overwrite&&(t=s.state,s.unshift(this.value.length-n.tailShift));let i=this.appendTail(s);r=i.rawInserted===s.toString(),r&&i.inserted||"shift"!==this.overwrite||(this.state=e,t=s.state,s.shift(),i=this.appendTail(s),r=i.rawInserted===s.toString()),r&&i.inserted&&(this.state=e)}r||(n=new l,this.state=i,s&&t&&(s.state=t))}return n}_appendPlaceholder(){return new l}_appendEager(){return new l}append(t,e,s){if(!u(t))throw new Error("value should be string");const i=new l,n=u(s)?new b(String(s)):s;null!=e&&e.tail&&(e._beforeTailState=this.state);for(let s=0;s0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this._value=this.value.slice(0,t)+this.value.slice(e),new l}withValueRefresh(t){if(this._refreshing||!this.isInitialized)return t();this._refreshing=!0;const e=this.rawInputValue,s=this.value,i=t();return this.rawInputValue=e,this.value&&this.value!==s&&0===s.indexOf(this.value)&&this.append(s.slice(this.value.length),{},""),delete this._refreshing,i}runIsolated(t){if(this._isolated||!this.isInitialized)return t(this);this._isolated=!0;const e=this.state,s=t(this);return this.state=e,delete this._isolated,s}doSkipInvalid(t){return this.skipInvalid}doPrepare(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.prepare?this.prepare(t,this,e):t}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}doFormat(t){return this.format?this.format(t,this):t}doParse(t){return this.parse?this.parse(t,this):t}splice(t,e,s,i){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{input:!0};const r=t+e,o=this.extractTail(r),a=!0===this.eager||"remove"===this.eager;let u;a&&(i=function(t){switch(t){case c:return d;case p:return f;default:return t}}(i),u=this.extractInput(0,r,{raw:!0}));let g=t;const m=new l;if(i!==h&&(g=this.nearestInputPos(t,e>1&&0!==t&&!a?h:i),m.tailShift=g-t),m.aggregate(this.remove(g)),a&&i!==h&&u===this.rawInputValue)if(i===d){let t;for(;u===this.rawInputValue&&(t=this.value.length);)m.aggregate(new l({tailShift:-1})).aggregate(this.remove(t-1))}else i===f&&o.unshift();return m.aggregate(this.append(s,n,o))}maskEquals(t){return this.mask===t}typedValueEquals(t){const e=this.typedValue;return t===e||k.EMPTY_VALUES.includes(t)&&k.EMPTY_VALUES.includes(e)||this.doFormat(t)===this.doFormat(this.typedValue)}}function y(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?a.MaskedRegExp:u(t)?a.MaskedPattern:t instanceof Date||t===Date?a.MaskedDate:t instanceof Number||"number"==typeof t||t===Number?a.MaskedNumber:Array.isArray(t)||t===Array?a.MaskedDynamic:a.Masked&&t.prototype instanceof a.Masked?t:t instanceof a.Masked?t.constructor:t instanceof Function?a.MaskedFunction:(console.warn("Mask not found for mask",t),a.Masked)}function A(t){if(a.Masked&&t instanceof a.Masked)return t;const e=(t=Object.assign({},t)).mask;if(a.Masked&&e instanceof a.Masked)return e;const s=y(e);if(!s)throw new Error("Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.");return new s(t)}k.DEFAULTS={format:String,parse:t=>t,skipInvalid:!0},k.EMPTY_VALUES=[void 0,null,""],a.Masked=k,a.createMask=A;const w=["parent","isOptional","placeholderChar","displayChar","lazy","eager"],E={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./};class C{constructor(t){const{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:r,eager:a}=t,l=o(t,w);this.masked=A(l),Object.assign(this,{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:r,eager:a})}reset(){this.isFilled=!1,this.masked.reset()}remove(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return 0===t&&e>=1?(this.isFilled=!1,this.masked.remove(t,e)):new l}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.isFilled)return new l;const s=this.masked.state,i=this.masked._appendChar(t,e);return i.inserted&&!1===this.doValidate(e)&&(i.inserted=i.rawInserted="",this.masked.state=s),i.inserted||this.isOptional||this.lazy||e.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(){return this.masked.append(...arguments)}_appendPlaceholder(){const t=new l;return this.isFilled||this.isOptional||(this.isFilled=!0,t.inserted=this.placeholderChar),t}_appendEager(){return new l}extractTail(){return this.masked.extractTail(...arguments)}appendTail(){return this.masked.appendTail(...arguments)}extractInput(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;return this.masked.extractInput(t,e,s)}nearestInputPos(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h;const s=this.value.length,i=Math.min(Math.max(t,0),s);switch(e){case c:case d:return this.isComplete?i:0;case p:case f:return this.isComplete?i:s;default:return i}}totalInputPositions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;return this.value.slice(t,e).length}doValidate(){return this.masked.doValidate(...arguments)&&(!this.parent||this.parent.doValidate(...arguments))}doCommit(){this.masked.doCommit()}get state(){return{masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}}class x{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return this._value=this._value.slice(0,t)+this._value.slice(e),this._value||(this._isRawInput=!1),new l}nearestInputPos(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h;const s=this._value.length;switch(e){case c:case d:return 0;default:return s}}totalInputPositions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return this._isRawInput?e-t:0}extractInput(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._value.length;return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).raw&&this._isRawInput&&this._value.slice(t,e)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=new l;if(this.isFilled)return s;const i=!0===this.eager||"append"===this.eager,n=this.char===t&&(this.isUnmasking||e.input||e.raw)&&(!e.raw||!i)&&!e.tail;return n&&(s.rawInserted=this.char),this._value=s.inserted=this.char,this._isRawInput=n&&(e.raw||e.input),s}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new l;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return arguments.length>1&&void 0!==arguments[1]||this.value.length,new b("")}appendTail(t){return u(t)&&(t=new b(String(t))),t.appendTo(this)}append(t,e,s){const i=this._appendChar(t[0],e);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_isRawInput:this._isRawInput}}set state(t){Object.assign(this,t)}}const S=["chunks"];class F{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.chunks=t,this.from=e}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;u(t)&&(t=new b(String(t)));const e=this.chunks[this.chunks.length-1],s=e&&(e.stop===t.stop||null==t.stop)&&t.from===e.from+e.toString().length;if(t instanceof b)s?e.extend(t.toString()):this.chunks.push(t);else if(t instanceof F){if(null==t.stop){let e;for(;t.chunks.length&&null==t.chunks[0].stop;)e=t.chunks.shift(),e.from+=t.from,this.extend(e)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof a.MaskedPattern)){return new b(this.toString()).appendTo(t)}const e=new l;for(let s=0;s=0){const s=t._appendPlaceholder(r);e.aggregate(s)}o=i instanceof F&&t._blocks[r]}if(o){const s=o.appendTail(i);s.skip=!1,e.aggregate(s),t._value+=s.inserted;const n=i.toString().slice(s.rawInserted.length);n&&e.aggregate(t.append(n,{tail:!0}))}else e.aggregate(t.append(i.toString(),{tail:!0}))}return e}get state(){return{chunks:this.chunks.map((t=>t.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:e}=t,s=o(t,S);Object.assign(this,s),this.chunks=e.map((t=>{const e="chunks"in t?new F:new b;return e.state=t,e}))}unshift(t){if(!this.chunks.length||null!=t&&this.from>=t)return"";const e=null!=t?t-this.from:t;let s=0;for(;s=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.value.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null===(e=this.block)||void 0===e?void 0:e.value.length)||0){var e;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,d),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,c),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,c),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,f),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,h),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,h),!0}))}}a.MaskedRegExp=class extends k{_update(t){t.mask&&(t.validate=e=>e.search(t.mask)>=0),super._update(t)}};const D=["_blocks"];class O extends k{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.definitions=Object.assign({},E,t.definitions),super(Object.assign({},O.DEFAULTS,t))}_update(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this._stops=[],this._maskedBlocks={};let e=this.mask;if(!e||!t)return;let s=!1,i=!1;for(let o=0;o0===t.indexOf(e)));s.sort(((t,e)=>e.length-t.length));const i=s[0];if(i){const t=A(Object.assign({parent:this,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite},this.blocks[i]));t&&(this._blocks.push(t),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),o+=i.length-1;continue}}let l=e[o],u=l in t;if(l===O.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===l||"}"===l){s=!s;continue}if("["===l||"]"===l){i=!i;continue}if(l===O.ESCAPE_CHAR){if(++o,l=e[o],!l)break;u=!1}const h=null===(n=t[l])||void 0===n||!n.mask||(null===(r=t[l])||void 0===r?void 0:r.mask.prototype)instanceof a.Masked?{mask:t[l]}:t[l],c=u?new C(Object.assign({parent:this,isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar},h)):new x({char:l,eager:this.eager,isUnmasking:s});this._blocks.push(c)}}get state(){return Object.assign({},super.state,{_blocks:this._blocks.map((t=>t.state))})}set state(t){const{_blocks:e}=t,s=o(t,D);this._blocks.forEach(((t,s)=>t.state=e[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((t=>t.reset()))}get isComplete(){return this._blocks.every((t=>t.isComplete))}get isFilled(){return this._blocks.every((t=>t.isFilled))}get isFixed(){return this._blocks.every((t=>t.isFixed))}get isOptional(){return this._blocks.every((t=>t.isOptional))}doCommit(){this._blocks.forEach((t=>t.doCommit())),super.doCommit()}get unmaskedValue(){return this._blocks.reduce(((t,e)=>t+e.unmaskedValue),"")}set unmaskedValue(t){super.unmaskedValue=t}get value(){return this._blocks.reduce(((t,e)=>t+e.value),"")}set value(t){super.value=t}get displayValue(){return this._blocks.reduce(((t,e)=>t+e.displayValue),"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const e=new l;let s=null===(t=this._mapPosToBlock(this.value.length))||void 0===t?void 0:t.index;if(null==s)return e;this._blocks[s].isFilled&&++s;for(let t=s;t1&&void 0!==arguments[1]?arguments[1]:{};const s=this._mapPosToBlock(this.value.length),i=new l;if(!s)return i;for(let o=s.index;;++o){var n,r;const s=this._blocks[o];if(!s)break;const a=s._appendChar(t,Object.assign({},e,{_beforeTailState:null===(n=e._beforeTailState)||void 0===n||null===(r=n._blocks)||void 0===r?void 0:r[o]})),l=a.skip;if(i.aggregate(a),l||a.rawInserted)break}return i}extractTail(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;const s=new F;return t===e||this._forEachBlocksInRange(t,e,((t,e,i,n)=>{const r=t.extractTail(i,n);r.stop=this._findStopBefore(e),r.from=this._blockStartPos(e),r instanceof F&&(r.blockIndex=e),s.extend(r)})),s}extractInput(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t===e)return"";let i="";return this._forEachBlocksInRange(t,e,((t,e,n,r)=>{i+=t.extractInput(n,r,s)})),i}_findStopBefore(t){let e;for(let s=0;s{if(!s.lazy||null!=t){const t=null!=s._blocks?[s._blocks.length]:[],i=s._appendPlaceholder(...t);this._value+=i.inserted,e.aggregate(i)}})),e}_mapPosToBlock(t){let e="";for(let s=0;st+e.value.length),0)}_forEachBlocksInRange(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;const i=this._mapPosToBlock(t);if(i){const t=this._mapPosToBlock(e),n=t&&i.index===t.index,r=i.offset,o=t&&n?t.offset:this._blocks[i.index].value.length;if(s(this._blocks[i.index],i.index,r,o),t&&!n){for(let e=i.index+1;e0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;const s=super.remove(t,e);return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s.aggregate(t.remove(i,n))})),s}nearestInputPos(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h;if(!this._blocks.length)return 0;const s=new T(this,t);if(e===h)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.value.length);if(e===c||e===d){if(e===c){if(s.pushRightBeforeFilled(),s.ok&&s.pos===t)return t;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),e===c){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=t)return s.pos;if(s.popState(),s.ok&&s.pos<=t)return s.pos;s.popState()}return s.ok?s.pos:e===d?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return e===p||e===f?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:e===f?this.value.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(t,c)))):t}totalInputPositions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=0;return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s+=t.totalInputPositions(i,n)})),s}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const e=this._maskedBlocks[t];return e?e.map((t=>this._blocks[t])):[]}}O.DEFAULTS={lazy:!0,placeholderChar:"_"},O.STOP_CHAR="`",O.ESCAPE_CHAR="\\",O.InputDefinition=C,O.FixedDefinition=x,a.MaskedPattern=O;class I extends O{get _matchFrom(){return this.maxLength-String(this.from).length}_update(t){t=Object.assign({to:this.to||0,from:this.from||0,maxLength:this.maxLength||0},t);let e=String(t.to).length;null!=t.maxLength&&(e=Math.max(e,t.maxLength)),t.maxLength=e;const s=String(t.from).padStart(e,"0"),i=String(t.to).padStart(e,"0");let n=0;for(;n1&&void 0!==arguments[1]?arguments[1]:{};if([t,e]=m(super.doPrepare(t.replace(/\D/g,""),s)),!this.autofix||!t)return t;const i=String(this.from).padStart(this.maxLength,"0"),n=String(this.to).padStart(this.maxLength,"0");let r=this.value+t;if(r.length>this.maxLength)return"";const[o,a]=this.boundaries(r);return Number(a)this.to?"pad"===this.autofix&&r.length{const s=t.blocks[e];!("autofix"in s)&&"autofix"in t&&(s.autofix=t.autofix)})),super._update(t)}doValidate(){const t=this.date;return super.doValidate(...arguments)&&(!this.isComplete||this.isDateExist(this.value)&&null!=t&&(null==this.min||this.min<=t)&&(null==this.max||t<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}}B.DEFAULTS={pattern:"d{.}`m{.}`Y",format:t=>{if(!t)return"";return[String(t.getDate()).padStart(2,"0"),String(t.getMonth()+1).padStart(2,"0"),t.getFullYear()].join(".")},parse:t=>{const[e,s,i]=t.split(".");return new Date(i,s-1,e)}},B.GET_DEFAULT_BLOCKS=()=>({d:{mask:I,from:1,to:31,maxLength:2},m:{mask:I,from:1,to:12,maxLength:2},Y:{mask:I,from:1900,to:9999}}),a.MaskedDate=B;class M{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch(t){}return null!=t?t:this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch(t){}return null!=t?t:this.value.length}select(t,e){if(null!=t&&null!=e&&(t!==this.selectionStart||e!==this.selectionEnd))try{this._unsafeSelect(t,e)}catch(t){}}_unsafeSelect(t,e){}get isActive(){return!1}bindEvents(t){}unbindEvents(){}}a.MaskElement=M;class P extends M{constructor(t){super(),this.input=t,this._handlers={}}get rootElement(){var t,e,s;return null!==(t=null===(e=(s=this.input).getRootNode)||void 0===e?void 0:e.call(s))&&void 0!==t?t:document}get isActive(){return this.input===this.rootElement.activeElement}get _unsafeSelectionStart(){return this.input.selectionStart}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,e){this.input.setSelectionRange(t,e)}get value(){return this.input.value}set value(t){this.input.value=t}bindEvents(t){Object.keys(t).forEach((e=>this._toggleEventHandler(P.EVENTS_MAP[e],t[e])))}unbindEvents(){Object.keys(this._handlers).forEach((t=>this._toggleEventHandler(t)))}_toggleEventHandler(t,e){this._handlers[t]&&(this.input.removeEventListener(t,this._handlers[t]),delete this._handlers[t]),e&&(this.input.addEventListener(t,e),this._handlers[t]=e)}}P.EVENTS_MAP={selectionChange:"keydown",input:"input",drop:"drop",click:"click",focus:"focus",commit:"blur"},a.HTMLMaskElement=P;class L extends P{get _unsafeSelectionStart(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||si?s:i}_unsafeSelect(t,e){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,t),s.setEnd(this.input.lastChild||this.input,e);const i=this.rootElement,n=i.getSelection&&i.getSelection();n&&(n.removeAllRanges(),n.addRange(s))}get value(){return this.input.textContent}set value(t){this.input.textContent=t}}a.HTMLContenteditableMaskElement=L;const V=["mask"];a.InputMask=class{constructor(t,e){this.el=t instanceof M?t:t.isContentEditable&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName?new L(t):new P(t),this.masked=A(e),this._listeners={},this._value="",this._unmaskedValue="",this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}get mask(){return this.masked.mask}maskEquals(t){var e;return null==t||(null===(e=this.masked)||void 0===e?void 0:e.maskEquals(t))}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof a.Masked)&&this.masked.constructor===y(t))return void this.masked.updateOptions({mask:t});const e=A({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl(),this.alignCursor())}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl(),this.alignCursor())}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;it(...s)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){this.el&&this.el.isActive&&(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value}updateControl(){const t=this.masked.unmaskedValue,e=this.masked.value,s=this.displayValue,i=this.unmaskedValue!==t||this.value!==e;this._unmaskedValue=t,this._value=e,this.el.value!==s&&(this.el.value=s),i&&this._fireChangeEvents()}updateOptions(t){const{mask:e}=t,s=o(t,V),i=!this.maskEquals(e),n=!_(this.masked,s);i&&(this.mask=e),n&&this.masked.updateOptions(s),(i||n)&&this.updateControl()}updateCursor(t){null!=t&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,c))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,e){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),this}off(t,e){if(!this._listeners[t])return this;if(!e)return delete this._listeners[t],this;const s=this._listeners[t].indexOf(e);return s>=0&&this._listeners[t].splice(s,1),this}_onInput(t){if(this._inputEvent=t,this._abortUpdateCursor(),!this._selection)return this.updateValue();const e=new v(this.el.value,this.cursorPos,this.displayValue,this._selection),s=this.masked.rawInputValue,i=this.masked.splice(e.startChangePos,e.removed.length,e.inserted,e.removeDirection,{input:!0,raw:!0}).offset,n=s===this.masked.rawInputValue?e.removeDirection:h;let r=this.masked.nearestInputPos(e.startChangePos+i,n);n!==h&&(r=this.masked.nearestInputPos(r,h)),this.updateControl(),this.updateCursor(r),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}};a.MaskedEnum=class extends O{_update(t){t.enum&&(t.mask="*".repeat(t.enum[0].length)),super._update(t)}doValidate(){return this.enum.some((t=>t.indexOf(this.unmaskedValue)>=0))&&super.doValidate(...arguments)}};class N extends k{constructor(t){super(Object.assign({},N.DEFAULTS,t))}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){let t="^"+(this.allowNegative?"[+|\\-]?":""),e=(this.scale?"(".concat(g(this.radix),"\\d{0,").concat(this.scale,"})?"):"")+"$";this._numberRegExp=new RegExp(t+"\\d*"+e),this._mapToRadixRegExp=new RegExp("[".concat(this.mapToRadix.map(g).join(""),"]"),"g"),this._thousandsSeparatorRegExp=new RegExp(g(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}doPrepare(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(e.input&&e.raw||!e.input&&!e.raw)?t.replace(this._mapToRadixRegExp,this.radix):t);const[s,i]=m(super.doPrepare(t,e));return t&&!s&&(i.skip=!0),[s,i]}_separatorsCount(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=0;for(let i=0;i0&&void 0!==arguments[0]?arguments[0]:this._value;return this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length,s=arguments.length>2?arguments[2]:void 0;return[t,e]=this._adjustRangeWithSeparators(t,e),this._removeThousandsSeparators(super.extractInput(t,e,s))}_appendCharRaw(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.thousandsSeparator)return super._appendCharRaw(t,e);const s=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const n=super._appendCharRaw(t,e);this._value=this._insertThousandsSeparators(this._value);const r=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,o=this._separatorsCountFromSlice(r);return n.tailShift+=(o-i)*this.thousandsSeparator.length,n.skip=!n.rawInserted&&t===this.thousandsSeparator,n}_findSeparatorAround(t){if(this.thousandsSeparator){const e=t-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,e);if(s<=t)return s}return-1}_adjustRangeWithSeparators(t,e){const s=this._findSeparatorAround(t);s>=0&&(t=s);const i=this._findSeparatorAround(e);return i>=0&&(e=i+this.thousandsSeparator.length),[t,e]}remove(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.value.length;[t,e]=this._adjustRangeWithSeparators(t,e);const s=this.value.slice(0,t),i=this.value.slice(e),n=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const r=this._separatorsCountFromSlice(s);return new l({tailShift:(r-n)*this.thousandsSeparator.length})}nearestInputPos(t,e){if(!this.thousandsSeparator)return t;switch(e){case h:case c:case d:{const s=this._findSeparatorAround(t-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(t=0)return e+this.thousandsSeparator.length}}return t}doValidate(t){let e=Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));if(e){const t=this.number;e=e&&!isNaN(t)&&(null==this.min||this.min>=0||this.min<=this.number)&&(null==this.max||this.max<=0||this.number<=this.max)}return e&&super.doValidate(t)}doCommit(){if(this.value){const t=this.number;let e=t;null!=this.min&&(e=Math.max(e,this.min)),null!=this.max&&(e=Math.min(e,this.max)),e!==t&&(this.unmaskedValue=this.doFormat(e));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(t){const e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,((t,e,s,i)=>e+i)),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}doSkipInvalid(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;const i=0===this.scale&&t!==this.thousandsSeparator&&(t===this.radix||t===N.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,e,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,N.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.doParse(this.unmaskedValue)}set typedValue(t){this.rawInputValue=this.doFormat(t).replace(N.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return this.signed||null!=this.min&&this.min<0||null!=this.max&&this.max<0}typedValueEquals(t){return(super.typedValueEquals(t)||N.EMPTY_VALUES.includes(t)&&N.EMPTY_VALUES.includes(this.typedValue))&&!(0===t&&""===this.value)}}N.UNMASKED_RADIX=".",N.DEFAULTS={radix:",",thousandsSeparator:"",mapToRadix:[N.UNMASKED_RADIX],scale:2,signed:!1,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:t=>t.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},N.EMPTY_VALUES=[...k.EMPTY_VALUES,0],a.MaskedNumber=N;a.MaskedFunction=class extends k{_update(t){t.mask&&(t.validate=t.mask),super._update(t)}};const j=["compiledMasks","currentMaskRef","currentMask"],$=["mask"];class R extends k{constructor(t){super(Object.assign({},R.DEFAULTS,t)),this.currentMask=null}_update(t){super._update(t),"mask"in t&&(this.compiledMasks=Array.isArray(t.mask)?t.mask.map((t=>A(t))):[])}_appendCharRaw(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=this._applyDispatch(t,e);return this.currentMask&&s.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(e))),s}_applyDispatch(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";const i=e.tail&&null!=e._beforeTailState?e._beforeTailState._value:this.value,n=this.rawInputValue,r=e.tail&&null!=e._beforeTailState?e._beforeTailState._rawInputValue:n,o=n.slice(r.length),a=this.currentMask,u=new l,h=null==a?void 0:a.state;if(this.currentMask=this.doDispatch(t,Object.assign({},e),s),this.currentMask)if(this.currentMask!==a){if(this.currentMask.reset(),r){const t=this.currentMask.append(r,{raw:!0});u.tailShift=t.inserted.length-i.length}o&&(u.tailShift+=this.currentMask.append(o,{raw:!0,tail:!0}).tailShift)}else this.currentMask.state=h;return u}_appendPlaceholder(){const t=this._applyDispatch(...arguments);return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch(...arguments);return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const e=new l;return t&&e.aggregate(this._applyDispatch("",{},t)),e.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var e,s;return Object.assign({},t,{_beforeTailState:(null===(e=t._beforeTailState)||void 0===e?void 0:e.currentMaskRef)===this.currentMask&&(null===(s=t._beforeTailState)||void 0===s?void 0:s.currentMask)||t._beforeTailState})}doDispatch(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return this.dispatch(t,this,e,s)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[s,i]=m(super.doPrepare(t,e));if(this.currentMask){let t;[s,t]=m(super.doPrepare(s,this.currentMaskFlags(e))),i=i.aggregate(t)}return[s,i]}reset(){var t;null===(t=this.currentMask)||void 0===t||t.reset(),this.compiledMasks.forEach((t=>t.reset()))}get value(){return this.currentMask?this.currentMask.value:""}set value(t){super.value=t}get unmaskedValue(){return this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.currentMask?this.currentMask.typedValue:""}set typedValue(t){let e=String(t);this.currentMask&&(this.currentMask.typedValue=t,e=this.currentMask.unmaskedValue),this.unmaskedValue=e}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return Boolean(null===(t=this.currentMask)||void 0===t?void 0:t.isComplete)}get isFilled(){var t;return Boolean(null===(t=this.currentMask)||void 0===t?void 0:t.isFilled)}remove(){const t=new l;return this.currentMask&&t.aggregate(this.currentMask.remove(...arguments)).aggregate(this._applyDispatch()),t}get state(){var t;return Object.assign({},super.state,{_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((t=>t.state)),currentMaskRef:this.currentMask,currentMask:null===(t=this.currentMask)||void 0===t?void 0:t.state})}set state(t){const{compiledMasks:e,currentMaskRef:s,currentMask:i}=t,n=o(t,j);this.compiledMasks.forEach(((t,s)=>t.state=e[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=n}extractInput(){return this.currentMask?this.currentMask.extractInput(...arguments):""}extractTail(){return this.currentMask?this.currentMask.extractTail(...arguments):super.extractTail(...arguments)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(){return this.currentMask?this.currentMask.nearestInputPos(...arguments):super.nearestInputPos(...arguments)}get overwrite(){return this.currentMask?this.currentMask.overwrite:super.overwrite}set overwrite(t){console.warn('"overwrite" option is not available in dynamic mask, use this option in siblings')}get eager(){return this.currentMask?this.currentMask.eager:super.eager}set eager(t){console.warn('"eager" option is not available in dynamic mask, use this option in siblings')}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:super.skipInvalid}set skipInvalid(t){(this.isInitialized||t!==k.DEFAULTS.skipInvalid)&&console.warn('"skipInvalid" option is not available in dynamic mask, use this option in siblings')}maskEquals(t){return Array.isArray(t)&&this.compiledMasks.every(((e,s)=>{if(!t[s])return;const i=t[s],{mask:n}=i;return _(e,o(i,$))&&e.maskEquals(n)}))}typedValueEquals(t){var e;return Boolean(null===(e=this.currentMask)||void 0===e?void 0:e.typedValueEquals(t))}}R.DEFAULTS={dispatch:(t,e,s,i)=>{if(!e.compiledMasks.length)return;const n=e.rawInputValue,r=e.compiledMasks.map(((r,o)=>{const a=e.currentMask===r,l=a?r.value.length:r.nearestInputPos(r.value.length,d);return r.rawInputValue!==n?(r.reset(),r.append(n,{raw:!0})):a||r.remove(l),r.append(t,e.currentMaskFlags(s)),r.appendTail(i),{index:o,weight:r.rawInputValue.length,totalInputPositions:r.totalInputPositions(0,Math.max(l,r.nearestInputPos(r.value.length,d)))}}));return r.sort(((t,e)=>e.weight-t.weight||e.totalInputPositions-t.totalInputPositions)),e.compiledMasks[r[0].index]}},a.MaskedDynamic=R;const z={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function H(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:z.MASKED,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:z.MASKED;const i=A(t);return t=>i.runIsolated((i=>(i[e]=t,i[s])))}a.PIPE_TYPE=z,a.createPipe=H,a.pipe=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i0&&wt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&wt(i.height)/t.offsetHeight||1);var o=(mt(t)?gt(t):window).visualViewport,a=!Ct()&&s,l=(i.left+(a&&o?o.offsetLeft:0))/n,u=(i.top+(a&&o?o.offsetTop:0))/r,h=i.width/n,c=i.height/r;return{width:h,height:c,top:u,right:l+h,bottom:u+c,left:l,x:l,y:u}}function St(t){var e=xt(t),s=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-s)<=1&&(s=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:s,height:i}}function Ft(t,e){var s=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(s&&vt(s)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Tt(t){return gt(t).getComputedStyle(t)}function Dt(t){return["table","td","th"].indexOf(ft(t))>=0}function Ot(t){return((mt(t)?t.ownerDocument:t.document)||window.document).documentElement}function It(t){return"html"===ft(t)?t:t.assignedSlot||t.parentNode||(vt(t)?t.host:null)||Ot(t)}function Bt(t){return _t(t)&&"fixed"!==Tt(t).position?t.offsetParent:null}function Mt(t){for(var e=gt(t),s=Bt(t);s&&Dt(s)&&"static"===Tt(s).position;)s=Bt(s);return s&&("html"===ft(s)||"body"===ft(s)&&"static"===Tt(s).position)?e:s||function(t){var e=/firefox/i.test(Et());if(/Trident/i.test(Et())&&_t(t)&&"fixed"===Tt(t).position)return null;var s=It(t);for(vt(s)&&(s=s.host);_t(s)&&["html","body"].indexOf(ft(s))<0;){var i=Tt(s);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return s;s=s.parentNode}return null}(t)||e}function Pt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Lt(t,e,s){return yt(t,At(e,s))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Nt(t,e){return e.reduce((function(e,s){return e[s]=t,e}),{})}var jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,s=t.state,i=t.name,n=t.options,r=s.elements.arrow,o=s.modifiersData.popperOffsets,a=kt(s.placement),l=Pt(a),u=[Y,U].indexOf(a)>=0?"height":"width";if(r&&o){var h=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Nt(t,X))}(n.padding,s),c=St(r),d="y"===l?q:Y,p="y"===l?W:U,f=s.rects.reference[u]+s.rects.reference[l]-o[l]-s.rects.popper[u],g=o[l]-s.rects.reference[l],m=Mt(r),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,v=f/2-g/2,b=h[d],k=_-c[u]-h[p],y=_/2-c[u]/2+v,A=Lt(b,y,k),w=l;s.modifiersData[i]=((e={})[w]=A,e.centerOffset=A-y,e)}},effect:function(t){var e=t.state,s=t.options.element,i=void 0===s?"[data-popper-arrow]":s;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Ft(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function $t(t){return t.split("-")[1]}var Rt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zt(t){var e,s=t.popper,i=t.popperRect,n=t.placement,r=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,u=t.adaptive,h=t.roundOffsets,c=t.isFixed,d=o.x,p=void 0===d?0:d,f=o.y,g=void 0===f?0:f,m="function"==typeof h?h({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var _=o.hasOwnProperty("x"),v=o.hasOwnProperty("y"),b=Y,k=q,y=window;if(u){var A=Mt(s),w="clientHeight",E="clientWidth";if(A===gt(s)&&"static"!==Tt(A=Ot(s)).position&&"absolute"===a&&(w="scrollHeight",E="scrollWidth"),n===q||(n===Y||n===U)&&r===Z)k=W,g-=(c&&A===y&&y.visualViewport?y.visualViewport.height:A[w])-i.height,g*=l?1:-1;if(n===Y||(n===q||n===W)&&r===Z)b=U,p-=(c&&A===y&&y.visualViewport?y.visualViewport.width:A[E])-i.width,p*=l?1:-1}var C,x=Object.assign({position:a},u&&Rt),S=!0===h?function(t,e){var s=t.x,i=t.y,n=e.devicePixelRatio||1;return{x:wt(s*n)/n||0,y:wt(i*n)/n||0}}({x:p,y:g},gt(s)):{x:p,y:g};return p=S.x,g=S.y,l?Object.assign({},x,((C={})[k]=v?"0":"",C[b]=_?"0":"",C.transform=(y.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",C)):Object.assign({},x,((e={})[k]=v?g+"px":"",e[b]=_?p+"px":"",e.transform="",e))}var Ht={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,s=t.options,i=s.gpuAcceleration,n=void 0===i||i,r=s.adaptive,o=void 0===r||r,a=s.roundOffsets,l=void 0===a||a,u={placement:kt(e.placement),variation:$t(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:n,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,zt(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,zt(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},qt={passive:!0};var Wt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,s=t.instance,i=t.options,n=i.scroll,r=void 0===n||n,o=i.resize,a=void 0===o||o,l=gt(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&u.forEach((function(t){t.addEventListener("scroll",s.update,qt)})),a&&l.addEventListener("resize",s.update,qt),function(){r&&u.forEach((function(t){t.removeEventListener("scroll",s.update,qt)})),a&&l.removeEventListener("resize",s.update,qt)}},data:{}},Ut={left:"right",right:"left",bottom:"top",top:"bottom"};function Yt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Ut[t]}))}var Kt={start:"end",end:"start"};function Xt(t){return t.replace(/start|end/g,(function(t){return Kt[t]}))}function Qt(t){var e=gt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Zt(t){return xt(Ot(t)).left+Qt(t).scrollLeft}function Gt(t){var e=Tt(t),s=e.overflow,i=e.overflowX,n=e.overflowY;return/auto|scroll|overlay|hidden/.test(s+n+i)}function Jt(t){return["html","body","#document"].indexOf(ft(t))>=0?t.ownerDocument.body:_t(t)&&Gt(t)?t:Jt(It(t))}function te(t,e){var s;void 0===e&&(e=[]);var i=Jt(t),n=i===(null==(s=t.ownerDocument)?void 0:s.body),r=gt(i),o=n?[r].concat(r.visualViewport||[],Gt(i)?i:[]):i,a=e.concat(o);return n?a:a.concat(te(It(o)))}function ee(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function se(t,e,s){return e===J?ee(function(t,e){var s=gt(t),i=Ot(t),n=s.visualViewport,r=i.clientWidth,o=i.clientHeight,a=0,l=0;if(n){r=n.width,o=n.height;var u=Ct();(u||!u&&"fixed"===e)&&(a=n.offsetLeft,l=n.offsetTop)}return{width:r,height:o,x:a+Zt(t),y:l}}(t,s)):mt(e)?function(t,e){var s=xt(t,!1,"fixed"===e);return s.top=s.top+t.clientTop,s.left=s.left+t.clientLeft,s.bottom=s.top+t.clientHeight,s.right=s.left+t.clientWidth,s.width=t.clientWidth,s.height=t.clientHeight,s.x=s.left,s.y=s.top,s}(e,s):ee(function(t){var e,s=Ot(t),i=Qt(t),n=null==(e=t.ownerDocument)?void 0:e.body,r=yt(s.scrollWidth,s.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),o=yt(s.scrollHeight,s.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),a=-i.scrollLeft+Zt(t),l=-i.scrollTop;return"rtl"===Tt(n||s).direction&&(a+=yt(s.clientWidth,n?n.clientWidth:0)-r),{width:r,height:o,x:a,y:l}}(Ot(t)))}function ie(t,e,s,i){var n="clippingParents"===e?function(t){var e=te(It(t)),s=["absolute","fixed"].indexOf(Tt(t).position)>=0&&_t(t)?Mt(t):t;return mt(s)?e.filter((function(t){return mt(t)&&Ft(t,s)&&"body"!==ft(t)})):[]}(t):[].concat(e),r=[].concat(n,[s]),o=r[0],a=r.reduce((function(e,s){var n=se(t,s,i);return e.top=yt(n.top,e.top),e.right=At(n.right,e.right),e.bottom=At(n.bottom,e.bottom),e.left=yt(n.left,e.left),e}),se(t,o,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ne(t){var e,s=t.reference,i=t.element,n=t.placement,r=n?kt(n):null,o=n?$t(n):null,a=s.x+s.width/2-i.width/2,l=s.y+s.height/2-i.height/2;switch(r){case q:e={x:a,y:s.y-i.height};break;case W:e={x:a,y:s.y+s.height};break;case U:e={x:s.x+s.width,y:l};break;case Y:e={x:s.x-i.width,y:l};break;default:e={x:s.x,y:s.y}}var u=r?Pt(r):null;if(null!=u){var h="y"===u?"height":"width";switch(o){case Q:e[u]=e[u]-(s[h]/2-i[h]/2);break;case Z:e[u]=e[u]+(s[h]/2-i[h]/2)}}return e}function re(t,e){void 0===e&&(e={});var s=e,i=s.placement,n=void 0===i?t.placement:i,r=s.strategy,o=void 0===r?t.strategy:r,a=s.boundary,l=void 0===a?G:a,u=s.rootBoundary,h=void 0===u?J:u,c=s.elementContext,d=void 0===c?tt:c,p=s.altBoundary,f=void 0!==p&&p,g=s.padding,m=void 0===g?0:g,_=Vt("number"!=typeof m?m:Nt(m,X)),v=d===tt?et:tt,b=t.rects.popper,k=t.elements[f?v:d],y=ie(mt(k)?k:k.contextElement||Ot(t.elements.popper),l,h,o),A=xt(t.elements.reference),w=ne({reference:A,element:b,strategy:"absolute",placement:n}),E=ee(Object.assign({},b,w)),C=d===tt?E:A,x={top:y.top-C.top+_.top,bottom:C.bottom-y.bottom+_.bottom,left:y.left-C.left+_.left,right:C.right-y.right+_.right},S=t.modifiersData.offset;if(d===tt&&S){var F=S[n];Object.keys(x).forEach((function(t){var e=[U,W].indexOf(t)>=0?1:-1,s=[q,W].indexOf(t)>=0?"y":"x";x[t]+=F[s]*e}))}return x}function oe(t,e){void 0===e&&(e={});var s=e,i=s.placement,n=s.boundary,r=s.rootBoundary,o=s.padding,a=s.flipVariations,l=s.allowedAutoPlacements,u=void 0===l?it:l,h=$t(i),c=h?a?st:st.filter((function(t){return $t(t)===h})):X,d=c.filter((function(t){return u.indexOf(t)>=0}));0===d.length&&(d=c);var p=d.reduce((function(e,s){return e[s]=re(t,{placement:s,boundary:n,rootBoundary:r,padding:o})[kt(s)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ae={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,s=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var n=s.mainAxis,r=void 0===n||n,o=s.altAxis,a=void 0===o||o,l=s.fallbackPlacements,u=s.padding,h=s.boundary,c=s.rootBoundary,d=s.altBoundary,p=s.flipVariations,f=void 0===p||p,g=s.allowedAutoPlacements,m=e.options.placement,_=kt(m),v=l||(_===m||!f?[Yt(m)]:function(t){if(kt(t)===K)return[];var e=Yt(t);return[Xt(t),e,Xt(e)]}(m)),b=[m].concat(v).reduce((function(t,s){return t.concat(kt(s)===K?oe(e,{placement:s,boundary:h,rootBoundary:c,padding:u,flipVariations:f,allowedAutoPlacements:g}):s)}),[]),k=e.rects.reference,y=e.rects.popper,A=new Map,w=!0,E=b[0],C=0;C=0,D=T?"width":"height",O=re(e,{placement:x,boundary:h,rootBoundary:c,altBoundary:d,padding:u}),I=T?F?U:Y:F?W:q;k[D]>y[D]&&(I=Yt(I));var B=Yt(I),M=[];if(r&&M.push(O[S]<=0),a&&M.push(O[I]<=0,O[B]<=0),M.every((function(t){return t}))){E=x,w=!1;break}A.set(x,M)}if(w)for(var P=function(t){var e=b.find((function(e){var s=A.get(e);if(s)return s.slice(0,t).every((function(t){return t}))}));if(e)return E=e,"break"},L=f?3:1;L>0;L--){if("break"===P(L))break}e.placement!==E&&(e.modifiersData[i]._skip=!0,e.placement=E,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function le(t,e,s){return void 0===s&&(s={x:0,y:0}),{top:t.top-e.height-s.y,right:t.right-e.width+s.x,bottom:t.bottom-e.height+s.y,left:t.left-e.width-s.x}}function ue(t){return[q,U,W,Y].some((function(e){return t[e]>=0}))}var he={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,s=t.name,i=e.rects.reference,n=e.rects.popper,r=e.modifiersData.preventOverflow,o=re(e,{elementContext:"reference"}),a=re(e,{altBoundary:!0}),l=le(o,i),u=le(a,n,r),h=ue(l),c=ue(u);e.modifiersData[s]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:h,hasPopperEscaped:c},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":c})}};var ce={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,s=t.options,i=t.name,n=s.offset,r=void 0===n?[0,0]:n,o=it.reduce((function(t,s){return t[s]=function(t,e,s){var i=kt(t),n=[Y,q].indexOf(i)>=0?-1:1,r="function"==typeof s?s(Object.assign({},e,{placement:t})):s,o=r[0],a=r[1];return o=o||0,a=(a||0)*n,[Y,U].indexOf(i)>=0?{x:a,y:o}:{x:o,y:a}}(s,e.rects,r),t}),{}),a=o[e.placement],l=a.x,u=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[i]=o}};var de={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,s=t.name;e.modifiersData[s]=ne({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var pe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,s=t.options,i=t.name,n=s.mainAxis,r=void 0===n||n,o=s.altAxis,a=void 0!==o&&o,l=s.boundary,u=s.rootBoundary,h=s.altBoundary,c=s.padding,d=s.tether,p=void 0===d||d,f=s.tetherOffset,g=void 0===f?0:f,m=re(e,{boundary:l,rootBoundary:u,padding:c,altBoundary:h}),_=kt(e.placement),v=$t(e.placement),b=!v,k=Pt(_),y="x"===k?"y":"x",A=e.modifiersData.popperOffsets,w=e.rects.reference,E=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,x="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),S=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,F={x:0,y:0};if(A){if(r){var T,D="y"===k?q:Y,O="y"===k?W:U,I="y"===k?"height":"width",B=A[k],M=B+m[D],P=B-m[O],L=p?-E[I]/2:0,V=v===Q?w[I]:E[I],N=v===Q?-E[I]:-w[I],j=e.elements.arrow,$=p&&j?St(j):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=R[D],H=R[O],K=Lt(0,w[I],$[I]),X=b?w[I]/2-L-K-z-x.mainAxis:V-K-z-x.mainAxis,Z=b?-w[I]/2+L+K+H+x.mainAxis:N+K+H+x.mainAxis,G=e.elements.arrow&&Mt(e.elements.arrow),J=G?"y"===k?G.clientTop||0:G.clientLeft||0:0,tt=null!=(T=null==S?void 0:S[k])?T:0,et=B+Z-tt,st=Lt(p?At(M,B+X-tt-J):M,B,p?yt(P,et):P);A[k]=st,F[k]=st-B}if(a){var it,nt="x"===k?q:Y,rt="x"===k?W:U,ot=A[y],at="y"===y?"height":"width",lt=ot+m[nt],ut=ot-m[rt],ht=-1!==[q,Y].indexOf(_),ct=null!=(it=null==S?void 0:S[y])?it:0,dt=ht?lt:ot-w[at]-E[at]-ct+x.altAxis,pt=ht?ot+w[at]+E[at]-ct-x.altAxis:ut,ft=p&&ht?function(t,e,s){var i=Lt(t,e,s);return i>s?s:i}(dt,ot,pt):Lt(p?dt:lt,ot,p?pt:ut);A[y]=ft,F[y]=ft-ot}e.modifiersData[i]=F}},requiresIfExists:["offset"]};function fe(t,e,s){void 0===s&&(s=!1);var i,n,r=_t(e),o=_t(e)&&function(t){var e=t.getBoundingClientRect(),s=wt(e.width)/t.offsetWidth||1,i=wt(e.height)/t.offsetHeight||1;return 1!==s||1!==i}(e),a=Ot(e),l=xt(t,o,s),u={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(r||!r&&!s)&&(("body"!==ft(e)||Gt(a))&&(u=(i=e)!==gt(i)&&_t(i)?{scrollLeft:(n=i).scrollLeft,scrollTop:n.scrollTop}:Qt(i)),_t(e)?((h=xt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Zt(a))),{x:l.left+u.scrollLeft-h.x,y:l.top+u.scrollTop-h.y,width:l.width,height:l.height}}function ge(t){var e=new Map,s=new Set,i=[];function n(t){s.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!s.has(t)){var i=e.get(t);i&&n(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){s.has(t.name)||n(t)})),i}var me={placement:"bottom",modifiers:[],strategy:"absolute"};function _e(){for(var t=arguments.length,e=new Array(t),s=0;swe.has(t)&&we.get(t).get(e)||null,remove(t,e){if(!we.has(t))return;const s=we.get(t);s.delete(e),0===s.size&&we.delete(t)}},Ce="transitionend",xe=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Se=t=>{t.dispatchEvent(new Event(Ce))},Fe=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Te=t=>Fe(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(xe(t)):null,De=t=>{if(!Fe(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),s=t.closest("details:not([open])");if(!s)return e;if(s!==t){const e=t.closest("summary");if(e&&e.parentNode!==s)return!1;if(null===e)return!1}return e},Oe=t=>!t||t.nodeType!==Node.ELEMENT_NODE||(!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled"))),Ie=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?Ie(t.parentNode):null},Be=()=>{},Me=t=>{t.offsetHeight},Pe=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Le=[],Ve=()=>"rtl"===document.documentElement.dir,Ne=t=>{var e;e=()=>{const e=Pe();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?(Le.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Le)t()})),Le.push(e)):e()},je=(t,e=[],s=t)=>"function"==typeof t?t(...e):s,$e=(t,e,s=!0)=>{if(!s)return void je(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const r=({target:s})=>{s===e&&(n=!0,e.removeEventListener(Ce,r),je(t))};e.addEventListener(Ce,r),setTimeout((()=>{n||Se(e)}),i)},Re=(t,e,s,i)=>{const n=t.length;let r=t.indexOf(e);return-1===r?!s&&i?t[n-1]:t[0]:(r+=s?1:-1,i&&(r=(r+n)%n),t[Math.max(0,Math.min(r,n-1))])},ze=/[^.]*(?=\..*)\.|.*/,He=/\..*/,qe=/::\d+$/,We={};let Ue=1;const Ye={mouseenter:"mouseover",mouseleave:"mouseout"},Ke=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 Xe(t,e){return e&&`${e}::${Ue++}`||t.uidEvent||Ue++}function Qe(t){const e=Xe(t);return t.uidEvent=e,We[e]=We[e]||{},We[e]}function Ze(t,e,s=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===s))}function Ge(t,e,s){const i="string"==typeof e,n=i?s:e||s;let r=ss(t);return Ke.has(r)||(r=t),[i,n,r]}function Je(t,e,s,i,n){if("string"!=typeof e||!t)return;let[r,o,a]=Ge(e,s,i);if(e in Ye){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};o=t(o)}const l=Qe(t),u=l[a]||(l[a]={}),h=Ze(u,o,r?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const c=Xe(o,e.replace(ze,"")),d=r?function(t,e,s){return function i(n){const r=t.querySelectorAll(e);for(let{target:o}=n;o&&o!==this;o=o.parentNode)for(const a of r)if(a===o)return ns(n,{delegateTarget:o}),i.oneOff&&is.off(t,n.type,e,s),s.apply(o,[n])}}(t,s,o):function(t,e){return function s(i){return ns(i,{delegateTarget:t}),s.oneOff&&is.off(t,i.type,e),e.apply(t,[i])}}(t,o);d.delegationSelector=r?s:null,d.callable=o,d.oneOff=n,d.uidEvent=c,u[c]=d,t.addEventListener(a,d,r)}function ts(t,e,s,i,n){const r=Ze(e[s],i,n);r&&(t.removeEventListener(s,r,Boolean(n)),delete e[s][r.uidEvent])}function es(t,e,s,i){const n=e[s]||{};for(const[r,o]of Object.entries(n))r.includes(i)&&ts(t,e,s,o.callable,o.delegationSelector)}function ss(t){return t=t.replace(He,""),Ye[t]||t}const is={on(t,e,s,i){Je(t,e,s,i,!1)},one(t,e,s,i){Je(t,e,s,i,!0)},off(t,e,s,i){if("string"!=typeof e||!t)return;const[n,r,o]=Ge(e,s,i),a=o!==e,l=Qe(t),u=l[o]||{},h=e.startsWith(".");if(void 0===r){if(h)for(const s of Object.keys(l))es(t,l,s,e.slice(1));for(const[s,i]of Object.entries(u)){const n=s.replace(qe,"");a&&!e.includes(n)||ts(t,l,o,i.callable,i.delegationSelector)}}else{if(!Object.keys(u).length)return;ts(t,l,o,r,n?s:null)}},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=Pe();let n=null,r=!0,o=!0,a=!1;e!==ss(e)&&i&&(n=i.Event(e,s),i(t).trigger(n),r=!n.isPropagationStopped(),o=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=ns(new Event(e,{bubbles:r,cancelable:!0}),s);return a&&l.preventDefault(),o&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function ns(t,e={}){for(const[s,i]of Object.entries(e))try{t[s]=i}catch(e){Object.defineProperty(t,s,{configurable:!0,get:()=>i})}return t}function rs(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 os(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const as={setDataAttribute(t,e,s){t.setAttribute(`data-bs-${os(e)}`,s)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${os(e)}`)},getDataAttributes(t){if(!t)return{};const e={},s=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of s){let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=rs(t.dataset[i])}return e},getDataAttribute:(t,e)=>rs(t.getAttribute(`data-bs-${os(e)}`))};class ls{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 s=Fe(e)?as.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof s?s:{},...Fe(e)?as.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const e=t[i],r=Fe(e)?"element":null==(s=e)?`${s}`:Object.prototype.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)}var s}}class us extends ls{constructor(t,e){super(),(t=Te(t))&&(this._element=t,this._config=this._getConfig(e),Ee.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ee.remove(this._element,this.constructor.DATA_KEY),is.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,s=!0){$e(t,e,s)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Ee.get(Te(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.0-alpha2"}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 hs=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),e=s&&"#"!==s?s.trim():null}return xe(e)},cs={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 s=[];let i=t.parentNode.closest(e);for(;i;)s.push(i),i=i.parentNode.closest(e);return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.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=>!Oe(t)&&De(t)))},getSelectorFromElement(t){const e=hs(t);return e&&cs.findOne(e)?e:null},getElementFromSelector(t){const e=hs(t);return e?cs.findOne(e):null},getMultipleElementsFromSelector(t){const e=hs(t);return e?cs.find(e):[]}},ds=(t,e="hide")=>{const s=`click.dismiss${t.EVENT_KEY}`,i=t.NAME;is.on(document,s,`[data-bs-dismiss="${i}"]`,(function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),Oe(this))return;const n=cs.getElementFromSelector(this)||this.closest(`.${i}`);t.getOrCreateInstance(n)[e]()}))},ps=".bs.alert",fs=`close${ps}`,gs=`closed${ps}`;class ms extends us{static get NAME(){return"alert"}close(){if(is.trigger(this._element,fs).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(),is.trigger(this._element,gs),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=ms.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)}}))}}ds(ms,"close"),Ne(ms);const _s='[data-bs-toggle="button"]';class vs extends us{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=vs.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}is.on(document,"click.bs.button.data-api",_s,(t=>{t.preventDefault();const e=t.target.closest(_s);vs.getOrCreateInstance(e).toggle()})),Ne(vs);const bs=".bs.swipe",ks=`touchstart${bs}`,ys=`touchmove${bs}`,As=`touchend${bs}`,ws=`pointerdown${bs}`,Es=`pointerup${bs}`,Cs={endCallback:null,leftCallback:null,rightCallback:null},xs={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Ss extends ls{constructor(t,e){super(),this._element=t,t&&Ss.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Cs}static get DefaultType(){return xs}static get NAME(){return"swipe"}dispose(){is.off(this._element,bs)}_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(),je(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&&je(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(is.on(this._element,ws,(t=>this._start(t))),is.on(this._element,Es,(t=>this._end(t))),this._element.classList.add("pointer-event")):(is.on(this._element,ks,(t=>this._start(t))),is.on(this._element,ys,(t=>this._move(t))),is.on(this._element,As,(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 Fs=".bs.carousel",Ts=".data-api",Ds="next",Os="prev",Is="left",Bs="right",Ms=`slide${Fs}`,Ps=`slid${Fs}`,Ls=`keydown${Fs}`,Vs=`mouseenter${Fs}`,Ns=`mouseleave${Fs}`,js=`dragstart${Fs}`,$s=`load${Fs}${Ts}`,Rs=`click${Fs}${Ts}`,zs="carousel",Hs="active",qs=".active",Ws=".carousel-item",Us=qs+Ws,Ys={ArrowLeft:Bs,ArrowRight:Is},Ks={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Xs={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Qs extends us{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=cs.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===zs&&this.cycle()}static get Default(){return Ks}static get DefaultType(){return Xs}static get NAME(){return"carousel"}next(){this._slide(Ds)}nextWhenVisible(){!document.hidden&&De(this._element)&&this.next()}prev(){this._slide(Os)}pause(){this._isSliding&&Se(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?is.one(this._element,Ps,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void is.one(this._element,Ps,(()=>this.to(t)));const s=this._getItemIndex(this._getActive());if(s===t)return;const i=t>s?Ds:Os;this._slide(i,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&is.on(this._element,Ls,(t=>this._keydown(t))),"hover"===this._config.pause&&(is.on(this._element,Vs,(()=>this.pause())),is.on(this._element,Ns,(()=>this._maybeEnableCycle()))),this._config.touch&&Ss.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of cs.find(".carousel-item img",this._element))is.on(t,js,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Is)),rightCallback:()=>this._slide(this._directionToOrder(Bs)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Ss(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Ys[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=cs.findOne(qs,this._indicatorsElement);e.classList.remove(Hs),e.removeAttribute("aria-current");const s=cs.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);s&&(s.classList.add(Hs),s.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 s=this._getActive(),i=t===Ds,n=e||Re(this._getItems(),s,i,this._config.wrap);if(n===s)return;const r=this._getItemIndex(n),o=e=>is.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(s),to:r});if(o(Ms).defaultPrevented)return;if(!s||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(r),this._activeElement=n;const l=i?"carousel-item-start":"carousel-item-end",u=i?"carousel-item-next":"carousel-item-prev";n.classList.add(u),Me(n),s.classList.add(l),n.classList.add(l);this._queueCallback((()=>{n.classList.remove(l,u),n.classList.add(Hs),s.classList.remove(Hs,u,l),this._isSliding=!1,o(Ps)}),s,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return cs.findOne(Us,this._element)}_getItems(){return cs.find(Ws,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Ve()?t===Is?Os:Ds:t===Is?Ds:Os}_orderToDirection(t){return Ve()?t===Os?Is:Bs:t===Os?Bs:Is}static jQueryInterface(t){return this.each((function(){const e=Qs.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)}))}}is.on(document,Rs,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=cs.getElementFromSelector(this);if(!e||!e.classList.contains(zs))return;t.preventDefault();const s=Qs.getOrCreateInstance(e),i=this.getAttribute("data-bs-slide-to");return i?(s.to(i),void s._maybeEnableCycle()):"next"===as.getDataAttribute(this,"slide")?(s.next(),void s._maybeEnableCycle()):(s.prev(),void s._maybeEnableCycle())})),is.on(window,$s,(()=>{const t=cs.find('[data-bs-ride="carousel"]');for(const e of t)Qs.getOrCreateInstance(e)})),Ne(Qs);const Zs=".bs.collapse",Gs=`show${Zs}`,Js=`shown${Zs}`,ti=`hide${Zs}`,ei=`hidden${Zs}`,si=`click${Zs}.data-api`,ii="show",ni="collapse",ri="collapsing",oi=`:scope .${ni} .${ni}`,ai='[data-bs-toggle="collapse"]',li={parent:null,toggle:!0},ui={parent:"(null|element)",toggle:"boolean"};class hi extends us{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const s=cs.find(ai);for(const t of s){const e=cs.getSelectorFromElement(t),s=cs.find(e).filter((t=>t===this._element));null!==e&&s.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 li}static get DefaultType(){return ui}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=>hi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(is.trigger(this._element,Gs).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ni),this._element.classList.add(ri),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ri),this._element.classList.add(ni,ii),this._element.style[e]="",is.trigger(this._element,Js)}),this._element,!0),this._element.style[e]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(is.trigger(this._element,ti).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Me(this._element),this._element.classList.add(ri),this._element.classList.remove(ni,ii);for(const t of this._triggerArray){const e=cs.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(ri),this._element.classList.add(ni),is.trigger(this._element,ei)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ii)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Te(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(ai);for(const e of t){const t=cs.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=cs.find(oi,this._config.parent);return cs.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const s of t)s.classList.toggle("collapsed",!e),s.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const s=hi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t]()}}))}}is.on(document,si,ai,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of cs.getMultipleElementsFromSelector(this))hi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Ne(hi);const ci="dropdown",di=".bs.dropdown",pi=".data-api",fi="ArrowUp",gi="ArrowDown",mi=`hide${di}`,_i=`hidden${di}`,vi=`show${di}`,bi=`shown${di}`,ki=`click${di}${pi}`,yi=`keydown${di}${pi}`,Ai=`keyup${di}${pi}`,wi="show",Ei='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ci=`${Ei}.${wi}`,xi=".dropdown-menu",Si=Ve()?"top-end":"top-start",Fi=Ve()?"top-start":"top-end",Ti=Ve()?"bottom-end":"bottom-start",Di=Ve()?"bottom-start":"bottom-end",Oi=Ve()?"left-start":"right-start",Ii=Ve()?"right-start":"left-start",Bi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Mi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Pi extends us{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=cs.next(this._element,xi)[0]||cs.prev(this._element,xi)[0]||cs.findOne(xi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Bi}static get DefaultType(){return Mi}static get NAME(){return ci}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Oe(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!is.trigger(this._element,vi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))is.on(t,"mouseover",Be);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(wi),this._element.classList.add(wi),is.trigger(this._element,bi,t)}}hide(){if(Oe(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(!is.trigger(this._element,mi,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.off(t,"mouseover",Be);this._popper&&this._popper.destroy(),this._menu.classList.remove(wi),this._element.classList.remove(wi),this._element.setAttribute("aria-expanded","false"),as.removeDataAttribute(this._menu,"popper"),is.trigger(this._element,_i,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Fe(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${ci.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ae)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Fe(this._config.reference)?t=Te(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=ye(t,this._menu,e)}_isShown(){return this._menu.classList.contains(wi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Oi;if(t.classList.contains("dropstart"))return Ii;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?Fi:Si:e?Di:Ti}_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)&&(as.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...je(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const s=cs.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>De(t)));s.length&&Re(s,e,t===gi,!s.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Pi.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=cs.find(Ci);for(const s of e){const e=Pi.getInstance(s);if(!e||!1===e._config.autoClose)continue;const i=t.composedPath(),n=i.includes(e._menu);if(i.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)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 r={relatedTarget:e._element};"click"===t.type&&(r.clickEvent=t),e._completeHide(r)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),s="Escape"===t.key,i=[fi,gi].includes(t.key);if(!i&&!s)return;if(e&&!s)return;t.preventDefault();const n=this.matches(Ei)?this:cs.prev(this,Ei)[0]||cs.next(this,Ei)[0]||cs.findOne(Ei,t.delegateTarget.parentNode),r=Pi.getOrCreateInstance(n);if(i)return t.stopPropagation(),r.show(),void r._selectMenuItem(t);r._isShown()&&(t.stopPropagation(),r.hide(),n.focus())}}is.on(document,yi,Ei,Pi.dataApiKeydownHandler),is.on(document,yi,xi,Pi.dataApiKeydownHandler),is.on(document,ki,Pi.clearMenus),is.on(document,Ai,Pi.clearMenus),is.on(document,ki,Ei,(function(t){t.preventDefault(),Pi.getOrCreateInstance(this).toggle()})),Ne(Pi);const Li="backdrop",Vi="show",Ni=`mousedown.bs.${Li}`,ji={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},$i={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ri extends ls{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ji}static get DefaultType(){return $i}static get NAME(){return Li}show(t){if(!this._config.isVisible)return void je(t);this._append();const e=this._getElement();this._config.isAnimated&&Me(e),e.classList.add(Vi),this._emulateAnimation((()=>{je(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Vi),this._emulateAnimation((()=>{this.dispose(),je(t)}))):je(t)}dispose(){this._isAppended&&(is.off(this._element,Ni),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=Te(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),is.on(t,Ni,(()=>{je(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){$e(t,this._getElement(),this._config.isAnimated)}}const zi=".bs.focustrap",Hi=`focusin${zi}`,qi=`keydown.tab${zi}`,Wi="backward",Ui={autofocus:!0,trapElement:null},Yi={autofocus:"boolean",trapElement:"element"};class Ki extends ls{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ui}static get DefaultType(){return Yi}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),is.off(document,zi),is.on(document,Hi,(t=>this._handleFocusin(t))),is.on(document,qi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,is.off(document,zi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const s=cs.focusableChildren(e);0===s.length?e.focus():this._lastTabNavDirection===Wi?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Wi:"forward")}}const Xi=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Qi=".sticky-top",Zi="padding-right",Gi="margin-right";class Ji{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,Zi,(e=>e+t)),this._setElementAttributes(Xi,Zi,(e=>e+t)),this._setElementAttributes(Qi,Gi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Zi),this._resetElementAttributes(Xi,Zi),this._resetElementAttributes(Qi,Gi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const s=t.style.getPropertyValue(e);s&&as.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const s=as.getDataAttribute(t,e);null!==s?(as.removeDataAttribute(t,e),t.style.setProperty(e,s)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Fe(t))e(t);else for(const s of cs.find(t,this._element))e(s)}}const tn=".bs.modal",en=`hide${tn}`,sn=`hidePrevented${tn}`,nn=`hidden${tn}`,rn=`show${tn}`,on=`shown${tn}`,an=`resize${tn}`,ln=`click.dismiss${tn}`,un=`mousedown.dismiss${tn}`,hn=`keydown.dismiss${tn}`,cn=`click${tn}.data-api`,dn="modal-open",pn="show",fn="modal-static",gn={backdrop:!0,focus:!0,keyboard:!0},mn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class _n extends us{constructor(t,e){super(t,e),this._dialog=cs.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ji,this._addEventListeners()}static get Default(){return gn}static get DefaultType(){return mn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||this._isTransitioning)return;is.trigger(this._element,rn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(dn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;is.trigger(this._element,en).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(pn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated()))}dispose(){is.off(window,tn),is.off(this._dialog,tn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ri({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ki({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=cs.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Me(this._element),this._element.classList.add(pn);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,is.trigger(this._element,on,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){is.on(this._element,hn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),is.on(window,an,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),is.on(this._element,un,(t=>{is.one(this._element,ln,(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(dn),this._resetAdjustments(),this._scrollBar.reset(),is.trigger(this._element,nn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(is.trigger(this._element,sn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(fn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(fn),this._queueCallback((()=>{this._element.classList.remove(fn),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(),s=e>0;if(s&&!t){const t=Ve()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!s&&t){const t=Ve()?"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 s=_n.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}is.on(document,cn,'[data-bs-toggle="modal"]',(function(t){const e=cs.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),is.one(e,rn,(t=>{t.defaultPrevented||is.one(e,nn,(()=>{De(this)&&this.focus()}))}));const s=cs.findOne(".modal.show");s&&_n.getInstance(s).hide();_n.getOrCreateInstance(e).toggle(this)})),ds(_n),Ne(_n);const vn=".bs.offcanvas",bn=".data-api",kn=`load${vn}${bn}`,yn="show",An="showing",wn="hiding",En=".offcanvas.show",Cn=`show${vn}`,xn=`shown${vn}`,Sn=`hide${vn}`,Fn=`hidePrevented${vn}`,Tn=`hidden${vn}`,Dn=`resize${vn}`,On=`click${vn}${bn}`,In=`keydown.dismiss${vn}`,Bn={backdrop:!0,keyboard:!0,scroll:!1},Mn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Pn extends us{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bn}static get DefaultType(){return Mn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown)return;if(is.trigger(this._element,Cn,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ji).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(An);this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(yn),this._element.classList.remove(An),is.trigger(this._element,xn,{relatedTarget:t})}),this._element,!0)}hide(){if(!this._isShown)return;if(is.trigger(this._element,Sn).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(wn),this._backdrop.hide();this._queueCallback((()=>{this._element.classList.remove(yn,wn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ji).reset(),is.trigger(this._element,Tn)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ri({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():is.trigger(this._element,Fn)}:null})}_initializeFocusTrap(){return new Ki({trapElement:this._element})}_addEventListeners(){is.on(this._element,In,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():is.trigger(this._element,Fn))}))}static jQueryInterface(t){return this.each((function(){const e=Pn.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)}}))}}is.on(document,On,'[data-bs-toggle="offcanvas"]',(function(t){const e=cs.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Oe(this))return;is.one(e,Tn,(()=>{De(this)&&this.focus()}));const s=cs.findOne(En);s&&s!==e&&Pn.getInstance(s).hide();Pn.getOrCreateInstance(e).toggle(this)})),is.on(window,kn,(()=>{for(const t of cs.find(En))Pn.getOrCreateInstance(t).show()})),is.on(window,Dn,(()=>{for(const t of cs.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Pn.getOrCreateInstance(t).hide()})),ds(Pn),Ne(Pn);const Ln=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vn=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Nn=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,jn=(t,e)=>{const s=t.nodeName.toLowerCase();return e.includes(s)?!Ln.has(s)||Boolean(Vn.test(t.nodeValue)||Nn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(s)))},$n={"*":["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:[]};const Rn={allowList:$n,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},zn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Hn={entry:"(string|element|function|null)",selector:"(string|element)"};class qn extends ls{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Rn}static get DefaultType(){return zn}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,s]of Object.entries(this._config.content))this._setContent(t,s,e);const e=t.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s&&e.classList.add(...s.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,s]of Object.entries(t))super._typeCheckConfig({selector:e,entry:s},Hn)}_setContent(t,e,s){const i=cs.findOne(s,t);i&&((e=this._resolvePossibleFunction(e))?Fe(e)?this._putElementInTemplate(Te(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,s){if(!t.length)return t;if(s&&"function"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...i.body.querySelectorAll("*"));for(const t of n){const s=t.nodeName.toLowerCase();if(!Object.keys(e).includes(s)){t.remove();continue}const i=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[s]||[]);for(const e of i)jn(e,n)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return je(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Wn=new Set(["sanitize","allowList","sanitizeFn"]),Un="fade",Yn="show",Kn=".modal",Xn="hide.bs.modal",Qn="hover",Zn="focus",Gn={AUTO:"auto",TOP:"top",RIGHT:Ve()?"left":"right",BOTTOM:"bottom",LEFT:Ve()?"right":"left"},Jn={allowList:$n,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"},tr={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 er extends us{constructor(t,e){if(void 0===Ae)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 Jn}static get DefaultType(){return tr}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),is.off(this._element.closest(Kn),Xn,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=is.trigger(this._element,this.constructor.eventName("show")),e=(Ie(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute("aria-describedby",s.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),is.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(s),s.classList.add(Yn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.on(t,"mouseover",Be);this._queueCallback((()=>{is.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(is.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Yn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.off(t,"mouseover",Be);this._activeTrigger.click=!1,this._activeTrigger[Zn]=!1,this._activeTrigger[Qn]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),is.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(Un,Yn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",s),this._isAnimated()&&e.classList.add(Un),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new qn({...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(Un)}_isShown(){return this.tip&&this.tip.classList.contains(Yn)}_createPopper(t){const e=je(this._config.placement,[this,t,this._element]),s=Gn[e.toUpperCase()];return ye(this._element,t,this._getPopperConfig(s))}_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 je(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,...je(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)is.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Qn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),s=e===Qn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");is.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Zn:Qn]=!0,e._enter()})),is.on(this._element,s,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Zn:Qn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},is.on(this._element.closest(Kn),Xn,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=as.getDataAttributes(this._element);for(const t of Object.keys(e))Wn.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:Te(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,s]of Object.entries(this._config))this.constructor.Default[e]!==s&&(t[e]=s);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=er.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ne(er);const sr={...er.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ir={...er.DefaultType,content:"(null|string|element|function)"};class nr extends er{static get Default(){return sr}static get DefaultType(){return ir}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=nr.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ne(nr);const rr=".bs.scrollspy",or=`activate${rr}`,ar=`click${rr}`,lr=`load${rr}.data-api`,ur="active",hr="[href]",cr=".nav-link",dr=`${cr}, .nav-item > ${cr}, .list-group-item`,pr={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},fr={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class gr extends us{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 pr}static get DefaultType(){return fr}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=Te(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&&(is.off(this._config.target,ar),is.on(this._config.target,ar,hr,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const s=this._rootElement||window,i=e.offsetTop-this._element.offsetTop;if(s.scrollTo)return void s.scrollTo({top:i,behavior:"smooth"});s.scrollTop=i}})))}_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}`),s=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,n=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const r of t){if(!r.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(r));continue}const t=r.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(s(r),!i)return}else n||t||s(r)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=cs.find(hr,this._config.target);for(const e of t){if(!e.hash||Oe(e))continue;const t=cs.findOne(e.hash,this._element);De(t)&&(this._targetLinks.set(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(ur),this._activateParents(t),is.trigger(this._element,or,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))cs.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(ur);else for(const e of cs.parents(t,".nav, .list-group"))for(const t of cs.prev(e,dr))t.classList.add(ur)}_clearActiveClass(t){t.classList.remove(ur);const e=cs.find(`${hr}.${ur}`,t);for(const t of e)t.classList.remove(ur)}static jQueryInterface(t){return this.each((function(){const e=gr.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]()}}))}}is.on(window,lr,(()=>{for(const t of cs.find('[data-bs-spy="scroll"]'))gr.getOrCreateInstance(t)})),Ne(gr);const mr=".bs.tab",_r=`hide${mr}`,vr=`hidden${mr}`,br=`show${mr}`,kr=`shown${mr}`,yr=`click${mr}`,Ar=`keydown${mr}`,wr=`load${mr}`,Er="ArrowLeft",Cr="ArrowRight",xr="ArrowUp",Sr="ArrowDown",Fr="active",Tr="fade",Dr="show",Or=":not(.dropdown-toggle)",Ir='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Br=`${`.nav-link${Or}, .list-group-item${Or}, [role="tab"]${Or}`}, ${Ir}`,Mr=`.${Fr}[data-bs-toggle="tab"], .${Fr}[data-bs-toggle="pill"], .${Fr}[data-bs-toggle="list"]`;class Pr extends us{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),is.on(this._element,Ar,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),s=e?is.trigger(e,_r,{relatedTarget:t}):null;is.trigger(t,br,{relatedTarget:e}).defaultPrevented||s&&s.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(Fr),this._activate(cs.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),is.trigger(t,kr,{relatedTarget:e})):t.classList.add(Dr)}),t,t.classList.contains(Tr))}_deactivate(t,e){if(!t)return;t.classList.remove(Fr),t.blur(),this._deactivate(cs.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),is.trigger(t,vr,{relatedTarget:e})):t.classList.remove(Dr)}),t,t.classList.contains(Tr))}_keydown(t){if(![Er,Cr,xr,Sr].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[Cr,Sr].includes(t.key),s=Re(this._getChildren().filter((t=>!Oe(t))),t.target,e,!0);s&&(s.focus({preventScroll:!0}),Pr.getOrCreateInstance(s).show())}_getChildren(){return cs.find(Br,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),s=this._getOuterElement(t);t.setAttribute("aria-selected",e),s!==t&&this._setAttributeIfNotExists(s,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=cs.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const s=this._getOuterElement(t);if(!s.classList.contains("dropdown"))return;const i=(t,i)=>{const n=cs.findOne(t,s);n&&n.classList.toggle(i,e)};i(".dropdown-toggle",Fr),i(".dropdown-menu",Dr),s.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,s){t.hasAttribute(e)||t.setAttribute(e,s)}_elemIsActive(t){return t.classList.contains(Fr)}_getInnerElement(t){return t.matches(Br)?t:cs.findOne(Br,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Pr.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}is.on(document,yr,Ir,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Oe(this)||Pr.getOrCreateInstance(this).show()})),is.on(window,wr,(()=>{for(const t of cs.find(Mr))Pr.getOrCreateInstance(t)})),Ne(Pr);const Lr=".bs.toast",Vr=`mouseover${Lr}`,Nr=`mouseout${Lr}`,jr=`focusin${Lr}`,$r=`focusout${Lr}`,Rr=`hide${Lr}`,zr=`hidden${Lr}`,Hr=`show${Lr}`,qr=`shown${Lr}`,Wr="hide",Ur="show",Yr="showing",Kr={animation:"boolean",autohide:"boolean",delay:"number"},Xr={animation:!0,autohide:!0,delay:5e3};class Qr extends us{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Xr}static get DefaultType(){return Kr}static get NAME(){return"toast"}show(){if(is.trigger(this._element,Hr).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Wr),Me(this._element),this._element.classList.add(Ur,Yr),this._queueCallback((()=>{this._element.classList.remove(Yr),is.trigger(this._element,qr),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(is.trigger(this._element,Rr).defaultPrevented)return;this._element.classList.add(Yr),this._queueCallback((()=>{this._element.classList.add(Wr),this._element.classList.remove(Yr,Ur),is.trigger(this._element,zr)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Ur),super.dispose()}isShown(){return this._element.classList.contains(Ur)}_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 s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){is.on(this._element,Vr,(t=>this._onInteraction(t,!0))),is.on(this._element,Nr,(t=>this._onInteraction(t,!1))),is.on(this._element,jr,(t=>this._onInteraction(t,!0))),is.on(this._element,$r,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qr.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ds(Qr),Ne(Qr);var Zr=Object.freeze({__proto__:null,Alert:ms,Button:vs,Carousel:Qs,Collapse:hi,Dropdown:Pi,Modal:_n,Offcanvas:Pn,Popover:nr,ScrollSpy:gr,Tab:Pr,Toast:Qr,Tooltip:er});[].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')).map((function(t){var e={boundary:"viewport"===t.getAttribute("data-bs-boundary")?document.querySelector(".btn"):"clippingParents"};return new Pi(t,e)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){var e,s,i={delay:{show:50,hide:50},html:null!==(e="true"===t.getAttribute("data-bs-html"))&&void 0!==e&&e,placement:null!==(s=t.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new er(t,i)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map((function(t){var e,s,i={delay:{show:50,hide:50},html:null!==(e="true"===t.getAttribute("data-bs-html"))&&void 0!==e&&e,placement:null!==(s=t.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new nr(t,i)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]')).map((function(t){t.addEventListener("click",(function(e){e.stopPropagation(),t.classList.toggle("active")}))}));var Gr;(Gr=window.location.hash)&&[].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]')).filter((function(t){return t.hash===Gr})).map((function(t){new Pr(t).show()})),[].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]')).map((function(t){return new Qr(t)}));var Jr="tblr-",to=function(t,e){var s=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return s?"rgba(".concat(parseInt(s[1],16),", ").concat(parseInt(s[2],16),", ").concat(parseInt(s[3],16),", ").concat(e,")"):null},eo=Object.freeze({__proto__:null,prefix:Jr,hexToRgba:to,getColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=getComputedStyle(document.body).getPropertyValue("--".concat(Jr).concat(t)).trim();return 1!==e?to(s,e):s}});globalThis.bootstrap=Zr,globalThis.tabler=eo})); \ No newline at end of file +const we=new Map,Ee={set(t,e,s){we.has(t)||we.set(t,new Map);const i=we.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>we.has(t)&&we.get(t).get(e)||null,remove(t,e){if(!we.has(t))return;const s=we.get(t);s.delete(e),0===s.size&&we.delete(t)}},Ce="transitionend",xe=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Se=t=>{t.dispatchEvent(new Event(Ce))},Fe=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Te=t=>Fe(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(xe(t)):null,De=t=>{if(!Fe(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),s=t.closest("details:not([open])");if(!s)return e;if(s!==t){const e=t.closest("summary");if(e&&e.parentNode!==s)return!1;if(null===e)return!1}return e},Oe=t=>!t||t.nodeType!==Node.ELEMENT_NODE||(!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled"))),Ie=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?Ie(t.parentNode):null},Be=()=>{},Me=t=>{t.offsetHeight},Pe=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Le=[],Ve=()=>"rtl"===document.documentElement.dir,Ne=t=>{var e;e=()=>{const e=Pe();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?(Le.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Le)t()})),Le.push(e)):e()},je=(t,e=[],s=t)=>"function"==typeof t?t(...e):s,$e=(t,e,s=!0)=>{if(!s)return void je(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const r=({target:s})=>{s===e&&(n=!0,e.removeEventListener(Ce,r),je(t))};e.addEventListener(Ce,r),setTimeout((()=>{n||Se(e)}),i)},Re=(t,e,s,i)=>{const n=t.length;let r=t.indexOf(e);return-1===r?!s&&i?t[n-1]:t[0]:(r+=s?1:-1,i&&(r=(r+n)%n),t[Math.max(0,Math.min(r,n-1))])},ze=/[^.]*(?=\..*)\.|.*/,He=/\..*/,qe=/::\d+$/,We={};let Ue=1;const Ye={mouseenter:"mouseover",mouseleave:"mouseout"},Ke=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 Xe(t,e){return e&&`${e}::${Ue++}`||t.uidEvent||Ue++}function Qe(t){const e=Xe(t);return t.uidEvent=e,We[e]=We[e]||{},We[e]}function Ze(t,e,s=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===s))}function Ge(t,e,s){const i="string"==typeof e,n=i?s:e||s;let r=ss(t);return Ke.has(r)||(r=t),[i,n,r]}function Je(t,e,s,i,n){if("string"!=typeof e||!t)return;let[r,o,a]=Ge(e,s,i);if(e in Ye){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};o=t(o)}const l=Qe(t),u=l[a]||(l[a]={}),h=Ze(u,o,r?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const c=Xe(o,e.replace(ze,"")),d=r?function(t,e,s){return function i(n){const r=t.querySelectorAll(e);for(let{target:o}=n;o&&o!==this;o=o.parentNode)for(const a of r)if(a===o)return ns(n,{delegateTarget:o}),i.oneOff&&is.off(t,n.type,e,s),s.apply(o,[n])}}(t,s,o):function(t,e){return function s(i){return ns(i,{delegateTarget:t}),s.oneOff&&is.off(t,i.type,e),e.apply(t,[i])}}(t,o);d.delegationSelector=r?s:null,d.callable=o,d.oneOff=n,d.uidEvent=c,u[c]=d,t.addEventListener(a,d,r)}function ts(t,e,s,i,n){const r=Ze(e[s],i,n);r&&(t.removeEventListener(s,r,Boolean(n)),delete e[s][r.uidEvent])}function es(t,e,s,i){const n=e[s]||{};for(const[r,o]of Object.entries(n))r.includes(i)&&ts(t,e,s,o.callable,o.delegationSelector)}function ss(t){return t=t.replace(He,""),Ye[t]||t}const is={on(t,e,s,i){Je(t,e,s,i,!1)},one(t,e,s,i){Je(t,e,s,i,!0)},off(t,e,s,i){if("string"!=typeof e||!t)return;const[n,r,o]=Ge(e,s,i),a=o!==e,l=Qe(t),u=l[o]||{},h=e.startsWith(".");if(void 0===r){if(h)for(const s of Object.keys(l))es(t,l,s,e.slice(1));for(const[s,i]of Object.entries(u)){const n=s.replace(qe,"");a&&!e.includes(n)||ts(t,l,o,i.callable,i.delegationSelector)}}else{if(!Object.keys(u).length)return;ts(t,l,o,r,n?s:null)}},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=Pe();let n=null,r=!0,o=!0,a=!1;e!==ss(e)&&i&&(n=i.Event(e,s),i(t).trigger(n),r=!n.isPropagationStopped(),o=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=ns(new Event(e,{bubbles:r,cancelable:!0}),s);return a&&l.preventDefault(),o&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function ns(t,e={}){for(const[s,i]of Object.entries(e))try{t[s]=i}catch(e){Object.defineProperty(t,s,{configurable:!0,get:()=>i})}return t}function rs(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 os(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const as={setDataAttribute(t,e,s){t.setAttribute(`data-bs-${os(e)}`,s)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${os(e)}`)},getDataAttributes(t){if(!t)return{};const e={},s=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of s){let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=rs(t.dataset[i])}return e},getDataAttribute:(t,e)=>rs(t.getAttribute(`data-bs-${os(e)}`))};class ls{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 s=Fe(e)?as.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof s?s:{},...Fe(e)?as.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const e=t[i],r=Fe(e)?"element":null==(s=e)?`${s}`:Object.prototype.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)}var s}}class us extends ls{constructor(t,e){super(),(t=Te(t))&&(this._element=t,this._config=this._getConfig(e),Ee.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ee.remove(this._element,this.constructor.DATA_KEY),is.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,s=!0){$e(t,e,s)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Ee.get(Te(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.1"}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 hs=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s=`#${s.split("#")[1]}`),e=s&&"#"!==s?s.trim():null}return xe(e)},cs={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 s=[];let i=t.parentNode.closest(e);for(;i;)s.push(i),i=i.parentNode.closest(e);return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.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=>!Oe(t)&&De(t)))},getSelectorFromElement(t){const e=hs(t);return e&&cs.findOne(e)?e:null},getElementFromSelector(t){const e=hs(t);return e?cs.findOne(e):null},getMultipleElementsFromSelector(t){const e=hs(t);return e?cs.find(e):[]}},ds=(t,e="hide")=>{const s=`click.dismiss${t.EVENT_KEY}`,i=t.NAME;is.on(document,s,`[data-bs-dismiss="${i}"]`,(function(s){if(["A","AREA"].includes(this.tagName)&&s.preventDefault(),Oe(this))return;const n=cs.getElementFromSelector(this)||this.closest(`.${i}`);t.getOrCreateInstance(n)[e]()}))},ps=".bs.alert",fs=`close${ps}`,gs=`closed${ps}`;class ms extends us{static get NAME(){return"alert"}close(){if(is.trigger(this._element,fs).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(),is.trigger(this._element,gs),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=ms.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)}}))}}ds(ms,"close"),Ne(ms);const _s='[data-bs-toggle="button"]';class vs extends us{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=vs.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}is.on(document,"click.bs.button.data-api",_s,(t=>{t.preventDefault();const e=t.target.closest(_s);vs.getOrCreateInstance(e).toggle()})),Ne(vs);const bs=".bs.swipe",ks=`touchstart${bs}`,ys=`touchmove${bs}`,As=`touchend${bs}`,ws=`pointerdown${bs}`,Es=`pointerup${bs}`,Cs={endCallback:null,leftCallback:null,rightCallback:null},xs={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Ss extends ls{constructor(t,e){super(),this._element=t,t&&Ss.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Cs}static get DefaultType(){return xs}static get NAME(){return"swipe"}dispose(){is.off(this._element,bs)}_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(),je(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&&je(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(is.on(this._element,ws,(t=>this._start(t))),is.on(this._element,Es,(t=>this._end(t))),this._element.classList.add("pointer-event")):(is.on(this._element,ks,(t=>this._start(t))),is.on(this._element,ys,(t=>this._move(t))),is.on(this._element,As,(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 Fs=".bs.carousel",Ts=".data-api",Ds="next",Os="prev",Is="left",Bs="right",Ms=`slide${Fs}`,Ps=`slid${Fs}`,Ls=`keydown${Fs}`,Vs=`mouseenter${Fs}`,Ns=`mouseleave${Fs}`,js=`dragstart${Fs}`,$s=`load${Fs}${Ts}`,Rs=`click${Fs}${Ts}`,zs="carousel",Hs="active",qs=".active",Ws=".carousel-item",Us=qs+Ws,Ys={ArrowLeft:Bs,ArrowRight:Is},Ks={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Xs={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Qs extends us{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=cs.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===zs&&this.cycle()}static get Default(){return Ks}static get DefaultType(){return Xs}static get NAME(){return"carousel"}next(){this._slide(Ds)}nextWhenVisible(){!document.hidden&&De(this._element)&&this.next()}prev(){this._slide(Os)}pause(){this._isSliding&&Se(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?is.one(this._element,Ps,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void is.one(this._element,Ps,(()=>this.to(t)));const s=this._getItemIndex(this._getActive());if(s===t)return;const i=t>s?Ds:Os;this._slide(i,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&is.on(this._element,Ls,(t=>this._keydown(t))),"hover"===this._config.pause&&(is.on(this._element,Vs,(()=>this.pause())),is.on(this._element,Ns,(()=>this._maybeEnableCycle()))),this._config.touch&&Ss.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of cs.find(".carousel-item img",this._element))is.on(t,js,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Is)),rightCallback:()=>this._slide(this._directionToOrder(Bs)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Ss(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Ys[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=cs.findOne(qs,this._indicatorsElement);e.classList.remove(Hs),e.removeAttribute("aria-current");const s=cs.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);s&&(s.classList.add(Hs),s.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 s=this._getActive(),i=t===Ds,n=e||Re(this._getItems(),s,i,this._config.wrap);if(n===s)return;const r=this._getItemIndex(n),o=e=>is.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(s),to:r});if(o(Ms).defaultPrevented)return;if(!s||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(r),this._activeElement=n;const l=i?"carousel-item-start":"carousel-item-end",u=i?"carousel-item-next":"carousel-item-prev";n.classList.add(u),Me(n),s.classList.add(l),n.classList.add(l);this._queueCallback((()=>{n.classList.remove(l,u),n.classList.add(Hs),s.classList.remove(Hs,u,l),this._isSliding=!1,o(Ps)}),s,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return cs.findOne(Us,this._element)}_getItems(){return cs.find(Ws,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Ve()?t===Is?Os:Ds:t===Is?Ds:Os}_orderToDirection(t){return Ve()?t===Os?Is:Bs:t===Os?Bs:Is}static jQueryInterface(t){return this.each((function(){const e=Qs.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)}))}}is.on(document,Rs,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=cs.getElementFromSelector(this);if(!e||!e.classList.contains(zs))return;t.preventDefault();const s=Qs.getOrCreateInstance(e),i=this.getAttribute("data-bs-slide-to");return i?(s.to(i),void s._maybeEnableCycle()):"next"===as.getDataAttribute(this,"slide")?(s.next(),void s._maybeEnableCycle()):(s.prev(),void s._maybeEnableCycle())})),is.on(window,$s,(()=>{const t=cs.find('[data-bs-ride="carousel"]');for(const e of t)Qs.getOrCreateInstance(e)})),Ne(Qs);const Zs=".bs.collapse",Gs=`show${Zs}`,Js=`shown${Zs}`,ti=`hide${Zs}`,ei=`hidden${Zs}`,si=`click${Zs}.data-api`,ii="show",ni="collapse",ri="collapsing",oi=`:scope .${ni} .${ni}`,ai='[data-bs-toggle="collapse"]',li={parent:null,toggle:!0},ui={parent:"(null|element)",toggle:"boolean"};class hi extends us{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const s=cs.find(ai);for(const t of s){const e=cs.getSelectorFromElement(t),s=cs.find(e).filter((t=>t===this._element));null!==e&&s.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 li}static get DefaultType(){return ui}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=>hi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(is.trigger(this._element,Gs).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ni),this._element.classList.add(ri),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ri),this._element.classList.add(ni,ii),this._element.style[e]="",is.trigger(this._element,Js)}),this._element,!0),this._element.style[e]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(is.trigger(this._element,ti).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Me(this._element),this._element.classList.add(ri),this._element.classList.remove(ni,ii);for(const t of this._triggerArray){const e=cs.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(ri),this._element.classList.add(ni),is.trigger(this._element,ei)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ii)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Te(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(ai);for(const e of t){const t=cs.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=cs.find(oi,this._config.parent);return cs.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const s of t)s.classList.toggle("collapsed",!e),s.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const s=hi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t]()}}))}}is.on(document,si,ai,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of cs.getMultipleElementsFromSelector(this))hi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Ne(hi);const ci="dropdown",di=".bs.dropdown",pi=".data-api",fi="ArrowUp",gi="ArrowDown",mi=`hide${di}`,_i=`hidden${di}`,vi=`show${di}`,bi=`shown${di}`,ki=`click${di}${pi}`,yi=`keydown${di}${pi}`,Ai=`keyup${di}${pi}`,wi="show",Ei='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ci=`${Ei}.${wi}`,xi=".dropdown-menu",Si=Ve()?"top-end":"top-start",Fi=Ve()?"top-start":"top-end",Ti=Ve()?"bottom-end":"bottom-start",Di=Ve()?"bottom-start":"bottom-end",Oi=Ve()?"left-start":"right-start",Ii=Ve()?"right-start":"left-start",Bi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Mi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Pi extends us{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=cs.next(this._element,xi)[0]||cs.prev(this._element,xi)[0]||cs.findOne(xi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Bi}static get DefaultType(){return Mi}static get NAME(){return ci}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Oe(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!is.trigger(this._element,vi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))is.on(t,"mouseover",Be);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(wi),this._element.classList.add(wi),is.trigger(this._element,bi,t)}}hide(){if(Oe(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(!is.trigger(this._element,mi,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.off(t,"mouseover",Be);this._popper&&this._popper.destroy(),this._menu.classList.remove(wi),this._element.classList.remove(wi),this._element.setAttribute("aria-expanded","false"),as.removeDataAttribute(this._menu,"popper"),is.trigger(this._element,_i,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Fe(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${ci.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ae)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Fe(this._config.reference)?t=Te(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=ye(t,this._menu,e)}_isShown(){return this._menu.classList.contains(wi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Oi;if(t.classList.contains("dropstart"))return Ii;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?Fi:Si:e?Di:Ti}_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)&&(as.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...je(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const s=cs.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>De(t)));s.length&&Re(s,e,t===gi,!s.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Pi.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=cs.find(Ci);for(const s of e){const e=Pi.getInstance(s);if(!e||!1===e._config.autoClose)continue;const i=t.composedPath(),n=i.includes(e._menu);if(i.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)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 r={relatedTarget:e._element};"click"===t.type&&(r.clickEvent=t),e._completeHide(r)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),s="Escape"===t.key,i=[fi,gi].includes(t.key);if(!i&&!s)return;if(e&&!s)return;t.preventDefault();const n=this.matches(Ei)?this:cs.prev(this,Ei)[0]||cs.next(this,Ei)[0]||cs.findOne(Ei,t.delegateTarget.parentNode),r=Pi.getOrCreateInstance(n);if(i)return t.stopPropagation(),r.show(),void r._selectMenuItem(t);r._isShown()&&(t.stopPropagation(),r.hide(),n.focus())}}is.on(document,yi,Ei,Pi.dataApiKeydownHandler),is.on(document,yi,xi,Pi.dataApiKeydownHandler),is.on(document,ki,Pi.clearMenus),is.on(document,Ai,Pi.clearMenus),is.on(document,ki,Ei,(function(t){t.preventDefault(),Pi.getOrCreateInstance(this).toggle()})),Ne(Pi);const Li="backdrop",Vi="show",Ni=`mousedown.bs.${Li}`,ji={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},$i={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ri extends ls{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ji}static get DefaultType(){return $i}static get NAME(){return Li}show(t){if(!this._config.isVisible)return void je(t);this._append();const e=this._getElement();this._config.isAnimated&&Me(e),e.classList.add(Vi),this._emulateAnimation((()=>{je(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Vi),this._emulateAnimation((()=>{this.dispose(),je(t)}))):je(t)}dispose(){this._isAppended&&(is.off(this._element,Ni),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=Te(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),is.on(t,Ni,(()=>{je(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){$e(t,this._getElement(),this._config.isAnimated)}}const zi=".bs.focustrap",Hi=`focusin${zi}`,qi=`keydown.tab${zi}`,Wi="backward",Ui={autofocus:!0,trapElement:null},Yi={autofocus:"boolean",trapElement:"element"};class Ki extends ls{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ui}static get DefaultType(){return Yi}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),is.off(document,zi),is.on(document,Hi,(t=>this._handleFocusin(t))),is.on(document,qi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,is.off(document,zi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const s=cs.focusableChildren(e);0===s.length?e.focus():this._lastTabNavDirection===Wi?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Wi:"forward")}}const Xi=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Qi=".sticky-top",Zi="padding-right",Gi="margin-right";class Ji{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,Zi,(e=>e+t)),this._setElementAttributes(Xi,Zi,(e=>e+t)),this._setElementAttributes(Qi,Gi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Zi),this._resetElementAttributes(Xi,Zi),this._resetElementAttributes(Qi,Gi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const s=t.style.getPropertyValue(e);s&&as.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const s=as.getDataAttribute(t,e);null!==s?(as.removeDataAttribute(t,e),t.style.setProperty(e,s)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Fe(t))e(t);else for(const s of cs.find(t,this._element))e(s)}}const tn=".bs.modal",en=`hide${tn}`,sn=`hidePrevented${tn}`,nn=`hidden${tn}`,rn=`show${tn}`,on=`shown${tn}`,an=`resize${tn}`,ln=`click.dismiss${tn}`,un=`mousedown.dismiss${tn}`,hn=`keydown.dismiss${tn}`,cn=`click${tn}.data-api`,dn="modal-open",pn="show",fn="modal-static",gn={backdrop:!0,focus:!0,keyboard:!0},mn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class _n extends us{constructor(t,e){super(t,e),this._dialog=cs.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ji,this._addEventListeners()}static get Default(){return gn}static get DefaultType(){return mn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown||this._isTransitioning)return;is.trigger(this._element,rn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(dn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;is.trigger(this._element,en).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(pn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated()))}dispose(){is.off(window,tn),is.off(this._dialog,tn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ri({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ki({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=cs.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Me(this._element),this._element.classList.add(pn);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,is.trigger(this._element,on,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){is.on(this._element,hn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),is.on(window,an,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),is.on(this._element,un,(t=>{is.one(this._element,ln,(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(dn),this._resetAdjustments(),this._scrollBar.reset(),is.trigger(this._element,nn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(is.trigger(this._element,sn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(fn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(fn),this._queueCallback((()=>{this._element.classList.remove(fn),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(),s=e>0;if(s&&!t){const t=Ve()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!s&&t){const t=Ve()?"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 s=_n.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}is.on(document,cn,'[data-bs-toggle="modal"]',(function(t){const e=cs.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),is.one(e,rn,(t=>{t.defaultPrevented||is.one(e,nn,(()=>{De(this)&&this.focus()}))}));const s=cs.findOne(".modal.show");s&&_n.getInstance(s).hide();_n.getOrCreateInstance(e).toggle(this)})),ds(_n),Ne(_n);const vn=".bs.offcanvas",bn=".data-api",kn=`load${vn}${bn}`,yn="show",An="showing",wn="hiding",En=".offcanvas.show",Cn=`show${vn}`,xn=`shown${vn}`,Sn=`hide${vn}`,Fn=`hidePrevented${vn}`,Tn=`hidden${vn}`,Dn=`resize${vn}`,On=`click${vn}${bn}`,In=`keydown.dismiss${vn}`,Bn={backdrop:!0,keyboard:!0,scroll:!1},Mn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Pn extends us{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bn}static get DefaultType(){return Mn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){if(this._isShown)return;if(is.trigger(this._element,Cn,{relatedTarget:t}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ji).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(An);this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(yn),this._element.classList.remove(An),is.trigger(this._element,xn,{relatedTarget:t})}),this._element,!0)}hide(){if(!this._isShown)return;if(is.trigger(this._element,Sn).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(wn),this._backdrop.hide();this._queueCallback((()=>{this._element.classList.remove(yn,wn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ji).reset(),is.trigger(this._element,Tn)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ri({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():is.trigger(this._element,Fn)}:null})}_initializeFocusTrap(){return new Ki({trapElement:this._element})}_addEventListeners(){is.on(this._element,In,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():is.trigger(this._element,Fn))}))}static jQueryInterface(t){return this.each((function(){const e=Pn.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)}}))}}is.on(document,On,'[data-bs-toggle="offcanvas"]',(function(t){const e=cs.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Oe(this))return;is.one(e,Tn,(()=>{De(this)&&this.focus()}));const s=cs.findOne(En);s&&s!==e&&Pn.getInstance(s).hide();Pn.getOrCreateInstance(e).toggle(this)})),is.on(window,kn,(()=>{for(const t of cs.find(En))Pn.getOrCreateInstance(t).show()})),is.on(window,Dn,(()=>{for(const t of cs.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Pn.getOrCreateInstance(t).hide()})),ds(Pn),Ne(Pn);const Ln={"*":["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:[]},Vn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Nn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,jn=(t,e)=>{const s=t.nodeName.toLowerCase();return e.includes(s)?!Vn.has(s)||Boolean(Nn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(s)))};const $n={allowList:Ln,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
    "},Rn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},zn={entry:"(string|element|function|null)",selector:"(string|element)"};class Hn extends ls{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return $n}static get DefaultType(){return Rn}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,s]of Object.entries(this._config.content))this._setContent(t,s,e);const e=t.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s&&e.classList.add(...s.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,s]of Object.entries(t))super._typeCheckConfig({selector:e,entry:s},zn)}_setContent(t,e,s){const i=cs.findOne(s,t);i&&((e=this._resolvePossibleFunction(e))?Fe(e)?this._putElementInTemplate(Te(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,s){if(!t.length)return t;if(s&&"function"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...i.body.querySelectorAll("*"));for(const t of n){const s=t.nodeName.toLowerCase();if(!Object.keys(e).includes(s)){t.remove();continue}const i=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[s]||[]);for(const e of i)jn(e,n)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return je(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const qn=new Set(["sanitize","allowList","sanitizeFn"]),Wn="fade",Un="show",Yn=".modal",Kn="hide.bs.modal",Xn="hover",Qn="focus",Zn={AUTO:"auto",TOP:"top",RIGHT:Ve()?"left":"right",BOTTOM:"bottom",LEFT:Ve()?"right":"left"},Gn={allowList:Ln,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"},Jn={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 tr extends us{constructor(t,e){if(void 0===Ae)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 Gn}static get DefaultType(){return Jn}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),is.off(this._element.closest(Yn),Kn,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=is.trigger(this._element,this.constructor.eventName("show")),e=(Ie(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute("aria-describedby",s.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),is.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(s),s.classList.add(Un),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.on(t,"mouseover",Be);this._queueCallback((()=>{is.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(is.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Un),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))is.off(t,"mouseover",Be);this._activeTrigger.click=!1,this._activeTrigger[Qn]=!1,this._activeTrigger[Xn]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),is.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(Wn,Un),e.classList.add(`bs-${this.constructor.NAME}-auto`);const s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",s),this._isAnimated()&&e.classList.add(Wn),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Hn({...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(Wn)}_isShown(){return this.tip&&this.tip.classList.contains(Un)}_createPopper(t){const e=je(this._config.placement,[this,t,this._element]),s=Zn[e.toUpperCase()];return ye(this._element,t,this._getPopperConfig(s))}_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 je(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,...je(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)is.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Xn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),s=e===Xn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");is.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Qn:Xn]=!0,e._enter()})),is.on(this._element,s,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Qn:Xn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},is.on(this._element.closest(Yn),Kn,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=as.getDataAttributes(this._element);for(const t of Object.keys(e))qn.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:Te(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,s]of Object.entries(this._config))this.constructor.Default[e]!==s&&(t[e]=s);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=tr.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ne(tr);const er={...tr.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},sr={...tr.DefaultType,content:"(null|string|element|function)"};class ir extends tr{static get Default(){return er}static get DefaultType(){return sr}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=ir.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Ne(ir);const nr=".bs.scrollspy",rr=`activate${nr}`,or=`click${nr}`,ar=`load${nr}.data-api`,lr="active",ur="[href]",hr=".nav-link",cr=`${hr}, .nav-item > ${hr}, .list-group-item`,dr={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},pr={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class fr extends us{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 dr}static get DefaultType(){return pr}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=Te(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&&(is.off(this._config.target,or),is.on(this._config.target,or,ur,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const s=this._rootElement||window,i=e.offsetTop-this._element.offsetTop;if(s.scrollTo)return void s.scrollTo({top:i,behavior:"smooth"});s.scrollTop=i}})))}_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}`),s=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,n=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const r of t){if(!r.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(r));continue}const t=r.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(s(r),!i)return}else n||t||s(r)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=cs.find(ur,this._config.target);for(const e of t){if(!e.hash||Oe(e))continue;const t=cs.findOne(decodeURI(e.hash),this._element);De(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(lr),this._activateParents(t),is.trigger(this._element,rr,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))cs.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(lr);else for(const e of cs.parents(t,".nav, .list-group"))for(const t of cs.prev(e,cr))t.classList.add(lr)}_clearActiveClass(t){t.classList.remove(lr);const e=cs.find(`${ur}.${lr}`,t);for(const t of e)t.classList.remove(lr)}static jQueryInterface(t){return this.each((function(){const e=fr.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]()}}))}}is.on(window,ar,(()=>{for(const t of cs.find('[data-bs-spy="scroll"]'))fr.getOrCreateInstance(t)})),Ne(fr);const gr=".bs.tab",mr=`hide${gr}`,_r=`hidden${gr}`,vr=`show${gr}`,br=`shown${gr}`,kr=`click${gr}`,yr=`keydown${gr}`,Ar=`load${gr}`,wr="ArrowLeft",Er="ArrowRight",Cr="ArrowUp",xr="ArrowDown",Sr="Home",Fr="End",Tr="active",Dr="fade",Or="show",Ir=":not(.dropdown-toggle)",Br='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Mr=`${`.nav-link${Ir}, .list-group-item${Ir}, [role="tab"]${Ir}`}, ${Br}`,Pr=`.${Tr}[data-bs-toggle="tab"], .${Tr}[data-bs-toggle="pill"], .${Tr}[data-bs-toggle="list"]`;class Lr extends us{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),is.on(this._element,yr,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),s=e?is.trigger(e,mr,{relatedTarget:t}):null;is.trigger(t,vr,{relatedTarget:e}).defaultPrevented||s&&s.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){if(!t)return;t.classList.add(Tr),this._activate(cs.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),is.trigger(t,br,{relatedTarget:e})):t.classList.add(Or)}),t,t.classList.contains(Dr))}_deactivate(t,e){if(!t)return;t.classList.remove(Tr),t.blur(),this._deactivate(cs.getElementFromSelector(t));this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),is.trigger(t,_r,{relatedTarget:e})):t.classList.remove(Or)}),t,t.classList.contains(Dr))}_keydown(t){if(![wr,Er,Cr,xr,Sr,Fr].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Oe(t)));let s;if([Sr,Fr].includes(t.key))s=e[t.key===Sr?0:e.length-1];else{const i=[Er,xr].includes(t.key);s=Re(e,t.target,i,!0)}s&&(s.focus({preventScroll:!0}),Lr.getOrCreateInstance(s).show())}_getChildren(){return cs.find(Mr,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),s=this._getOuterElement(t);t.setAttribute("aria-selected",e),s!==t&&this._setAttributeIfNotExists(s,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=cs.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const s=this._getOuterElement(t);if(!s.classList.contains("dropdown"))return;const i=(t,i)=>{const n=cs.findOne(t,s);n&&n.classList.toggle(i,e)};i(".dropdown-toggle",Tr),i(".dropdown-menu",Or),s.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,s){t.hasAttribute(e)||t.setAttribute(e,s)}_elemIsActive(t){return t.classList.contains(Tr)}_getInnerElement(t){return t.matches(Mr)?t:cs.findOne(Mr,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Lr.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}is.on(document,kr,Br,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Oe(this)||Lr.getOrCreateInstance(this).show()})),is.on(window,Ar,(()=>{for(const t of cs.find(Pr))Lr.getOrCreateInstance(t)})),Ne(Lr);const Vr=".bs.toast",Nr=`mouseover${Vr}`,jr=`mouseout${Vr}`,$r=`focusin${Vr}`,Rr=`focusout${Vr}`,zr=`hide${Vr}`,Hr=`hidden${Vr}`,qr=`show${Vr}`,Wr=`shown${Vr}`,Ur="hide",Yr="show",Kr="showing",Xr={animation:"boolean",autohide:"boolean",delay:"number"},Qr={animation:!0,autohide:!0,delay:5e3};class Zr extends us{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Qr}static get DefaultType(){return Xr}static get NAME(){return"toast"}show(){if(is.trigger(this._element,qr).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Ur),Me(this._element),this._element.classList.add(Yr,Kr),this._queueCallback((()=>{this._element.classList.remove(Kr),is.trigger(this._element,Wr),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(is.trigger(this._element,zr).defaultPrevented)return;this._element.classList.add(Kr),this._queueCallback((()=>{this._element.classList.add(Ur),this._element.classList.remove(Kr,Yr),is.trigger(this._element,Hr)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Yr),super.dispose()}isShown(){return this._element.classList.contains(Yr)}_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 s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){is.on(this._element,Nr,(t=>this._onInteraction(t,!0))),is.on(this._element,jr,(t=>this._onInteraction(t,!1))),is.on(this._element,$r,(t=>this._onInteraction(t,!0))),is.on(this._element,Rr,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Zr.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ds(Zr),Ne(Zr);var Gr=Object.freeze({__proto__:null,Alert:ms,Button:vs,Carousel:Qs,Collapse:hi,Dropdown:Pi,Modal:_n,Offcanvas:Pn,Popover:ir,ScrollSpy:fr,Tab:Lr,Toast:Zr,Tooltip:tr});[].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')).map((function(t){var e={boundary:"viewport"===t.getAttribute("data-bs-boundary")?document.querySelector(".btn"):"clippingParents"};return new Pi(t,e)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){var e,s,i={delay:{show:50,hide:50},html:null!==(e="true"===t.getAttribute("data-bs-html"))&&void 0!==e&&e,placement:null!==(s=t.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new tr(t,i)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map((function(t){var e,s,i={delay:{show:50,hide:50},html:null!==(e="true"===t.getAttribute("data-bs-html"))&&void 0!==e&&e,placement:null!==(s=t.getAttribute("data-bs-placement"))&&void 0!==s?s:"auto"};return new ir(t,i)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]')).map((function(t){t.addEventListener("click",(function(e){e.stopPropagation(),t.classList.toggle("active")}))}));var Jr;(Jr=window.location.hash)&&[].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]')).filter((function(t){return t.hash===Jr})).map((function(t){new Lr(t).show()})),[].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]')).map((function(t){return new Zr(t)}));var to="tblr-",eo=function(t,e){var s=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return s?"rgba(".concat(parseInt(s[1],16),", ").concat(parseInt(s[2],16),", ").concat(parseInt(s[3],16),", ").concat(e,")"):null},so=Object.freeze({__proto__:null,prefix:to,hexToRgba:eo,getColor:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=getComputedStyle(document.body).getPropertyValue("--".concat(to).concat(t)).trim();return 1!==e?eo(s,e):s}});globalThis.bootstrap=Gr,globalThis.tabler=so})); \ No newline at end of file diff --git a/public/libs/apexcharts/dist/apexcharts.js b/public/libs/apexcharts/dist/apexcharts.js new file mode 100644 index 0000000..ec6807d --- /dev/null +++ b/public/libs/apexcharts/dist/apexcharts.js @@ -0,0 +1,32956 @@ +/*! + * ApexCharts v3.40.0 + * (c) 2018-2023 ApexCharts + * Released under the MIT License. + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ApexCharts = factory()); +})(this, (function () { 'use strict'; + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + + if (enumerableOnly) { + symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + } + + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + /* + ** Generic functions which are not dependent on ApexCharts + */ + var Utils$1 = /*#__PURE__*/function () { + function Utils() { + _classCallCheck(this, Utils); + } + + _createClass(Utils, [{ + key: "shadeRGBColor", + value: function shadeRGBColor(percent, color) { + var f = color.split(','), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = parseInt(f[0].slice(4), 10), + G = parseInt(f[1], 10), + B = parseInt(f[2], 10); + return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')'; + } + }, { + key: "shadeHexColor", + value: function shadeHexColor(percent, color) { + var f = parseInt(color.slice(1), 16), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = f >> 16, + G = f >> 8 & 0x00ff, + B = f & 0x0000ff; + return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1); + } // beautiful color shading blending code + // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors + + }, { + key: "shadeColor", + value: function shadeColor(p, color) { + if (Utils.isColorHex(color)) { + return this.shadeHexColor(p, color); + } else { + return this.shadeRGBColor(p, color); + } + } + }], [{ + key: "bind", + value: function bind(fn, me) { + return function () { + return fn.apply(me, arguments); + }; + } + }, { + key: "isObject", + value: function isObject(item) { + return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null; + } // Type checking that works across different window objects + + }, { + key: "is", + value: function is(type, val) { + return Object.prototype.toString.call(val) === '[object ' + type + ']'; + } + }, { + key: "listToArray", + value: function listToArray(list) { + var i, + array = []; + + for (i = 0; i < list.length; i++) { + array[i] = list[i]; + } + + return array; + } // to extend defaults with user options + // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873 + + }, { + key: "extend", + value: function extend(target, source) { + var _this = this; + + if (typeof Object.assign !== 'function') { + + (function () { + Object.assign = function (target) { + + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var _source = arguments[index]; + + if (_source !== undefined && _source !== null) { + for (var nextKey in _source) { + if (_source.hasOwnProperty(nextKey)) { + output[nextKey] = _source[nextKey]; + } + } + } + } + + return output; + }; + })(); + } + + var output = Object.assign({}, target); + + if (this.isObject(target) && this.isObject(source)) { + Object.keys(source).forEach(function (key) { + if (_this.isObject(source[key])) { + if (!(key in target)) { + Object.assign(output, _defineProperty({}, key, source[key])); + } else { + output[key] = _this.extend(target[key], source[key]); + } + } else { + Object.assign(output, _defineProperty({}, key, source[key])); + } + }); + } + + return output; + } + }, { + key: "extendArray", + value: function extendArray(arrToExtend, resultArr) { + var extendedArr = []; + arrToExtend.map(function (item) { + extendedArr.push(Utils.extend(resultArr, item)); + }); + arrToExtend = extendedArr; + return arrToExtend; + } // If month counter exceeds 12, it starts again from 1 + + }, { + key: "monthMod", + value: function monthMod(month) { + return month % 12; + } + }, { + key: "clone", + value: function clone(source) { + if (Utils.is('Array', source)) { + var cloneResult = []; + + for (var i = 0; i < source.length; i++) { + cloneResult[i] = this.clone(source[i]); + } + + return cloneResult; + } else if (Utils.is('Null', source)) { + // fixes an issue where null values were converted to {} + return null; + } else if (Utils.is('Date', source)) { + return source; + } else if (_typeof(source) === 'object') { + var _cloneResult = {}; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + _cloneResult[prop] = this.clone(source[prop]); + } + } + + return _cloneResult; + } else { + return source; + } + } + }, { + key: "log10", + value: function log10(x) { + return Math.log(x) / Math.LN10; + } + }, { + key: "roundToBase10", + value: function roundToBase10(x) { + return Math.pow(10, Math.floor(Math.log10(x))); + } + }, { + key: "roundToBase", + value: function roundToBase(x, base) { + return Math.pow(base, Math.floor(Math.log(x) / Math.log(base))); + } + }, { + key: "parseNumber", + value: function parseNumber(val) { + if (val === null) return val; + return parseFloat(val); + } + }, { + key: "randomId", + value: function randomId() { + return (Math.random() + 1).toString(36).substring(4); + } + }, { + key: "noExponents", + value: function noExponents(val) { + var data = String(val).split(/[eE]/); + if (data.length === 1) return data[0]; + var z = '', + sign = val < 0 ? '-' : '', + str = data[0].replace('.', ''), + mag = Number(data[1]) + 1; + + if (mag < 0) { + z = sign + '0.'; + + while (mag++) { + z += '0'; + } + + return z + str.replace(/^-/, ''); + } + + mag -= str.length; + + while (mag--) { + z += '0'; + } + + return str + z; + } + }, { + key: "getDimensions", + value: function getDimensions(el) { + var computedStyle = getComputedStyle(el, null); + var elementHeight = el.clientHeight; + var elementWidth = el.clientWidth; + elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom); + elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight); + return [elementWidth, elementHeight]; + } + }, { + key: "getBoundingClientRect", + value: function getBoundingClientRect(element) { + var rect = element.getBoundingClientRect(); + return { + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + width: element.clientWidth, + height: element.clientHeight, + x: rect.left, + y: rect.top + }; + } + }, { + key: "getLargestStringFromArr", + value: function getLargestStringFromArr(arr) { + return arr.reduce(function (a, b) { + if (Array.isArray(b)) { + b = b.reduce(function (aa, bb) { + return aa.length > bb.length ? aa : bb; + }); + } + + return a.length > b.length ? a : b; + }, 0); + } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275 + + }, { + key: "hexToRgba", + value: function hexToRgba() { + var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999'; + var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6; + + if (hex.substring(0, 1) !== '#') { + hex = '#999999'; + } + + var h = hex.replace('#', ''); + h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g')); + + for (var i = 0; i < h.length; i++) { + h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16); + } + + if (typeof opacity !== 'undefined') h.push(opacity); + return 'rgba(' + h.join(',') + ')'; + } + }, { + key: "getOpacityFromRGBA", + value: function getOpacityFromRGBA(rgba) { + return parseFloat(rgba.replace(/^.*,(.+)\)/, '$1')); + } + }, { + key: "rgb2hex", + value: function rgb2hex(rgb) { + rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); + return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : ''; + } + }, { + key: "isColorHex", + value: function isColorHex(color) { + return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(color); + } + }, { + key: "getPolygonPos", + value: function getPolygonPos(size, dataPointsLen) { + var dotsArray = []; + var angle = Math.PI * 2 / dataPointsLen; + + for (var i = 0; i < dataPointsLen; i++) { + var curPos = {}; + curPos.x = size * Math.sin(i * angle); + curPos.y = -size * Math.cos(i * angle); + dotsArray.push(curPos); + } + + return dotsArray; + } + }, { + key: "polarToCartesian", + value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) { + var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0; + return { + x: centerX + radius * Math.cos(angleInRadians), + y: centerY + radius * Math.sin(angleInRadians) + }; + } + }, { + key: "escapeString", + value: function escapeString(str) { + var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x'; + var newStr = str.toString().slice(); + newStr = newStr.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi, escapeWith); + return newStr; + } + }, { + key: "negToZero", + value: function negToZero(val) { + return val < 0 ? 0 : val; + } + }, { + key: "moveIndexInArray", + value: function moveIndexInArray(arr, old_index, new_index) { + if (new_index >= arr.length) { + var k = new_index - arr.length + 1; + + while (k--) { + arr.push(undefined); + } + } + + arr.splice(new_index, 0, arr.splice(old_index, 1)[0]); + return arr; + } + }, { + key: "extractNumber", + value: function extractNumber(s) { + return parseFloat(s.replace(/[^\d.]*/g, '')); + } + }, { + key: "findAncestor", + value: function findAncestor(el, cls) { + while ((el = el.parentElement) && !el.classList.contains(cls)) { + } + + return el; + } + }, { + key: "setELstyles", + value: function setELstyles(el, styles) { + for (var key in styles) { + if (styles.hasOwnProperty(key)) { + el.style.key = styles[key]; + } + } + } + }, { + key: "isNumber", + value: function isNumber(value) { + return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10)); + } + }, { + key: "isFloat", + value: function isFloat(n) { + return Number(n) === n && n % 1 !== 0; + } + }, { + key: "isSafari", + value: function isSafari() { + return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + } + }, { + key: "isFirefox", + value: function isFirefox() { + return navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + } + }, { + key: "isIE11", + value: function isIE11() { + if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) { + return true; + } + } + }, { + key: "isIE", + value: function isIE() { + var ua = window.navigator.userAgent; + var msie = ua.indexOf('MSIE '); + + if (msie > 0) { + // IE 10 or older => return version number + return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); + } + + var trident = ua.indexOf('Trident/'); + + if (trident > 0) { + // IE 11 => return version number + var rv = ua.indexOf('rv:'); + return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); + } + + var edge = ua.indexOf('Edge/'); + + if (edge > 0) { + // Edge (IE 12+) => return version number + return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); + } // other browser + + + return false; + } + }]); + + return Utils; + }(); + + /** + * ApexCharts Animation Class. + * + * @module Animations + **/ + + var Animations = /*#__PURE__*/function () { + function Animations(ctx) { + _classCallCheck(this, Animations); + + this.ctx = ctx; + this.w = ctx.w; + this.setEasingFunctions(); + } + + _createClass(Animations, [{ + key: "setEasingFunctions", + value: function setEasingFunctions() { + var easing; + if (this.w.globals.easing) return; + var userDefinedEasing = this.w.config.chart.animations.easing; + + switch (userDefinedEasing) { + case 'linear': + { + easing = '-'; + break; + } + + case 'easein': + { + easing = '<'; + break; + } + + case 'easeout': + { + easing = '>'; + break; + } + + case 'easeinout': + { + easing = '<>'; + break; + } + + case 'swing': + { + easing = function easing(pos) { + var s = 1.70158; + var ret = (pos -= 1) * pos * ((s + 1) * pos + s) + 1; + return ret; + }; + + break; + } + + case 'bounce': + { + easing = function easing(pos) { + var ret = ''; + + if (pos < 1 / 2.75) { + ret = 7.5625 * pos * pos; + } else if (pos < 2 / 2.75) { + ret = 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; + } else if (pos < 2.5 / 2.75) { + ret = 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; + } else { + ret = 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; + } + + return ret; + }; + + break; + } + + case 'elastic': + { + easing = function easing(pos) { + if (pos === !!pos) return pos; + return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1; + }; + + break; + } + + default: + { + easing = '<>'; + } + } + + this.w.globals.easing = easing; + } + }, { + key: "animateLine", + value: function animateLine(el, from, to, speed) { + el.attr(from).animate(speed).attr(to); + } + /* + ** Animate radius of a circle element + */ + + }, { + key: "animateMarker", + value: function animateMarker(el, from, to, speed, easing, cb) { + if (!from) from = 0; + el.attr({ + r: from, + width: from, + height: from + }).animate(speed, easing).attr({ + r: to, + width: to.width, + height: to.height + }).afterAll(function () { + cb(); + }); + } + /* + ** Animate radius and position of a circle element + */ + + }, { + key: "animateCircle", + value: function animateCircle(el, from, to, speed, easing) { + el.attr({ + r: from.r, + cx: from.cx, + cy: from.cy + }).animate(speed, easing).attr({ + r: to.r, + cx: to.cx, + cy: to.cy + }); + } + /* + ** Animate rect properties + */ + + }, { + key: "animateRect", + value: function animateRect(el, from, to, speed, fn) { + el.attr(from).animate(speed).attr(to).afterAll(function () { + return fn(); + }); + } + }, { + key: "animatePathsGradually", + value: function animatePathsGradually(params) { + var el = params.el, + realIndex = params.realIndex, + j = params.j, + fill = params.fill, + pathFrom = params.pathFrom, + pathTo = params.pathTo, + speed = params.speed, + delay = params.delay; + var me = this; + var w = this.w; + var delayFactor = 0; + + if (w.config.chart.animations.animateGradually.enabled) { + delayFactor = w.config.chart.animations.animateGradually.delay; + } + + if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged && w.config.chart.type !== 'bar') { + // disabled due to this bug - https://github.com/apexcharts/vue-apexcharts/issues/75 + delayFactor = 0; + } + + me.morphSVG(el, realIndex, j, w.config.chart.type === 'line' && !w.globals.comboCharts ? 'stroke' : fill, pathFrom, pathTo, speed, delay * delayFactor); + } + }, { + key: "showDelayedElements", + value: function showDelayedElements() { + this.w.globals.delayedElements.forEach(function (d) { + var ele = d.el; + ele.classList.remove('apexcharts-element-hidden'); + }); + } + }, { + key: "animationCompleted", + value: function animationCompleted(el) { + var w = this.w; + if (w.globals.animationEnded) return; + w.globals.animationEnded = true; + this.showDelayedElements(); + + if (typeof w.config.chart.events.animationEnd === 'function') { + w.config.chart.events.animationEnd(this.ctx, { + el: el, + w: w + }); + } + } // SVG.js animation for morphing one path to another + + }, { + key: "morphSVG", + value: function morphSVG(el, realIndex, j, fill, pathFrom, pathTo, speed, delay) { + var _this = this; + + var w = this.w; + + if (!pathFrom) { + pathFrom = el.attr('pathFrom'); + } + + if (!pathTo) { + pathTo = el.attr('pathTo'); + } + + var disableAnimationForCorrupPath = function disableAnimationForCorrupPath(path) { + if (w.config.chart.type === 'radar') { + // radar chart drops the path to bottom and hence a corrup path looks ugly + // therefore, disable animation for such a case + speed = 1; + } + + return "M 0 ".concat(w.globals.gridHeight); + }; + + if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) { + pathFrom = disableAnimationForCorrupPath(); + } + + if (!pathTo || pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) { + pathTo = disableAnimationForCorrupPath(); + } + + if (!w.globals.shouldAnimate) { + speed = 1; + } + + el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () { + // a flag to indicate that the original mount function can return true now as animation finished here + if (Utils$1.isNumber(j)) { + if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) { + _this.animationCompleted(el); + } + } else if (fill !== 'none' && w.globals.shouldAnimate) { + if (!w.globals.comboCharts && realIndex === w.globals.series.length - 1 || w.globals.comboCharts) { + _this.animationCompleted(el); + } + } + + _this.showDelayedElements(); + }); + } + }]); + + return Animations; + }(); + + /** + * ApexCharts Filters Class for setting hover/active states on the paths. + * + * @module Formatters + **/ + + var Filters = /*#__PURE__*/function () { + function Filters(ctx) { + _classCallCheck(this, Filters); + + this.ctx = ctx; + this.w = ctx.w; + } // create a re-usable filter which can be appended other filter effects and applied to multiple elements + + + _createClass(Filters, [{ + key: "getDefaultFilter", + value: function getDefaultFilter(el, i) { + var w = this.w; + el.unfilter(true); + var filter = new window.SVG.Filter(); + filter.size('120%', '180%', '-5%', '-40%'); + + if (w.config.states.normal.filter !== 'none') { + this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value); + } else { + if (w.config.chart.dropShadow.enabled) { + this.dropShadow(el, w.config.chart.dropShadow, i); + } + } + } + }, { + key: "addNormalFilter", + value: function addNormalFilter(el, i) { + var w = this.w; // revert shadow if it was there + // but, ignore marker as marker don't have dropshadow yet + + if (w.config.chart.dropShadow.enabled && !el.node.classList.contains('apexcharts-marker')) { + this.dropShadow(el, w.config.chart.dropShadow, i); + } + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addLightenFilter", + value: function addLightenFilter(el, i, attrs) { + var _this = this; + + var w = this.w; + var intensity = attrs.intensity; + el.unfilter(true); + var filter = new window.SVG.Filter(); + el.filter(function (add) { + var shadowAttr = w.config.chart.dropShadow; + + if (shadowAttr.enabled) { + filter = _this.addShadow(add, i, shadowAttr); + } else { + filter = add; + } + + filter.componentTransfer({ + rgb: { + type: 'linear', + slope: 1.5, + intercept: intensity + } + }); + }); + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + + this._scaleFilterSize(el.filterer.node); + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addDarkenFilter", + value: function addDarkenFilter(el, i, attrs) { + var _this2 = this; + + var w = this.w; + var intensity = attrs.intensity; + el.unfilter(true); + var filter = new window.SVG.Filter(); + el.filter(function (add) { + var shadowAttr = w.config.chart.dropShadow; + + if (shadowAttr.enabled) { + filter = _this2.addShadow(add, i, shadowAttr); + } else { + filter = add; + } + + filter.componentTransfer({ + rgb: { + type: 'linear', + slope: intensity + } + }); + }); + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + + this._scaleFilterSize(el.filterer.node); + } + }, { + key: "applyFilter", + value: function applyFilter(el, i, filter) { + var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5; + + switch (filter) { + case 'none': + { + this.addNormalFilter(el, i); + break; + } + + case 'lighten': + { + this.addLightenFilter(el, i, { + intensity: intensity + }); + break; + } + + case 'darken': + { + this.addDarkenFilter(el, i, { + intensity: intensity + }); + break; + } + } + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addShadow", + value: function addShadow(add, i, attrs) { + var blur = attrs.blur, + top = attrs.top, + left = attrs.left, + color = attrs.color, + opacity = attrs.opacity; + var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source); + return add.blend(add.source, shadowBlur); + } // directly adds dropShadow to the element and returns the same element. + // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow + + }, { + key: "dropShadow", + value: function dropShadow(el, attrs) { + var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var top = attrs.top, + left = attrs.left, + blur = attrs.blur, + color = attrs.color, + opacity = attrs.opacity, + noUserSpaceOnUse = attrs.noUserSpaceOnUse; + var w = this.w; + el.unfilter(true); + + if (Utils$1.isIE() && w.config.chart.type === 'radialBar') { + // in radialbar charts, dropshadow is clipping actual drawing in IE + return el; + } + + color = Array.isArray(color) ? color[i] : color; + el.filter(function (add) { + var shadowBlur = null; + + if (Utils$1.isSafari() || Utils$1.isFirefox() || Utils$1.isIE()) { + // safari/firefox/IE have some alternative way to use this filter + shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur); + } else { + shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source); + } + + add.blend(add.source, shadowBlur); + }); + + if (!noUserSpaceOnUse) { + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + } + + this._scaleFilterSize(el.filterer.node); + + return el; + } + }, { + key: "setSelectionFilter", + value: function setSelectionFilter(el, realIndex, dataPointIndex) { + var w = this.w; + + if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') { + if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) { + el.node.setAttribute('selected', true); + var activeFilter = w.config.states.active.filter; + + if (activeFilter !== 'none') { + this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value); + } + } + } + } + }, { + key: "_scaleFilterSize", + value: function _scaleFilterSize(el) { + var setAttributes = function setAttributes(attrs) { + for (var key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]); + } + } + }; + + setAttributes({ + width: '200%', + height: '200%', + x: '-50%', + y: '-50%' + }); + } + }]); + + return Filters; + }(); + + /** + * ApexCharts Graphics Class for all drawing operations. + * + * @module Graphics + **/ + + var Graphics = /*#__PURE__*/function () { + function Graphics(ctx) { + _classCallCheck(this, Graphics); + + this.ctx = ctx; + this.w = ctx.w; + } + /***************************************************************************** + * * + * SVG Path Rounding Function * + * Copyright (C) 2014 Yona Appletree * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + * * + *****************************************************************************/ + + /** + * SVG Path rounding function. Takes an input path string and outputs a path + * string where all line-line corners have been rounded. Only supports absolute + * commands at the moment. + * + * @param pathString The SVG input path + * @param radius The amount to round the corners, either a value in the SVG + * coordinate space, or, if useFractionalRadius is true, a value + * from 0 to 1. + * @returns A new SVG path string with the rounding + */ + + + _createClass(Graphics, [{ + key: "roundPathCorners", + value: function roundPathCorners(pathString, radius) { + if (pathString.indexOf('NaN') > -1) pathString = ''; + + function moveTowardsLength(movingPoint, targetPoint, amount) { + var width = targetPoint.x - movingPoint.x; + var height = targetPoint.y - movingPoint.y; + var distance = Math.sqrt(width * width + height * height); + return moveTowardsFractional(movingPoint, targetPoint, Math.min(1, amount / distance)); + } + + function moveTowardsFractional(movingPoint, targetPoint, fraction) { + return { + x: movingPoint.x + (targetPoint.x - movingPoint.x) * fraction, + y: movingPoint.y + (targetPoint.y - movingPoint.y) * fraction + }; + } // Adjusts the ending position of a command + + + function adjustCommand(cmd, newPoint) { + if (cmd.length > 2) { + cmd[cmd.length - 2] = newPoint.x; + cmd[cmd.length - 1] = newPoint.y; + } + } // Gives an {x, y} object for a command's ending position + + + function pointForCommand(cmd) { + return { + x: parseFloat(cmd[cmd.length - 2]), + y: parseFloat(cmd[cmd.length - 1]) + }; + } // Split apart the path, handing concatonated letters and numbers + + + var pathParts = pathString.split(/[,\s]/).reduce(function (parts, part) { + var match = part.match('([a-zA-Z])(.+)'); + + if (match) { + parts.push(match[1]); + parts.push(match[2]); + } else { + parts.push(part); + } + + return parts; + }, []); // Group the commands with their arguments for easier handling + + var commands = pathParts.reduce(function (commands, part) { + if (parseFloat(part) == part && commands.length) { + commands[commands.length - 1].push(part); + } else { + commands.push([part]); + } + + return commands; + }, []); // The resulting commands, also grouped + + var resultCommands = []; + + if (commands.length > 1) { + var startPoint = pointForCommand(commands[0]); // Handle the close path case with a "virtual" closing line + + var virtualCloseLine = null; + + if (commands[commands.length - 1][0] == 'Z' && commands[0].length > 2) { + virtualCloseLine = ['L', startPoint.x, startPoint.y]; + commands[commands.length - 1] = virtualCloseLine; + } // We always use the first command (but it may be mutated) + + + resultCommands.push(commands[0]); + + for (var cmdIndex = 1; cmdIndex < commands.length; cmdIndex++) { + var prevCmd = resultCommands[resultCommands.length - 1]; + var curCmd = commands[cmdIndex]; // Handle closing case + + var nextCmd = curCmd == virtualCloseLine ? commands[1] : commands[cmdIndex + 1]; // Nasty logic to decide if this path is a candidite. + + if (nextCmd && prevCmd && prevCmd.length > 2 && curCmd[0] == 'L' && nextCmd.length > 2 && nextCmd[0] == 'L') { + // Calc the points we're dealing with + var prevPoint = pointForCommand(prevCmd); + var curPoint = pointForCommand(curCmd); + var nextPoint = pointForCommand(nextCmd); // The start and end of the cuve are just our point moved towards the previous and next points, respectivly + + var curveStart, curveEnd; + curveStart = moveTowardsLength(curPoint, prevPoint, radius); + curveEnd = moveTowardsLength(curPoint, nextPoint, radius); // Adjust the current command and add it + + adjustCommand(curCmd, curveStart); + curCmd.origPoint = curPoint; + resultCommands.push(curCmd); // The curve control points are halfway between the start/end of the curve and + // the original point + + var startControl = moveTowardsFractional(curveStart, curPoint, 0.5); + var endControl = moveTowardsFractional(curPoint, curveEnd, 0.5); // Create the curve + + var curveCmd = ['C', startControl.x, startControl.y, endControl.x, endControl.y, curveEnd.x, curveEnd.y]; // Save the original point for fractional calculations + + curveCmd.origPoint = curPoint; + resultCommands.push(curveCmd); + } else { + // Pass through commands that don't qualify + resultCommands.push(curCmd); + } + } // Fix up the starting point and restore the close path if the path was orignally closed + + + if (virtualCloseLine) { + var newStartPoint = pointForCommand(resultCommands[resultCommands.length - 1]); + resultCommands.push(['Z']); + adjustCommand(resultCommands[0], newStartPoint); + } + } else { + resultCommands = commands; + } + + return resultCommands.reduce(function (str, c) { + return str + c.join(' ') + ' '; + }, ''); + } + }, { + key: "drawLine", + value: function drawLine(x1, y1, x2, y2) { + var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8'; + var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + var strokeLineCap = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 'butt'; + var w = this.w; + var line = w.globals.dom.Paper.line().attr({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + stroke: lineColor, + 'stroke-dasharray': dashArray, + 'stroke-width': strokeWidth, + 'stroke-linecap': strokeLineCap + }); + return line; + } + }, { + key: "drawRect", + value: function drawRect() { + var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe'; + var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1; + var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; + var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null; + var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0; + var w = this.w; + var rect = w.globals.dom.Paper.rect(); + rect.attr({ + x: x1, + y: y1, + width: x2 > 0 ? x2 : 0, + height: y2 > 0 ? y2 : 0, + rx: radius, + ry: radius, + opacity: opacity, + 'stroke-width': strokeWidth !== null ? strokeWidth : 0, + stroke: strokeColor !== null ? strokeColor : 'none', + 'stroke-dasharray': strokeDashArray + }); // fix apexcharts.js#1410 + + rect.node.setAttribute('fill', color); + return rect; + } + }, { + key: "drawPolygon", + value: function drawPolygon(polygonString) { + var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1'; + var strokeWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var fill = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'none'; + var w = this.w; + var polygon = w.globals.dom.Paper.polygon(polygonString).attr({ + fill: fill, + stroke: stroke, + 'stroke-width': strokeWidth + }); + return polygon; + } + }, { + key: "drawCircle", + value: function drawCircle(radius) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var w = this.w; + if (radius < 0) radius = 0; + var c = w.globals.dom.Paper.circle(radius * 2); + + if (attrs !== null) { + c.attr(attrs); + } + + return c; + } + }, { + key: "drawPath", + value: function drawPath(_ref) { + var _ref$d = _ref.d, + d = _ref$d === void 0 ? '' : _ref$d, + _ref$stroke = _ref.stroke, + stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke, + _ref$strokeWidth = _ref.strokeWidth, + strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth, + fill = _ref.fill, + _ref$fillOpacity = _ref.fillOpacity, + fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity, + _ref$strokeOpacity = _ref.strokeOpacity, + strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity, + classes = _ref.classes, + _ref$strokeLinecap = _ref.strokeLinecap, + strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap, + _ref$strokeDashArray = _ref.strokeDashArray, + strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray; + var w = this.w; + + if (strokeLinecap === null) { + strokeLinecap = w.config.stroke.lineCap; + } + + if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) { + d = "M 0 ".concat(w.globals.gridHeight); + } + + var p = w.globals.dom.Paper.path(d).attr({ + fill: fill, + 'fill-opacity': fillOpacity, + stroke: stroke, + 'stroke-opacity': strokeOpacity, + 'stroke-linecap': strokeLinecap, + 'stroke-width': strokeWidth, + 'stroke-dasharray': strokeDashArray, + class: classes + }); + return p; + } + }, { + key: "group", + value: function group() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var w = this.w; + var g = w.globals.dom.Paper.group(); + + if (attrs !== null) { + g.attr(attrs); + } + + return g; + } + }, { + key: "move", + value: function move(x, y) { + var move = ['M', x, y].join(' '); + return move; + } + }, { + key: "line", + value: function line(x, y) { + var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var line = null; + + if (hORv === null) { + line = [' L', x, y].join(' '); + } else if (hORv === 'H') { + line = [' H', x].join(' '); + } else if (hORv === 'V') { + line = [' V', y].join(' '); + } + + return line; + } + }, { + key: "curve", + value: function curve(x1, y1, x2, y2, x, y) { + var curve = ['C', x1, y1, x2, y2, x, y].join(' '); + return curve; + } + }, { + key: "quadraticCurve", + value: function quadraticCurve(x1, y1, x, y) { + var curve = ['Q', x1, y1, x, y].join(' '); + return curve; + } + }, { + key: "arc", + value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) { + var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; + var coord = 'A'; + if (relative) coord = 'a'; + var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' '); + return arc; + } + /** + * @memberof Graphics + * @param {object} + * i = series's index + * realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't + * pathFrom = existing pathFrom to animateTo + * pathTo = new Path to which d attr will be animated from pathFrom to pathTo + * stroke = line Color + * strokeWidth = width of path Line + * fill = it can be gradient, single color, pattern or image + * animationDelay = how much to delay when starting animation (in milliseconds) + * dataChangeSpeed = for dynamic animations, when data changes + * className = class attribute to add + * @return {object} svg.js path object + **/ + + }, { + key: "renderPaths", + value: function renderPaths(_ref2) { + var j = _ref2.j, + realIndex = _ref2.realIndex, + pathFrom = _ref2.pathFrom, + pathTo = _ref2.pathTo, + stroke = _ref2.stroke, + strokeWidth = _ref2.strokeWidth, + strokeLinecap = _ref2.strokeLinecap, + fill = _ref2.fill, + animationDelay = _ref2.animationDelay, + initialSpeed = _ref2.initialSpeed, + dataChangeSpeed = _ref2.dataChangeSpeed, + className = _ref2.className, + _ref2$shouldClipToGri = _ref2.shouldClipToGrid, + shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri, + _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths, + bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat, + _ref2$drawShadow = _ref2.drawShadow, + drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow; + var w = this.w; + var filters = new Filters(this.ctx); + var anim = new Animations(this.ctx); + var initialAnim = this.w.config.chart.animations.enabled; + var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + var d; + var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate); + + if (shouldAnimate) { + d = pathFrom; + } else { + d = pathTo; + w.globals.animationEnded = true; + } + + var strokeDashArrayOpt = w.config.stroke.dashArray; + var strokeDashArray = 0; + + if (Array.isArray(strokeDashArrayOpt)) { + strokeDashArray = strokeDashArrayOpt[realIndex]; + } else { + strokeDashArray = w.config.stroke.dashArray; + } + + var el = this.drawPath({ + d: d, + stroke: stroke, + strokeWidth: strokeWidth, + fill: fill, + fillOpacity: 1, + classes: className, + strokeLinecap: strokeLinecap, + strokeDashArray: strokeDashArray + }); + el.attr('index', realIndex); + + if (shouldClipToGrid) { + el.attr({ + 'clip-path': "url(#gridRectMask".concat(w.globals.cuid, ")") + }); + } // const defaultFilter = el.filterer + + + if (w.config.states.normal.filter.type !== 'none') { + filters.getDefaultFilter(el, realIndex); + } else { + if (w.config.chart.dropShadow.enabled && drawShadow) { + if (!w.config.chart.dropShadow.enabledOnSeries || w.config.chart.dropShadow.enabledOnSeries && w.config.chart.dropShadow.enabledOnSeries.indexOf(realIndex) !== -1) { + var shadow = w.config.chart.dropShadow; + filters.dropShadow(el, shadow, realIndex); + } + } + } + + if (bindEventsOnPaths) { + el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el)); + el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el)); + el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el)); + } + + el.attr({ + pathTo: pathTo, + pathFrom: pathFrom + }); + var defaultAnimateOpts = { + el: el, + j: j, + realIndex: realIndex, + pathFrom: pathFrom, + pathTo: pathTo, + fill: fill, + strokeWidth: strokeWidth, + delay: animationDelay + }; + + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + anim.animatePathsGradually(_objectSpread2(_objectSpread2({}, defaultAnimateOpts), {}, { + speed: initialSpeed + })); + } else { + if (w.globals.resized || !w.globals.dataChanged) { + anim.showDelayedElements(); + } + } + + if (w.globals.dataChanged && dynamicAnim && shouldAnimate) { + anim.animatePathsGradually(_objectSpread2(_objectSpread2({}, defaultAnimateOpts), {}, { + speed: dataChangeSpeed + })); + } + + return el; + } + }, { + key: "drawPattern", + value: function drawPattern(style, width, height) { + var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8'; + var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var w = this.w; + var p = w.globals.dom.Paper.pattern(width, height, function (add) { + if (style === 'horizontalLines') { + add.line(0, 0, height, 0).stroke({ + color: stroke, + width: strokeWidth + 1 + }); + } else if (style === 'verticalLines') { + add.line(0, 0, 0, width).stroke({ + color: stroke, + width: strokeWidth + 1 + }); + } else if (style === 'slantedLines') { + add.line(0, 0, width, height).stroke({ + color: stroke, + width: strokeWidth + }); + } else if (style === 'squares') { + add.rect(width, height).fill('none').stroke({ + color: stroke, + width: strokeWidth + }); + } else if (style === 'circles') { + add.circle(width).fill('none').stroke({ + color: stroke, + width: strokeWidth + }); + } + }); + return p; + } + }, { + key: "drawGradient", + value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) { + var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; + var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0; + var w = this.w; + var g; + + if (gfrom.length < 9 && gfrom.indexOf('#') === 0) { + // if the hex contains alpha and is of 9 digit, skip the opacity + gfrom = Utils$1.hexToRgba(gfrom, opacityFrom); + } + + if (gto.length < 9 && gto.indexOf('#') === 0) { + gto = Utils$1.hexToRgba(gto, opacityTo); + } + + var stop1 = 0; + var stop2 = 1; + var stop3 = 1; + var stop4 = null; + + if (stops !== null) { + stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0; + stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1; + stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1; + stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null; + } + + var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'polarArea' || w.config.chart.type === 'bubble'); + + if (colorStops === null || colorStops.length === 0) { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) { + stop.at(stop1, gfrom, opacityFrom); + stop.at(stop2, gto, opacityTo); + stop.at(stop3, gto, opacityTo); + + if (stop4 !== null) { + stop.at(stop4, gfrom, opacityFrom); + } + }); + } else { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) { + var gradientStops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops; + gradientStops.forEach(function (s) { + stop.at(s.offset / 100, s.color, s.opacity); + }); + }); + } + + if (!radial) { + if (style === 'vertical') { + g.from(0, 0).to(0, 1); + } else if (style === 'diagonal') { + g.from(0, 0).to(1, 1); + } else if (style === 'horizontal') { + g.from(0, 1).to(1, 1); + } else if (style === 'diagonal2') { + g.from(1, 0).to(0, 1); + } + } else { + var offx = w.globals.gridWidth / 2; + var offy = w.globals.gridHeight / 2; + + if (w.config.chart.type !== 'bubble') { + g.attr({ + gradientUnits: 'userSpaceOnUse', + cx: offx, + cy: offy, + r: size + }); + } else { + g.attr({ + cx: 0.5, + cy: 0.5, + r: 0.8, + fx: 0.2, + fy: 0.2 + }); + } + } + + return g; + } + }, { + key: "getTextBasedOnMaxWidth", + value: function getTextBasedOnMaxWidth(_ref3) { + var text = _ref3.text, + maxWidth = _ref3.maxWidth, + fontSize = _ref3.fontSize, + fontFamily = _ref3.fontFamily; + var tRects = this.getTextRects(text, fontSize, fontFamily); + var wordWidth = tRects.width / text.length; + var wordsBasedOnWidth = Math.floor(maxWidth / wordWidth); + + if (maxWidth < tRects.width) { + return text.slice(0, wordsBasedOnWidth - 3) + '...'; + } + + return text; + } + }, { + key: "drawText", + value: function drawText(_ref4) { + var _this = this; + + var x = _ref4.x, + y = _ref4.y, + text = _ref4.text, + textAnchor = _ref4.textAnchor, + fontSize = _ref4.fontSize, + fontFamily = _ref4.fontFamily, + fontWeight = _ref4.fontWeight, + foreColor = _ref4.foreColor, + opacity = _ref4.opacity, + maxWidth = _ref4.maxWidth, + _ref4$cssClass = _ref4.cssClass, + cssClass = _ref4$cssClass === void 0 ? '' : _ref4$cssClass, + _ref4$isPlainText = _ref4.isPlainText, + isPlainText = _ref4$isPlainText === void 0 ? true : _ref4$isPlainText; + var w = this.w; + if (typeof text === 'undefined') text = ''; + var truncatedText = text; + + if (!textAnchor) { + textAnchor = 'start'; + } + + if (!foreColor || !foreColor.length) { + foreColor = w.config.chart.foreColor; + } + + fontFamily = fontFamily || w.config.chart.fontFamily; + fontSize = fontSize || '11px'; + fontWeight = fontWeight || 'regular'; + var commonProps = { + maxWidth: maxWidth, + fontSize: fontSize, + fontFamily: fontFamily + }; + var elText; + + if (Array.isArray(text)) { + elText = w.globals.dom.Paper.text(function (add) { + for (var i = 0; i < text.length; i++) { + truncatedText = text[i]; + + if (maxWidth) { + truncatedText = _this.getTextBasedOnMaxWidth(_objectSpread2({ + text: text[i] + }, commonProps)); + } + + i === 0 ? add.tspan(truncatedText) : add.tspan(truncatedText).newLine(); + } + }); + } else { + if (maxWidth) { + truncatedText = this.getTextBasedOnMaxWidth(_objectSpread2({ + text: text + }, commonProps)); + } + + elText = isPlainText ? w.globals.dom.Paper.plain(text) : w.globals.dom.Paper.text(function (add) { + return add.tspan(truncatedText); + }); + } + + elText.attr({ + x: x, + y: y, + 'text-anchor': textAnchor, + 'dominant-baseline': 'auto', + 'font-size': fontSize, + 'font-family': fontFamily, + 'font-weight': fontWeight, + fill: foreColor, + class: 'apexcharts-text ' + cssClass + }); + elText.node.style.fontFamily = fontFamily; + elText.node.style.opacity = opacity; + return elText; + } + }, { + key: "drawMarker", + value: function drawMarker(x, y, opts) { + x = x || 0; + var size = opts.pSize || 0; + var elPoint = null; + + if (opts.shape === 'square' || opts.shape === 'rect') { + var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius; + + if (y === null || !size) { + size = 0; + radius = 0; + } + + var nSize = size * 1.2 + radius; + var p = this.drawRect(nSize, nSize, nSize, nSize, radius); + p.attr({ + x: x - nSize / 2, + y: y - nSize / 2, + cx: x, + cy: y, + class: opts.class ? opts.class : '', + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + stroke: opts.pointStrokeColor, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }); + elPoint = p; + } else if (opts.shape === 'circle' || !opts.shape) { + if (!Utils$1.isNumber(y)) { + size = 0; + y = 0; + } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2 + + + elPoint = this.drawCircle(size, { + cx: x, + cy: y, + class: opts.class ? opts.class : '', + stroke: opts.pointStrokeColor, + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }); + } + + return elPoint; + } + }, { + key: "pathMouseEnter", + value: function pathMouseEnter(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + + if (typeof w.config.chart.events.dataPointMouseEnter === 'function') { + w.config.chart.events.dataPointMouseEnter(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + this.ctx.events.fireEvent('dataPointMouseEnter', [e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return; + } + } + + if (w.config.states.hover.filter.type !== 'none') { + if (!w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } + } + } + }, { + key: "pathMouseLeave", + value: function pathMouseLeave(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + + if (typeof w.config.chart.events.dataPointMouseLeave === 'function') { + w.config.chart.events.dataPointMouseLeave(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + this.ctx.events.fireEvent('dataPointMouseLeave', [e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return; + } + } + + if (w.config.states.hover.filter.type !== 'none') { + filters.getDefaultFilter(path, i); + } + } + }, { + key: "pathMouseDown", + value: function pathMouseDown(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + var selected = 'false'; + + if (path.node.getAttribute('selected') === 'true') { + path.node.setAttribute('selected', 'false'); + + if (w.globals.selectedDataPoints[i].indexOf(j) > -1) { + var index = w.globals.selectedDataPoints[i].indexOf(j); + w.globals.selectedDataPoints[i].splice(index, 1); + } + } else { + if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) { + w.globals.selectedDataPoints = []; + var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members; + var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members; + + var deSelect = function deSelect(els) { + Array.prototype.forEach.call(els, function (el) { + el.node.setAttribute('selected', 'false'); + filters.getDefaultFilter(el, i); + }); + }; + + deSelect(elPaths); + deSelect(elCircles); + } + + path.node.setAttribute('selected', 'true'); + selected = 'true'; + + if (typeof w.globals.selectedDataPoints[i] === 'undefined') { + w.globals.selectedDataPoints[i] = []; + } + + w.globals.selectedDataPoints[i].push(j); + } + + if (selected === 'true') { + var activeFilter = w.config.states.active.filter; + + if (activeFilter !== 'none') { + filters.applyFilter(path, i, activeFilter.type, activeFilter.value); + } else { + // Reapply the hover filter in case it was removed by `deselect`when there is no active filter and it is not a touch device + if (w.config.states.hover.filter !== 'none') { + if (!w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } + } + } + } else { + // If the item was deselected, apply hover state filter if it is not a touch device + if (w.config.states.active.filter.type !== 'none') { + if (w.config.states.hover.filter.type !== 'none' && !w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } else { + filters.getDefaultFilter(path, i); + } + } + } + + if (typeof w.config.chart.events.dataPointSelection === 'function') { + w.config.chart.events.dataPointSelection(e, this.ctx, { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + if (e) { + this.ctx.events.fireEvent('dataPointSelection', [e, this.ctx, { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + } + } + }, { + key: "rotateAroundCenter", + value: function rotateAroundCenter(el) { + var coord = {}; + + if (el && typeof el.getBBox === 'function') { + coord = el.getBBox(); + } + + var x = coord.x + coord.width / 2; + var y = coord.y + coord.height / 2; + return { + x: x, + y: y + }; + } + }, { + key: "getTextRects", + value: function getTextRects(text, fontSize, fontFamily, transform) { + var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var w = this.w; + var virtualText = this.drawText({ + x: -200, + y: -200, + text: text, + textAnchor: 'start', + fontSize: fontSize, + fontFamily: fontFamily, + foreColor: '#fff', + opacity: 0 + }); + + if (transform) { + virtualText.attr('transform', transform); + } + + w.globals.dom.Paper.add(virtualText); + var rect = virtualText.bbox(); + + if (!useBBox) { + rect = virtualText.node.getBoundingClientRect(); + } + + virtualText.remove(); + return { + width: rect.width, + height: rect.height + }; + } + /** + * append ... to long text + * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg + * @memberof Graphics + **/ + + }, { + key: "placeTextWithEllipsis", + value: function placeTextWithEllipsis(textObj, textString, width) { + if (typeof textObj.getComputedTextLength !== 'function') return; + textObj.textContent = textString; + + if (textString.length > 0) { + // ellipsis is needed + if (textObj.getComputedTextLength() >= width / 1.1) { + for (var x = textString.length - 3; x > 0; x -= 3) { + if (textObj.getSubStringLength(0, x) <= width / 1.1) { + textObj.textContent = textString.substring(0, x) + '...'; + return; + } + } + + textObj.textContent = '.'; // can't place at all + } + } + } + }], [{ + key: "setAttrs", + value: function setAttrs(el, attrs) { + for (var key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]); + } + } + } + }]); + + return Graphics; + }(); + + /* + ** Util functions which are dependent on ApexCharts instance + */ + var CoreUtils = /*#__PURE__*/function () { + function CoreUtils(ctx) { + _classCallCheck(this, CoreUtils); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(CoreUtils, [{ + key: "getStackedSeriesTotals", + value: + /** + * @memberof CoreUtils + * returns the sum of all individual values in a multiple stacked series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [34,36,48,13] + **/ + function getStackedSeriesTotals() { + var excludedSeriesIndices = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var w = this.w; + var total = []; + if (w.globals.series.length === 0) return total; + + for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) { + var t = 0; + + for (var j = 0; j < w.globals.series.length; j++) { + if (typeof w.globals.series[j][i] !== 'undefined' && excludedSeriesIndices.indexOf(j) === -1) { + t += w.globals.series[j][i]; + } + } + + total.push(t); + } + + return total; + } // get total of the all values inside all series + + }, { + key: "getSeriesTotalByIndex", + value: function getSeriesTotalByIndex() { + var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + if (index === null) { + // non-plot chart types - pie / donut / circle + return this.w.config.series.reduce(function (acc, cur) { + return acc + cur; + }, 0); + } else { + // axis charts - supporting multiple series + return this.w.globals.series[index].reduce(function (acc, cur) { + return acc + cur; + }, 0); + } + } + }, { + key: "isSeriesNull", + value: function isSeriesNull() { + var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var r = []; + + if (index === null) { + // non-plot chart types - pie / donut / circle + r = this.w.config.series.filter(function (d) { + return d !== null; + }); + } else { + // axis charts - supporting multiple series + r = this.w.config.series[index].data.filter(function (d) { + return d !== null; + }); + } + + return r.length === 0; + } + }, { + key: "seriesHaveSameValues", + value: function seriesHaveSameValues(index) { + return this.w.globals.series[index].every(function (val, i, arr) { + return val === arr[0]; + }); + } + }, { + key: "getCategoryLabels", + value: function getCategoryLabels(labels) { + var w = this.w; + var catLabels = labels.slice(); + + if (w.config.xaxis.convertedCatToNumeric) { + catLabels = labels.map(function (i, li) { + return w.config.xaxis.labels.formatter(i - w.globals.minX + 1); + }); + } + + return catLabels; + } // maxValsInArrayIndex is the index of series[] which has the largest number of items + + }, { + key: "getLargestSeries", + value: function getLargestSeries() { + var w = this.w; + w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) { + return a.length; + }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) { + return a.length; + }))); + } + }, { + key: "getLargestMarkerSize", + value: function getLargestMarkerSize() { + var w = this.w; + var size = 0; + w.globals.markers.size.forEach(function (m) { + size = Math.max(size, m); + }); + + if (w.config.markers.discrete && w.config.markers.discrete.length) { + w.config.markers.discrete.forEach(function (m) { + size = Math.max(size, m.size); + }); + } + + if (size > 0) { + size += w.config.markers.hover.sizeOffset + 1; + } + + w.globals.markers.largestSize = size; + return size; + } + /** + * @memberof Core + * returns the sum of all values in a series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [120, 11] + **/ + + }, { + key: "getSeriesTotals", + value: function getSeriesTotals() { + var w = this.w; + w.globals.seriesTotals = w.globals.series.map(function (ser, index) { + var total = 0; + + if (Array.isArray(ser)) { + for (var j = 0; j < ser.length; j++) { + total += ser[j]; + } + } else { + // for pie/donuts/gauges + total += ser; + } + + return total; + }); + } + }, { + key: "getSeriesTotalsXRange", + value: function getSeriesTotalsXRange(minX, maxX) { + var w = this.w; + var seriesTotalsXRange = w.globals.series.map(function (ser, index) { + var total = 0; + + for (var j = 0; j < ser.length; j++) { + if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) { + total += ser[j]; + } + } + + return total; + }); + return seriesTotalsXRange; + } + /** + * @memberof CoreUtils + * returns the percentage value of all individual values which can be used in a 100% stacked series + * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]] + * @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]] + **/ + + }, { + key: "getPercentSeries", + value: function getPercentSeries() { + var w = this.w; + w.globals.seriesPercent = w.globals.series.map(function (ser, index) { + var seriesPercent = []; + + if (Array.isArray(ser)) { + for (var j = 0; j < ser.length; j++) { + var total = w.globals.stackedSeriesTotals[j]; + var percent = 0; + + if (total) { + percent = 100 * ser[j] / total; + } + + seriesPercent.push(percent); + } + } else { + var _total = w.globals.seriesTotals.reduce(function (acc, val) { + return acc + val; + }, 0); + + var _percent = 100 * ser / _total; + + seriesPercent.push(_percent); + } + + return seriesPercent; + }); + } + }, { + key: "getCalculatedRatios", + value: function getCalculatedRatios() { + var gl = this.w.globals; + var yRatio = []; + var invertedYRatio = 0; + var xRatio = 0; + var initialXRatio = 0; + var invertedXRatio = 0; + var zRatio = 0; + var baseLineY = []; + var baseLineInvertedY = 0.1; + var baseLineX = 0; + gl.yRange = []; + + if (gl.isMultipleYAxis) { + for (var i = 0; i < gl.minYArr.length; i++) { + gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i])); + baseLineY.push(0); + } + } else { + gl.yRange.push(Math.abs(gl.minY - gl.maxY)); + } + + gl.xRange = Math.abs(gl.maxX - gl.minX); + gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis + + for (var _i = 0; _i < gl.yRange.length; _i++) { + yRatio.push(gl.yRange[_i] / gl.gridHeight); + } + + xRatio = gl.xRange / gl.gridWidth; + initialXRatio = Math.abs(gl.initialMaxX - gl.initialMinX) / gl.gridWidth; + invertedYRatio = gl.yRange / gl.gridWidth; + invertedXRatio = gl.xRange / gl.gridHeight; + zRatio = gl.zRange / gl.gridHeight * 16; + + if (!zRatio) { + zRatio = 1; + } + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + // Negative numbers present in series + gl.hasNegs = true; + } + + if (gl.isMultipleYAxis) { + baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives + + for (var _i2 = 0; _i2 < yRatio.length; _i2++) { + baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]); + } + } else { + baseLineY.push(-gl.minY / yRatio[0]); + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart + + baseLineX = gl.minX / xRatio; + } + } + + return { + yRatio: yRatio, + invertedYRatio: invertedYRatio, + zRatio: zRatio, + xRatio: xRatio, + initialXRatio: initialXRatio, + invertedXRatio: invertedXRatio, + baseLineInvertedY: baseLineInvertedY, + baseLineY: baseLineY, + baseLineX: baseLineX + }; + } + }, { + key: "getLogSeries", + value: function getLogSeries(series) { + var _this = this; + + var w = this.w; + w.globals.seriesLog = series.map(function (s, i) { + if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) { + return s.map(function (d) { + if (d === null) return null; + return _this.getLogVal(w.config.yaxis[i].logBase, d, i); + }); + } else { + return s; + } + }); + return w.globals.invalidLogScale ? series : w.globals.seriesLog; + } + }, { + key: "getBaseLog", + value: function getBaseLog(base, value) { + return Math.log(value) / Math.log(base); + } + }, { + key: "getLogVal", + value: function getLogVal(b, d, yIndex) { + if (d === 0) { + return 0; + } + + var w = this.w; + var min_log_val = w.globals.minYArr[yIndex] === 0 ? -1 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.minYArr[yIndex]); + var max_log_val = w.globals.maxYArr[yIndex] === 0 ? 0 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.maxYArr[yIndex]); + var number_of_height_levels = max_log_val - min_log_val; + if (d < 1) return d / number_of_height_levels; + var log_height_value = this.getBaseLog(b, d) - min_log_val; + return log_height_value / number_of_height_levels; + } + }, { + key: "getLogYRatios", + value: function getLogYRatios(yRatio) { + var _this2 = this; + + var w = this.w; + var gl = this.w.globals; + gl.yLogRatio = yRatio.slice(); + gl.logYRange = gl.yRange.map(function (yRange, i) { + if (w.config.yaxis[i] && _this2.w.config.yaxis[i].logarithmic) { + var maxY = -Number.MAX_VALUE; + var minY = Number.MIN_VALUE; + var range = 1; + gl.seriesLog.forEach(function (s, si) { + s.forEach(function (v) { + if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) { + maxY = Math.max(v, maxY); + minY = Math.min(v, minY); + } + }); + }); + range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]); + gl.yLogRatio[i] = range / gl.gridHeight; + return range; + } + }); + return gl.invalidLogScale ? yRatio.slice() : gl.yLogRatio; + } // Some config objects can be array - and we need to extend them correctly + + }], [{ + key: "checkComboSeries", + value: function checkComboSeries(series) { + var comboCharts = false; + var comboBarCount = 0; + var comboCount = 0; // if user specified a type in series too, turn on comboCharts flag + + if (series.length && typeof series[0].type !== 'undefined') { + series.forEach(function (s) { + if (s.type === 'bar' || s.type === 'column' || s.type === 'candlestick' || s.type === 'boxPlot') { + comboBarCount++; + } + + if (typeof s.type !== 'undefined') { + comboCount++; + } + }); + } + + if (comboCount > 0) { + comboCharts = true; + } + + return { + comboBarCount: comboBarCount, + comboCharts: comboCharts + }; + } + }, { + key: "extendArrayProps", + value: function extendArrayProps(configInstance, options, w) { + if (options.yaxis) { + options = configInstance.extendYAxis(options, w); + } + + if (options.annotations) { + if (options.annotations.yaxis) { + options = configInstance.extendYAxisAnnotations(options); + } + + if (options.annotations.xaxis) { + options = configInstance.extendXAxisAnnotations(options); + } + + if (options.annotations.points) { + options = configInstance.extendPointAnnotations(options); + } + } + + return options; + } + }]); + + return CoreUtils; + }(); + + var Helpers$4 = /*#__PURE__*/function () { + function Helpers(annoCtx) { + _classCallCheck(this, Helpers); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + } + + _createClass(Helpers, [{ + key: "setOrientations", + value: function setOrientations(anno) { + var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var w = this.w; + + if (anno.label.orientation === 'vertical') { + var i = annoIndex !== null ? annoIndex : 0; + var xAnno = w.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(i, "']")); + + if (xAnno !== null) { + var xAnnoCoord = xAnno.getBoundingClientRect(); + xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4); + + if (anno.label.position === 'top') { + xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width); + } else { + xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width); + } + + var annoRotatingCenter = this.annoCtx.graphics.rotateAroundCenter(xAnno); + var x = annoRotatingCenter.x; + var y = annoRotatingCenter.y; + xAnno.setAttribute('transform', "rotate(-90 ".concat(x, " ").concat(y, ")")); + } + } + } + }, { + key: "addBackgroundToAnno", + value: function addBackgroundToAnno(annoEl, anno) { + var w = this.w; + if (!annoEl || typeof anno.label.text === 'undefined' || typeof anno.label.text !== 'undefined' && !String(anno.label.text).trim()) return null; + var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect(); + var coords = annoEl.getBoundingClientRect(); + var pleft = anno.label.style.padding.left; + var pright = anno.label.style.padding.right; + var ptop = anno.label.style.padding.top; + var pbottom = anno.label.style.padding.bottom; + + if (anno.label.orientation === 'vertical') { + ptop = anno.label.style.padding.left; + pbottom = anno.label.style.padding.right; + pleft = anno.label.style.padding.top; + pright = anno.label.style.padding.bottom; + } + + var x1 = coords.left - elGridRect.left - pleft; + var y1 = coords.top - elGridRect.top - ptop; + var elRect = this.annoCtx.graphics.drawRect(x1 - w.globals.barPadForNumericAxis, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, anno.label.borderRadius, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0); + + if (anno.id) { + // don't escapeString for this ID as it causes duplicate rects + elRect.node.classList.add(anno.id); + } + + return elRect; + } + }, { + key: "annotationsBackground", + value: function annotationsBackground() { + var _this = this; + + var w = this.w; + + var add = function add(anno, i, type) { + var annoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(i, "']")); + + if (annoLabel) { + var parent = annoLabel.parentNode; + + var elRect = _this.addBackgroundToAnno(annoLabel, anno); + + if (elRect) { + parent.insertBefore(elRect.node, annoLabel); + + if (anno.label.mouseEnter) { + elRect.node.addEventListener('mouseenter', anno.label.mouseEnter.bind(_this, anno)); + } + + if (anno.label.mouseLeave) { + elRect.node.addEventListener('mouseleave', anno.label.mouseLeave.bind(_this, anno)); + } + + if (anno.label.click) { + elRect.node.addEventListener('click', anno.label.click.bind(_this, anno)); + } + } + } + }; + + w.config.annotations.xaxis.map(function (anno, i) { + add(anno, i, 'xaxis'); + }); + w.config.annotations.yaxis.map(function (anno, i) { + add(anno, i, 'yaxis'); + }); + w.config.annotations.points.map(function (anno, i) { + add(anno, i, 'point'); + }); + } + }, { + key: "getY1Y2", + value: function getY1Y2(type, anno) { + var y = type === 'y1' ? anno.y : anno.y2; + var yP; + var w = this.w; + + if (this.annoCtx.invertAxis) { + var catIndex = w.globals.labels.indexOf(y); + + if (w.config.xaxis.convertedCatToNumeric) { + catIndex = w.globals.categoryLabels.indexOf(y); + } + + var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')'); + + if (xLabel) { + yP = parseFloat(xLabel.getAttribute('y')); + } + } else { + var yPos; + + if (w.config.yaxis[anno.yAxisIndex].logarithmic) { + var coreUtils = new CoreUtils(this.annoCtx.ctx); + y = coreUtils.getLogVal(y, anno.yAxisIndex); + yPos = y / w.globals.yLogRatio[anno.yAxisIndex]; + } else { + yPos = (y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight); + } + + yP = w.globals.gridHeight - yPos; + + if (anno.marker && (anno.y === undefined || anno.y === null)) { + // point annotation + yP = 0; + } + + if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) { + yP = yPos; + } + } + + if (typeof y === 'string' && y.indexOf('px') > -1) { + yP = parseFloat(y); + } + + return yP; + } + }, { + key: "getX1X2", + value: function getX1X2(type, anno) { + var w = this.w; + var min = this.annoCtx.invertAxis ? w.globals.minY : w.globals.minX; + var max = this.annoCtx.invertAxis ? w.globals.maxY : w.globals.maxX; + var range = this.annoCtx.invertAxis ? w.globals.yRange[0] : w.globals.xRange; + var x1 = (anno.x - min) / (range / w.globals.gridWidth); + + if (this.annoCtx.inversedReversedAxis) { + x1 = (max - anno.x) / (range / w.globals.gridWidth); + } + + if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.annoCtx.invertAxis && !w.globals.dataFormatXNumeric) { + x1 = this.getStringX(anno.x); + } + + var x2 = (anno.x2 - min) / (range / w.globals.gridWidth); + + if (this.annoCtx.inversedReversedAxis) { + x2 = (max - anno.x2) / (range / w.globals.gridWidth); + } + + if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.annoCtx.invertAxis && !w.globals.dataFormatXNumeric) { + x2 = this.getStringX(anno.x2); + } + + if ((anno.x === undefined || anno.x === null) && anno.marker) { + // point annotation in a horizontal chart + x1 = w.globals.gridWidth; + } + + if (type === 'x1' && typeof anno.x === 'string' && anno.x.indexOf('px') > -1) { + x1 = parseFloat(anno.x); + } + + if (type === 'x2' && typeof anno.x2 === 'string' && anno.x2.indexOf('px') > -1) { + x2 = parseFloat(anno.x2); + } + + return type === 'x1' ? x1 : x2; + } + }, { + key: "getStringX", + value: function getStringX(x) { + var w = this.w; + var rX = x; + + if (w.config.xaxis.convertedCatToNumeric && w.globals.categoryLabels.length) { + x = w.globals.categoryLabels.indexOf(x) + 1; + } + + var catIndex = w.globals.labels.indexOf(x); + var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')'); + + if (xLabel) { + rX = parseFloat(xLabel.getAttribute('x')); + } + + return rX; + } + }]); + + return Helpers; + }(); + + var XAnnotations = /*#__PURE__*/function () { + function XAnnotations(annoCtx) { + _classCallCheck(this, XAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.invertAxis = this.annoCtx.invertAxis; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(XAnnotations, [{ + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(anno, parent, index) { + var w = this.w; + var x1 = this.helpers.getX1X2('x1', anno); + var x2; + var text = anno.label.text; + var strokeDashArray = anno.strokeDashArray; + if (!Utils$1.isNumber(x1)) return; + + if (anno.x2 === null || typeof anno.x2 === 'undefined') { + var line = this.annoCtx.graphics.drawLine(x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x1 + anno.offsetX, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, //dashArray + anno.borderWidth); + parent.appendChild(line.node); + + if (anno.id) { + line.node.classList.add(anno.id); + } + } else { + x2 = this.helpers.getX1X2('x2', anno); + + if (x2 < x1) { + var temp = x1; + x1 = x2; + x2 = temp; + } + + var rect = this.annoCtx.graphics.drawRect(x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x2 - x1, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ); + rect.node.classList.add('apexcharts-annotation-rect'); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + parent.appendChild(rect.node); + + if (anno.id) { + rect.node.classList.add(anno.id); + } + } + + var textRects = this.annoCtx.graphics.getTextRects(text, parseFloat(anno.label.style.fontSize)); + var textY = anno.label.position === 'top' ? 4 : anno.label.position === 'center' ? w.globals.gridHeight / 2 + (anno.label.orientation === 'vertical' ? textRects.width / 2 : 0) : w.globals.gridHeight; + var elText = this.annoCtx.graphics.drawText({ + x: x1 + anno.label.offsetX, + y: textY + anno.label.offsetY - (anno.label.orientation === 'vertical' ? anno.label.position === 'top' ? textRects.width / 2 - 12 : -textRects.width / 2 : 0), + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-xaxis-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations + + this.annoCtx.helpers.setOrientations(anno, index); + } + }, { + key: "drawXAxisAnnotations", + value: function drawXAxisAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-xaxis-annotations' + }); + w.config.annotations.xaxis.map(function (anno, index) { + _this.addXaxisAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return XAnnotations; + }(); + + var YAnnotations = /*#__PURE__*/function () { + function YAnnotations(annoCtx) { + _classCallCheck(this, YAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(YAnnotations, [{ + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(anno, parent, index) { + var w = this.w; + var strokeDashArray = anno.strokeDashArray; + var y1 = this.helpers.getY1Y2('y1', anno); + var y2; + var text = anno.label.text; + + if (anno.y2 === null || typeof anno.y2 === 'undefined') { + var line = this.annoCtx.graphics.drawLine(0 + anno.offsetX, // x1 + y1 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, // dashArray + anno.borderWidth); + parent.appendChild(line.node); + + if (anno.id) { + line.node.classList.add(anno.id); + } + } else { + y2 = this.helpers.getY1Y2('y2', anno); + + if (y2 > y1) { + var temp = y1; + y1 = y2; + y2 = temp; + } + + var rect = this.annoCtx.graphics.drawRect(0 + anno.offsetX, // x1 + y2 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 - y2, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ); + rect.node.classList.add('apexcharts-annotation-rect'); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + parent.appendChild(rect.node); + + if (anno.id) { + rect.node.classList.add(anno.id); + } + } + + var textX = anno.label.position === 'right' ? w.globals.gridWidth : anno.label.position === 'center' ? w.globals.gridWidth / 2 : 0; + var elText = this.annoCtx.graphics.drawText({ + x: textX + anno.label.offsetX, + y: (y2 != null ? y2 : y1) + anno.label.offsetY - 3, + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-yaxis-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); + } + }, { + key: "_getYAxisAnnotationWidth", + value: function _getYAxisAnnotationWidth(anno) { + // issue apexcharts.js#2009 + var w = this.w; + var width = w.globals.gridWidth; + + if (anno.width.indexOf('%') > -1) { + width = w.globals.gridWidth * parseInt(anno.width, 10) / 100; + } else { + width = parseInt(anno.width, 10); + } + + return width + anno.offsetX; + } + }, { + key: "drawYAxisAnnotations", + value: function drawYAxisAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-yaxis-annotations' + }); + w.config.annotations.yaxis.map(function (anno, index) { + _this.addYaxisAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return YAnnotations; + }(); + + var PointAnnotations = /*#__PURE__*/function () { + function PointAnnotations(annoCtx) { + _classCallCheck(this, PointAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(PointAnnotations, [{ + key: "addPointAnnotation", + value: function addPointAnnotation(anno, parent, index) { + this.w; + var x = this.helpers.getX1X2('x1', anno); + var y = this.helpers.getY1Y2('y1', anno); + if (!Utils$1.isNumber(x)) return; + var optsPoints = { + pSize: anno.marker.size, + pointStrokeWidth: anno.marker.strokeWidth, + pointFillColor: anno.marker.fillColor, + pointStrokeColor: anno.marker.strokeColor, + shape: anno.marker.shape, + pRadius: anno.marker.radius, + class: "apexcharts-point-annotation-marker ".concat(anno.marker.cssClass, " ").concat(anno.id ? anno.id : '') + }; + var point = this.annoCtx.graphics.drawMarker(x + anno.marker.offsetX, y + anno.marker.offsetY, optsPoints); + parent.appendChild(point.node); + var text = anno.label.text ? anno.label.text : ''; + var elText = this.annoCtx.graphics.drawText({ + x: x + anno.label.offsetX, + y: y + anno.label.offsetY - anno.marker.size - parseFloat(anno.label.style.fontSize) / 1.6, + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-point-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); // TODO: deprecate this as we will use custom + + if (anno.customSVG.SVG) { + var g = this.annoCtx.graphics.group({ + class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass + }); + g.attr({ + transform: "translate(".concat(x + anno.customSVG.offsetX, ", ").concat(y + anno.customSVG.offsetY, ")") + }); + g.node.innerHTML = anno.customSVG.SVG; + parent.appendChild(g.node); + } + + if (anno.image.path) { + var imgWidth = anno.image.width ? anno.image.width : 20; + var imgHeight = anno.image.height ? anno.image.height : 20; + point = this.annoCtx.addImage({ + x: x + anno.image.offsetX - imgWidth / 2, + y: y + anno.image.offsetY - imgHeight / 2, + width: imgWidth, + height: imgHeight, + path: anno.image.path, + appendTo: '.apexcharts-point-annotations' + }); + } + + if (anno.mouseEnter) { + point.node.addEventListener('mouseenter', anno.mouseEnter.bind(this, anno)); + } + + if (anno.mouseLeave) { + point.node.addEventListener('mouseleave', anno.mouseLeave.bind(this, anno)); + } + + if (anno.click) { + point.node.addEventListener('click', anno.click.bind(this, anno)); + } + } + }, { + key: "drawPointAnnotations", + value: function drawPointAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-point-annotations' + }); + w.config.annotations.points.map(function (anno, index) { + _this.addPointAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return PointAnnotations; + }(); + + const name = "en"; + const options = { + months: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + shortMonths: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + days: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + shortDays: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + toolbar: { + exportToSVG: "Download SVG", + exportToPNG: "Download PNG", + exportToCSV: "Download CSV", + menu: "Menu", + selection: "Selection", + selectionZoom: "Selection Zoom", + zoomIn: "Zoom In", + zoomOut: "Zoom Out", + pan: "Panning", + reset: "Reset Zoom" + } + }; + var en = { + name: name, + options: options + }; + + var Options = /*#__PURE__*/function () { + function Options() { + _classCallCheck(this, Options); + + this.yAxis = { + show: true, + showAlways: false, + showForNullSeries: true, + seriesName: undefined, + opposite: false, + reversed: false, + logarithmic: false, + logBase: 10, + tickAmount: undefined, + forceNiceScale: false, + max: undefined, + min: undefined, + floating: false, + decimalsInFloat: undefined, + labels: { + show: true, + minWidth: 0, + maxWidth: 160, + offsetX: 0, + offsetY: 0, + align: undefined, + rotate: 0, + padding: 20, + style: { + colors: [], + fontSize: '11px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + formatter: undefined + }, + axisBorder: { + show: false, + color: '#e0e0e0', + width: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: false, + color: '#e0e0e0', + width: 6, + offsetX: 0, + offsetY: 0 + }, + title: { + text: undefined, + rotate: -90, + offsetY: 0, + offsetX: 0, + style: { + color: undefined, + fontSize: '11px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + tooltip: { + enabled: false, + offsetX: 0 + }, + crosshairs: { + show: true, + position: 'front', + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 0 + } + } + }; + this.pointAnnotation = { + id: undefined, + x: 0, + y: null, + yAxisIndex: 0, + seriesIndex: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + marker: { + size: 4, + fillColor: '#fff', + strokeWidth: 2, + strokeColor: '#333', + shape: 'circle', + offsetX: 0, + offsetY: 0, + radius: 2, + cssClass: '' + }, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + }, + customSVG: { + // this will be deprecated in the next major version as it is going to be replaced with a better alternative below + SVG: undefined, + cssClass: undefined, + offsetX: 0, + offsetY: 0 + }, + image: { + path: undefined, + width: 20, + height: 20, + offsetX: 0, + offsetY: 0 + } + }; + this.yAxisAnnotation = { + id: undefined, + y: 0, + y2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + width: '100%', + yAxisIndex: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'end', + position: 'right', + offsetX: 0, + offsetY: -3, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + }; + this.xAxisAnnotation = { + id: undefined, + x: 0, + x2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + orientation: 'vertical', + position: 'top', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + }; + this.text = { + x: 0, + y: 0, + text: '', + textAnchor: 'start', + foreColor: undefined, + fontSize: '13px', + fontFamily: undefined, + fontWeight: 400, + appendTo: '.apexcharts-annotations', + backgroundColor: 'transparent', + borderColor: '#c2c2c2', + borderRadius: 0, + borderWidth: 0, + paddingLeft: 4, + paddingRight: 4, + paddingTop: 2, + paddingBottom: 2 + }; + } + + _createClass(Options, [{ + key: "init", + value: function init() { + return { + annotations: { + yaxis: [this.yAxisAnnotation], + xaxis: [this.xAxisAnnotation], + points: [this.pointAnnotation], + texts: [], + images: [], + shapes: [] + }, + chart: { + animations: { + enabled: true, + easing: 'easeinout', + // linear, easeout, easein, easeinout, swing, bounce, elastic + speed: 800, + animateGradually: { + delay: 150, + enabled: true + }, + dynamicAnimation: { + enabled: true, + speed: 350 + } + }, + background: 'transparent', + locales: [en], + defaultLocale: 'en', + dropShadow: { + enabled: false, + enabledOnSeries: undefined, + top: 2, + left: 2, + blur: 4, + color: '#000', + opacity: 0.35 + }, + events: { + animationEnd: undefined, + beforeMount: undefined, + mounted: undefined, + updated: undefined, + click: undefined, + mouseMove: undefined, + mouseLeave: undefined, + xAxisLabelClick: undefined, + legendClick: undefined, + markerClick: undefined, + selection: undefined, + dataPointSelection: undefined, + dataPointMouseEnter: undefined, + dataPointMouseLeave: undefined, + beforeZoom: undefined, + beforeResetZoom: undefined, + zoomed: undefined, + scrolled: undefined, + brushScrolled: undefined + }, + foreColor: '#373d3f', + fontFamily: 'Helvetica, Arial, sans-serif', + height: 'auto', + parentHeightOffset: 15, + redrawOnParentResize: true, + redrawOnWindowResize: true, + id: undefined, + group: undefined, + offsetX: 0, + offsetY: 0, + selection: { + enabled: false, + type: 'x', + // selectedPoints: undefined, // default datapoints that should be selected automatically + fill: { + color: '#24292e', + opacity: 0.1 + }, + stroke: { + width: 1, + color: '#24292e', + opacity: 0.4, + dashArray: 3 + }, + xaxis: { + min: undefined, + max: undefined + }, + yaxis: { + min: undefined, + max: undefined + } + }, + sparkline: { + enabled: false + }, + brush: { + enabled: false, + autoScaleYaxis: true, + target: undefined + }, + stacked: false, + stackType: 'normal', + toolbar: { + show: true, + offsetX: 0, + offsetY: 0, + tools: { + download: true, + selection: true, + zoom: true, + zoomin: true, + zoomout: true, + pan: true, + reset: true, + customIcons: [] + }, + export: { + csv: { + filename: undefined, + columnDelimiter: ',', + headerCategory: 'category', + headerValue: 'value', + dateFormatter: function dateFormatter(timestamp) { + return new Date(timestamp).toDateString(); + } + }, + png: { + filename: undefined + }, + svg: { + filename: undefined + } + }, + autoSelected: 'zoom' // accepts -> zoom, pan, selection + + }, + type: 'line', + width: '100%', + zoom: { + enabled: true, + type: 'x', + autoScaleYaxis: false, + zoomedArea: { + fill: { + color: '#90CAF9', + opacity: 0.4 + }, + stroke: { + color: '#0D47A1', + opacity: 0.4, + width: 1 + } + } + } + }, + plotOptions: { + area: { + fillTo: 'origin' + }, + bar: { + horizontal: false, + columnWidth: '70%', + // should be in percent 0 - 100 + barHeight: '70%', + // should be in percent 0 - 100 + distributed: false, + borderRadius: 0, + borderRadiusApplication: 'around', + // [around, end] + borderRadiusWhenStacked: 'last', + // [all, last] + rangeBarOverlap: true, + rangeBarGroupRows: false, + hideZeroBarsWhenGrouped: false, + isDumbbell: false, + dumbbellColors: undefined, + colors: { + ranges: [], + backgroundBarColors: [], + backgroundBarOpacity: 1, + backgroundBarRadius: 0 + }, + dataLabels: { + position: 'top', + // top, center, bottom + maxItems: 100, + hideOverflowingLabels: true, + orientation: 'horizontal', + total: { + enabled: false, + formatter: undefined, + offsetX: 0, + offsetY: 0, + style: { + color: '#373d3f', + fontSize: '12px', + fontFamily: undefined, + fontWeight: 600 + } + } + } + }, + bubble: { + zScaling: true, + minBubbleRadius: undefined, + maxBubbleRadius: undefined + }, + candlestick: { + colors: { + upward: '#00B746', + downward: '#EF403C' + }, + wick: { + useFillColor: true + } + }, + boxPlot: { + colors: { + upper: '#00E396', + lower: '#008FFB' + } + }, + heatmap: { + radius: 2, + enableShades: true, + shadeIntensity: 0.5, + reverseNegativeShade: false, + distributed: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + treemap: { + enableShades: true, + shadeIntensity: 0.5, + distributed: false, + reverseNegativeShade: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + radialBar: { + inverseOrder: false, + startAngle: 0, + endAngle: 360, + offsetX: 0, + offsetY: 0, + hollow: { + margin: 5, + size: '50%', + background: 'transparent', + image: undefined, + imageWidth: 150, + imageHeight: 150, + imageOffsetX: 0, + imageOffsetY: 0, + imageClipped: true, + position: 'front', + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + track: { + show: true, + startAngle: undefined, + endAngle: undefined, + background: '#f2f2f2', + strokeWidth: '97%', + opacity: 1, + margin: 5, + // margin is in pixels + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + dataLabels: { + show: true, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: 0, + formatter: function formatter(val) { + return val; + } + }, + value: { + show: true, + fontSize: '14px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 16, + formatter: function formatter(val) { + return val + '%'; + } + }, + total: { + show: false, + label: 'Total', + fontSize: '16px', + fontWeight: 600, + fontFamily: undefined, + color: undefined, + formatter: function formatter(w) { + return w.globals.seriesTotals.reduce(function (a, b) { + return a + b; + }, 0) / w.globals.series.length + '%'; + } + } + } + }, + pie: { + customScale: 1, + offsetX: 0, + offsetY: 0, + startAngle: 0, + endAngle: 360, + expandOnClick: true, + dataLabels: { + // These are the percentage values which are displayed on slice + offset: 0, + // offset by which labels will move outside + minAngleToShowLabel: 10 + }, + donut: { + size: '65%', + background: 'transparent', + labels: { + // These are the inner labels appearing inside donut + show: false, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: -10, + formatter: function formatter(val) { + return val; + } + }, + value: { + show: true, + fontSize: '20px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 10, + formatter: function formatter(val) { + return val; + } + }, + total: { + show: false, + showAlways: false, + label: 'Total', + fontSize: '16px', + fontWeight: 400, + fontFamily: undefined, + color: undefined, + formatter: function formatter(w) { + return w.globals.seriesTotals.reduce(function (a, b) { + return a + b; + }, 0); + } + } + } + } + }, + polarArea: { + rings: { + strokeWidth: 1, + strokeColor: '#e8e8e8' + }, + spokes: { + strokeWidth: 1, + connectorColors: '#e8e8e8' + } + }, + radar: { + size: undefined, + offsetX: 0, + offsetY: 0, + polygons: { + // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2 + strokeWidth: 1, + strokeColors: '#e8e8e8', + connectorColors: '#e8e8e8', + fill: { + colors: undefined + } + } + } + }, + colors: undefined, + dataLabels: { + enabled: true, + enabledOnSeries: undefined, + formatter: function formatter(val) { + return val !== null ? val : ''; + }, + textAnchor: 'middle', + distributed: false, + offsetX: 0, + offsetY: 0, + style: { + fontSize: '12px', + fontFamily: undefined, + fontWeight: 600, + colors: undefined + }, + background: { + enabled: true, + foreColor: '#fff', + borderRadius: 2, + padding: 4, + opacity: 0.9, + borderWidth: 1, + borderColor: '#fff', + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + fill: { + type: 'solid', + colors: undefined, + // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + }, + image: { + src: [], + width: undefined, + // optional + height: undefined // optional + + }, + pattern: { + style: 'squares', + // String | Array of Strings + width: 6, + height: 6, + strokeWidth: 2 + } + }, + forecastDataPoints: { + count: 0, + fillOpacity: 0.5, + strokeWidth: undefined, + dashArray: 4 + }, + grid: { + show: true, + borderColor: '#e0e0e0', + strokeDashArray: 0, + position: 'back', + xaxis: { + lines: { + show: false + } + }, + yaxis: { + lines: { + show: true + } + }, + row: { + colors: undefined, + // takes as array which will be repeated on rows + opacity: 0.5 + }, + column: { + colors: undefined, + // takes an array which will be repeated on columns + opacity: 0.5 + }, + padding: { + top: 0, + right: 10, + bottom: 0, + left: 12 + } + }, + labels: [], + legend: { + show: true, + showForSingleSeries: false, + showForNullSeries: true, + showForZeroSeries: true, + floating: false, + position: 'bottom', + // whether to position legends in 1 of 4 + // direction - top, bottom, left, right + horizontalAlign: 'center', + // when position top/bottom, you can specify whether to align legends left, right or center + inverseOrder: false, + fontSize: '12px', + fontFamily: undefined, + fontWeight: 400, + width: undefined, + height: undefined, + formatter: undefined, + tooltipHoverFormatter: undefined, + offsetX: -20, + offsetY: 4, + customLegendItems: [], + labels: { + colors: undefined, + useSeriesColors: false + }, + markers: { + width: 12, + height: 12, + strokeWidth: 0, + fillColors: undefined, + strokeColor: '#fff', + radius: 12, + customHTML: undefined, + offsetX: 0, + offsetY: 0, + onClick: undefined + }, + itemMargin: { + horizontal: 5, + vertical: 2 + }, + onItemClick: { + toggleDataSeries: true + }, + onItemHover: { + highlightDataSeries: true + } + }, + markers: { + discrete: [], + size: 0, + colors: undefined, + //strokeColor: '#fff', // TODO: deprecate in major version 4.0 + strokeColors: '#fff', + strokeWidth: 2, + strokeOpacity: 0.9, + strokeDashArray: 0, + fillOpacity: 1, + shape: 'circle', + width: 8, + // only applicable when shape is rect/square + height: 8, + // only applicable when shape is rect/square + radius: 2, + offsetX: 0, + offsetY: 0, + onClick: undefined, + onDblClick: undefined, + showNullDataPoints: true, + hover: { + size: undefined, + sizeOffset: 3 + } + }, + noData: { + text: undefined, + align: 'center', + verticalAlign: 'middle', + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '14px', + fontFamily: undefined + } + }, + responsive: [], + // breakpoints should follow ascending order 400, then 700, then 1000 + series: undefined, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'lighten', + value: 0.1 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'darken', + value: 0.5 + } + } + }, + title: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 0, + floating: false, + style: { + fontSize: '14px', + fontWeight: 900, + fontFamily: undefined, + color: undefined + } + }, + subtitle: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 30, + floating: false, + style: { + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + color: undefined + } + }, + stroke: { + show: true, + curve: 'smooth', + // "smooth" / "straight" / "stepline" + lineCap: 'butt', + // round, butt , square + width: 2, + colors: undefined, + // array of colors + dashArray: 0, + // single value or array of values + fill: { + type: 'solid', + colors: undefined, + // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + } + } + }, + tooltip: { + enabled: true, + enabledOnSeries: undefined, + shared: true, + followCursor: false, + // when disabled, the tooltip will show on top of the series instead of mouse position + intersect: false, + // when enabled, tooltip will only show when user directly hovers over point + inverseOrder: false, + custom: undefined, + fillSeriesColor: false, + theme: 'light', + cssClass: '', + style: { + fontSize: '12px', + fontFamily: undefined + }, + onDatasetHover: { + highlightDataSeries: false + }, + x: { + // x value + show: true, + format: 'dd MMM', + // dd/MM, dd MMM yy, dd MMM yyyy + formatter: undefined // a custom user supplied formatter function + + }, + y: { + formatter: undefined, + title: { + formatter: function formatter(seriesName) { + return seriesName ? seriesName + ': ' : ''; + } + } + }, + z: { + formatter: undefined, + title: 'Size: ' + }, + marker: { + show: true, + fillColors: undefined + }, + items: { + display: 'flex' + }, + fixed: { + enabled: false, + position: 'topRight', + // topRight, topLeft, bottomRight, bottomLeft + offsetX: 0, + offsetY: 0 + } + }, + xaxis: { + type: 'category', + categories: [], + convertedCatToNumeric: false, + // internal property which should not be altered outside + offsetX: 0, + offsetY: 0, + overwriteCategories: undefined, + labels: { + show: true, + rotate: -45, + rotateAlways: false, + hideOverlappingLabels: true, + trim: false, + minHeight: undefined, + maxHeight: 120, + showDuplicates: true, + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + offsetX: 0, + offsetY: 0, + format: undefined, + formatter: undefined, + // custom formatter function which will override format + datetimeUTC: true, + datetimeFormatter: { + year: 'yyyy', + month: "MMM 'yy", + day: 'dd MMM', + hour: 'HH:mm', + minute: 'HH:mm:ss', + second: 'HH:mm:ss' + } + }, + group: { + groups: [], + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + } + }, + axisBorder: { + show: true, + color: '#e0e0e0', + width: '100%', + height: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: true, + color: '#e0e0e0', + height: 6, + offsetX: 0, + offsetY: 0 + }, + tickAmount: undefined, + tickPlacement: 'on', + min: undefined, + max: undefined, + range: undefined, + floating: false, + decimalsInFloat: undefined, + position: 'bottom', + title: { + text: undefined, + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '12px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + crosshairs: { + show: true, + width: 1, + // tickWidth/barWidth or an integer + position: 'back', + opacity: 0.9, + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 3 + }, + fill: { + type: 'solid', + // solid, gradient + color: '#B1B9C4', + gradient: { + colorFrom: '#D8E3F0', + colorTo: '#BED1E6', + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5 + } + }, + dropShadow: { + enabled: false, + left: 0, + top: 0, + blur: 1, + opacity: 0.4 + } + }, + tooltip: { + enabled: true, + offsetY: 0, + formatter: undefined, + style: { + fontSize: '12px', + fontFamily: undefined + } + } + }, + yaxis: this.yAxis, + theme: { + mode: 'light', + palette: 'palette1', + // If defined, it will overwrite globals.colors variable + monochrome: { + // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected) + enabled: false, + color: '#008FFB', + shadeTo: 'light', + shadeIntensity: 0.65 + } + } + }; + } + }]); + + return Options; + }(); + + /** + * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis. + * + * @module Annotations + **/ + + var Annotations = /*#__PURE__*/function () { + function Annotations(ctx) { + _classCallCheck(this, Annotations); + + this.ctx = ctx; + this.w = ctx.w; + this.graphics = new Graphics(this.ctx); + + if (this.w.globals.isBarHorizontal) { + this.invertAxis = true; + } + + this.helpers = new Helpers$4(this); + this.xAxisAnnotations = new XAnnotations(this); + this.yAxisAnnotations = new YAnnotations(this); + this.pointsAnnotations = new PointAnnotations(this); + + if (this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed) { + this.inversedReversedAxis = true; + } + + this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints; + } + + _createClass(Annotations, [{ + key: "drawAxesAnnotations", + value: function drawAxesAnnotations() { + var w = this.w; + + if (w.globals.axisCharts) { + var yAnnotations = this.yAxisAnnotations.drawYAxisAnnotations(); + var xAnnotations = this.xAxisAnnotations.drawXAxisAnnotations(); + var pointAnnotations = this.pointsAnnotations.drawPointAnnotations(); + var initialAnim = w.config.chart.animations.enabled; + var annoArray = [yAnnotations, xAnnotations, pointAnnotations]; + var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node]; + + for (var i = 0; i < 3; i++) { + w.globals.dom.elGraphical.add(annoArray[i]); + + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + // fixes apexcharts/apexcharts.js#685 + if (w.config.chart.type !== 'scatter' && w.config.chart.type !== 'bubble' && w.globals.dataPoints > 1) { + annoElArray[i].classList.add('apexcharts-element-hidden'); + } + } + + w.globals.delayedElements.push({ + el: annoElArray[i], + index: 0 + }); + } // background sizes needs to be calculated after text is drawn, so calling them last + + + this.helpers.annotationsBackground(); + } + } + }, { + key: "drawImageAnnos", + value: function drawImageAnnos() { + var _this = this; + + var w = this.w; + w.config.annotations.images.map(function (s, index) { + _this.addImage(s, index); + }); + } + }, { + key: "drawTextAnnos", + value: function drawTextAnnos() { + var _this2 = this; + + var w = this.w; + w.config.annotations.texts.map(function (t, index) { + _this2.addText(t, index); + }); + } + }, { + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(anno, parent, index) { + this.xAxisAnnotations.addXaxisAnnotation(anno, parent, index); + } + }, { + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(anno, parent, index) { + this.yAxisAnnotations.addYaxisAnnotation(anno, parent, index); + } + }, { + key: "addPointAnnotation", + value: function addPointAnnotation(anno, parent, index) { + this.pointsAnnotations.addPointAnnotation(anno, parent, index); + } + }, { + key: "addText", + value: function addText(params, index) { + var x = params.x, + y = params.y, + text = params.text, + textAnchor = params.textAnchor, + foreColor = params.foreColor, + fontSize = params.fontSize, + fontFamily = params.fontFamily, + fontWeight = params.fontWeight, + cssClass = params.cssClass, + backgroundColor = params.backgroundColor, + borderWidth = params.borderWidth, + strokeDashArray = params.strokeDashArray, + borderRadius = params.borderRadius, + borderColor = params.borderColor, + _params$appendTo = params.appendTo, + appendTo = _params$appendTo === void 0 ? '.apexcharts-annotations' : _params$appendTo, + _params$paddingLeft = params.paddingLeft, + paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft, + _params$paddingRight = params.paddingRight, + paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight, + _params$paddingBottom = params.paddingBottom, + paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom, + _params$paddingTop = params.paddingTop, + paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop; + var w = this.w; + var elText = this.graphics.drawText({ + x: x, + y: y, + text: text, + textAnchor: textAnchor || 'start', + fontSize: fontSize || '12px', + fontWeight: fontWeight || 'regular', + fontFamily: fontFamily || w.config.chart.fontFamily, + foreColor: foreColor || w.config.chart.foreColor, + cssClass: 'apexcharts-text ' + cssClass ? cssClass : '' + }); + var parent = w.globals.dom.baseEl.querySelector(appendTo); + + if (parent) { + parent.appendChild(elText.node); + } + + var textRect = elText.bbox(); + + if (text) { + var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, borderRadius, backgroundColor ? backgroundColor : 'transparent', 1, borderWidth, borderColor, strokeDashArray); + parent.insertBefore(elRect.node, elText.node); + } + } + }, { + key: "addImage", + value: function addImage(params, index) { + var w = this.w; + var path = params.path, + _params$x = params.x, + x = _params$x === void 0 ? 0 : _params$x, + _params$y = params.y, + y = _params$y === void 0 ? 0 : _params$y, + _params$width = params.width, + width = _params$width === void 0 ? 20 : _params$width, + _params$height = params.height, + height = _params$height === void 0 ? 20 : _params$height, + _params$appendTo2 = params.appendTo, + appendTo = _params$appendTo2 === void 0 ? '.apexcharts-annotations' : _params$appendTo2; + var img = w.globals.dom.Paper.image(path); + img.size(width, height).move(x, y); + var parent = w.globals.dom.baseEl.querySelector(appendTo); + + if (parent) { + parent.appendChild(img.node); + } + + return img; + } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method + + }, { + key: "addXaxisAnnotationExternal", + value: function addXaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'xaxis', + contextMethod: context.addXaxisAnnotation + }); + return context; + } + }, { + key: "addYaxisAnnotationExternal", + value: function addYaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'yaxis', + contextMethod: context.addYaxisAnnotation + }); + return context; + } + }, { + key: "addPointAnnotationExternal", + value: function addPointAnnotationExternal(params, pushToMemory, context) { + if (typeof this.invertAxis === 'undefined') { + this.invertAxis = context.w.globals.isBarHorizontal; + } + + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'point', + contextMethod: context.addPointAnnotation + }); + return context; + } + }, { + key: "addAnnotationExternal", + value: function addAnnotationExternal(_ref) { + var params = _ref.params, + pushToMemory = _ref.pushToMemory, + context = _ref.context, + type = _ref.type, + contextMethod = _ref.contextMethod; + var me = context; + var w = me.w; + var parent = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations")); + var index = parent.childNodes.length + 1; + var options = new Options(); + var axesAnno = Object.assign({}, type === 'xaxis' ? options.xAxisAnnotation : type === 'yaxis' ? options.yAxisAnnotation : options.pointAnnotation); + var anno = Utils$1.extend(axesAnno, params); + + switch (type) { + case 'xaxis': + this.addXaxisAnnotation(anno, parent, index); + break; + + case 'yaxis': + this.addYaxisAnnotation(anno, parent, index); + break; + + case 'point': + this.addPointAnnotation(anno, parent, index); + break; + } // add background + + + var axesAnnoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(index, "']")); + var elRect = this.helpers.addBackgroundToAnno(axesAnnoLabel, anno); + + if (elRect) { + parent.insertBefore(elRect.node, axesAnnoLabel); + } + + if (pushToMemory) { + w.globals.memory.methodsToExec.push({ + context: me, + id: anno.id ? anno.id : Utils$1.randomId(), + method: contextMethod, + label: 'addAnnotation', + params: params + }); + } + + return context; + } + }, { + key: "clearAnnotations", + value: function clearAnnotations(ctx) { + var w = ctx.w; + var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations'); // annotations added externally should be cleared out too + + w.globals.memory.methodsToExec.map(function (m, i) { + if (m.label === 'addText' || m.label === 'addAnnotation') { + w.globals.memory.methodsToExec.splice(i, 1); + } + }); + annos = Utils$1.listToArray(annos); // delete the DOM elements + + Array.prototype.forEach.call(annos, function (a) { + while (a.firstChild) { + a.removeChild(a.firstChild); + } + }); + } + }, { + key: "removeAnnotation", + value: function removeAnnotation(ctx, id) { + var w = ctx.w; + var annos = w.globals.dom.baseEl.querySelectorAll(".".concat(id)); + + if (annos) { + w.globals.memory.methodsToExec.map(function (m, i) { + if (m.id === id) { + w.globals.memory.methodsToExec.splice(i, 1); + } + }); + Array.prototype.forEach.call(annos, function (a) { + a.parentElement.removeChild(a); + }); + } + } + }]); + + return Annotations; + }(); + + /** + * DateTime Class to manipulate datetime values. + * + * @module DateTime + **/ + + var DateTime = /*#__PURE__*/function () { + function DateTime(ctx) { + _classCallCheck(this, DateTime); + + this.ctx = ctx; + this.w = ctx.w; + this.months31 = [1, 3, 5, 7, 8, 10, 12]; + this.months30 = [2, 4, 6, 9, 11]; + this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + } + + _createClass(DateTime, [{ + key: "isValidDate", + value: function isValidDate(date) { + return !isNaN(this.parseDate(date)); + } + }, { + key: "getTimeStamp", + value: function getTimeStamp(dateStr) { + if (!Date.parse(dateStr)) { + return dateStr; + } + + var utc = this.w.config.xaxis.labels.datetimeUTC; + return !utc ? new Date(dateStr).getTime() : new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime(); + } + }, { + key: "getDate", + value: function getDate(timestamp) { + var utc = this.w.config.xaxis.labels.datetimeUTC; + return utc ? new Date(new Date(timestamp).toUTCString()) : new Date(timestamp); + } + }, { + key: "parseDate", + value: function parseDate(dateStr) { + var parsed = Date.parse(dateStr); + + if (!isNaN(parsed)) { + return this.getTimeStamp(dateStr); + } + + var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')); + output = this.getTimeStamp(output); + return output; + } // This fixes the difference of x-axis labels between chrome/safari + // Fixes #1726, #1544, #1485, #1255 + + }, { + key: "parseDateWithTimezone", + value: function parseDateWithTimezone(dateStr) { + return Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')); + } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191 + + }, { + key: "formatDate", + value: function formatDate(date, format) { + var locale = this.w.globals.locale; + var utc = this.w.config.xaxis.labels.datetimeUTC; + var MMMM = ['\x00'].concat(_toConsumableArray(locale.months)); + var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths)); + var dddd = ['\x02'].concat(_toConsumableArray(locale.days)); + var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays)); + + function ii(i, len) { + var s = i + ''; + len = len || 2; + + while (s.length < len) { + s = '0' + s; + } + + return s; + } + + var y = utc ? date.getUTCFullYear() : date.getFullYear(); + format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y); + format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2)); + format = format.replace(/(^|[^\\])y/g, '$1' + y); + var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1; + format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]); + format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]); + format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M)); + format = format.replace(/(^|[^\\])M/g, '$1' + M); + var d = utc ? date.getUTCDate() : date.getDate(); + format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]); + format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]); + format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d)); + format = format.replace(/(^|[^\\])d/g, '$1' + d); + var H = utc ? date.getUTCHours() : date.getHours(); + format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H)); + format = format.replace(/(^|[^\\])H/g, '$1' + H); + var h = H > 12 ? H - 12 : H === 0 ? 12 : H; + format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h)); + format = format.replace(/(^|[^\\])h/g, '$1' + h); + var m = utc ? date.getUTCMinutes() : date.getMinutes(); + format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m)); + format = format.replace(/(^|[^\\])m/g, '$1' + m); + var s = utc ? date.getUTCSeconds() : date.getSeconds(); + format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s)); + format = format.replace(/(^|[^\\])s/g, '$1' + s); + var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds(); + format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3)); + f = Math.round(f / 10); + format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f)); + f = Math.round(f / 10); + format = format.replace(/(^|[^\\])f/g, '$1' + f); + var T = H < 12 ? 'AM' : 'PM'; + format = format.replace(/(^|[^\\])TT+/g, '$1' + T); + format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0)); + var t = T.toLowerCase(); + format = format.replace(/(^|[^\\])tt+/g, '$1' + t); + format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0)); + var tz = -date.getTimezoneOffset(); + var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-'; + + if (!utc) { + tz = Math.abs(tz); + var tzHrs = Math.floor(tz / 60); + var tzMin = tz % 60; + K += ii(tzHrs) + ':' + ii(tzMin); + } + + format = format.replace(/(^|[^\\])K/g, '$1' + K); + var day = (utc ? date.getUTCDay() : date.getDay()) + 1; + format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]); + format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]); + format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]); + format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]); + format = format.replace(/\\(.)/g, '$1'); + return format; + } + }, { + key: "getTimeUnitsfromTimestamp", + value: function getTimeUnitsfromTimestamp(minX, maxX, utc) { + var w = this.w; + + if (w.config.xaxis.min !== undefined) { + minX = w.config.xaxis.min; + } + + if (w.config.xaxis.max !== undefined) { + maxX = w.config.xaxis.max; + } + + var tsMin = this.getDate(minX); + var tsMax = this.getDate(maxX); + var minD = this.formatDate(tsMin, 'yyyy MM dd HH mm ss fff').split(' '); + var maxD = this.formatDate(tsMax, 'yyyy MM dd HH mm ss fff').split(' '); + return { + minMillisecond: parseInt(minD[6], 10), + maxMillisecond: parseInt(maxD[6], 10), + minSecond: parseInt(minD[5], 10), + maxSecond: parseInt(maxD[5], 10), + minMinute: parseInt(minD[4], 10), + maxMinute: parseInt(maxD[4], 10), + minHour: parseInt(minD[3], 10), + maxHour: parseInt(maxD[3], 10), + minDate: parseInt(minD[2], 10), + maxDate: parseInt(maxD[2], 10), + minMonth: parseInt(minD[1], 10) - 1, + maxMonth: parseInt(maxD[1], 10) - 1, + minYear: parseInt(minD[0], 10), + maxYear: parseInt(maxD[0], 10) + }; + } + }, { + key: "isLeapYear", + value: function isLeapYear(year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + } + }, { + key: "calculcateLastDaysOfMonth", + value: function calculcateLastDaysOfMonth(month, year, subtract) { + var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked + + return days - subtract; + } + }, { + key: "determineDaysOfYear", + value: function determineDaysOfYear(year) { + var days = 365; + + if (this.isLeapYear(year)) { + days = 366; + } + + return days; + } + }, { + key: "determineRemainingDaysOfYear", + value: function determineRemainingDaysOfYear(year, month, date) { + var dayOfYear = this.daysCntOfYear[month] + date; + if (month > 1 && this.isLeapYear()) dayOfYear++; + return dayOfYear; + } + }, { + key: "determineDaysOfMonths", + value: function determineDaysOfMonths(month, year) { + var days = 30; + month = Utils$1.monthMod(month); + + switch (true) { + case this.months30.indexOf(month) > -1: + if (month === 2) { + if (this.isLeapYear(year)) { + days = 29; + } else { + days = 28; + } + } + + break; + + case this.months31.indexOf(month) > -1: + days = 31; + break; + + default: + days = 31; + break; + } + + return days; + } + }]); + + return DateTime; + }(); + + /** + * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips. + * + * @module Formatters + **/ + + var Formatters = /*#__PURE__*/function () { + function Formatters(ctx) { + _classCallCheck(this, Formatters); + + this.ctx = ctx; + this.w = ctx.w; + this.tooltipKeyFormat = 'dd MMM'; + } + + _createClass(Formatters, [{ + key: "xLabelFormat", + value: function xLabelFormat(fn, val, timestamp, opts) { + var w = this.w; + + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.labels.formatter === undefined) { + // if user has not specified a custom formatter, use the default tooltip.x.format + if (w.config.tooltip.x.formatter === undefined) { + var datetimeObj = new DateTime(this.ctx); + return datetimeObj.formatDate(datetimeObj.getDate(val), w.config.tooltip.x.format); + } + } + } + + return fn(val, timestamp, opts); + } + }, { + key: "defaultGeneralFormatter", + value: function defaultGeneralFormatter(val) { + if (Array.isArray(val)) { + return val.map(function (v) { + return v; + }); + } else { + return val; + } + } + }, { + key: "defaultYFormatter", + value: function defaultYFormatter(v, yaxe, i) { + var w = this.w; + + if (Utils$1.isNumber(v)) { + if (w.globals.yValueDecimal !== 0) { + v = v.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal); + } else if (w.globals.maxYArr[i] - w.globals.minYArr[i] < 5) { + v = v.toFixed(1); + } else { + v = v.toFixed(0); + } + } + + return v; + } + }, { + key: "setLabelFormatters", + value: function setLabelFormatters() { + var _this = this; + + var w = this.w; + + w.globals.xaxisTooltipFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; + + w.globals.ttKeyFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; + + w.globals.ttZFormatter = function (val) { + return val; + }; + + w.globals.legendFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; // formatter function will always overwrite format property + + + if (w.config.xaxis.labels.formatter !== undefined) { + w.globals.xLabelFormatter = w.config.xaxis.labels.formatter; + } else { + w.globals.xLabelFormatter = function (val) { + if (Utils$1.isNumber(val)) { + if (!w.config.xaxis.convertedCatToNumeric && w.config.xaxis.type === 'numeric') { + if (Utils$1.isNumber(w.config.xaxis.decimalsInFloat)) { + return val.toFixed(w.config.xaxis.decimalsInFloat); + } else { + var diff = w.globals.maxX - w.globals.minX; + + if (diff > 0 && diff < 100) { + return val.toFixed(1); + } + + return val.toFixed(0); + } + } + + if (w.globals.isBarHorizontal) { + var range = w.globals.maxY - w.globals.minYArr; + + if (range < 4) { + return val.toFixed(1); + } + } + + return val.toFixed(0); + } + + return val; + }; + } + + if (typeof w.config.tooltip.x.formatter === 'function') { + w.globals.ttKeyFormatter = w.config.tooltip.x.formatter; + } else { + w.globals.ttKeyFormatter = w.globals.xLabelFormatter; + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter; + } + + if (Array.isArray(w.config.tooltip.y)) { + w.globals.ttVal = w.config.tooltip.y; + } else { + if (w.config.tooltip.y.formatter !== undefined) { + w.globals.ttVal = w.config.tooltip.y; + } + } + + if (w.config.tooltip.z.formatter !== undefined) { + w.globals.ttZFormatter = w.config.tooltip.z.formatter; + } // legend formatter - if user wants to append any global values of series to legend text + + + if (w.config.legend.formatter !== undefined) { + w.globals.legendFormatter = w.config.legend.formatter; + } // formatter function will always overwrite format property + + + w.config.yaxis.forEach(function (yaxe, i) { + if (yaxe.labels.formatter !== undefined) { + w.globals.yLabelFormatters[i] = yaxe.labels.formatter; + } else { + w.globals.yLabelFormatters[i] = function (val) { + if (!w.globals.xyCharts) return val; + + if (Array.isArray(val)) { + return val.map(function (v) { + return _this.defaultYFormatter(v, yaxe, i); + }); + } else { + return _this.defaultYFormatter(val, yaxe, i); + } + }; + } + }); + return w.globals; + } + }, { + key: "heatmapLabelFormatters", + value: function heatmapLabelFormatters() { + var w = this.w; + + if (w.config.chart.type === 'heatmap') { + w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); // get the longest string from the labels array and also apply label formatter to it + + var longest = w.globals.seriesNames.reduce(function (a, b) { + return a.length > b.length ? a : b; + }, 0); + w.globals.yAxisScale[0].niceMax = longest; + w.globals.yAxisScale[0].niceMin = longest; + } + } + }]); + + return Formatters; + }(); + + /** + * ApexCharts Default Class for setting default options for all chart types. + * + * @module Defaults + **/ + + var getRangeValues = function getRangeValues(_ref) { + var _w$config$series$seri; + + var isTimeline = _ref.isTimeline, + ctx = _ref.ctx, + seriesIndex = _ref.seriesIndex, + dataPointIndex = _ref.dataPointIndex, + y1 = _ref.y1, + y2 = _ref.y2, + w = _ref.w; + var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex]; + var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex]; + var ylabel = w.globals.labels[dataPointIndex]; + var seriesName = w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : ''; + var yLbFormatter = w.globals.ttKeyFormatter; + var yLbTitleFormatter = w.config.tooltip.y.title.formatter; + var opts = { + w: w, + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + start: start, + end: end + }; + + if (typeof yLbTitleFormatter === 'function') { + seriesName = yLbTitleFormatter(seriesName, opts); + } + + if ((_w$config$series$seri = w.config.series[seriesIndex].data[dataPointIndex]) !== null && _w$config$series$seri !== void 0 && _w$config$series$seri.x) { + ylabel = w.config.series[seriesIndex].data[dataPointIndex].x; + } + + if (!isTimeline) { + if (w.config.xaxis.type === 'datetime') { + var xFormat = new Formatters(ctx); + ylabel = xFormat.xLabelFormat(w.globals.ttKeyFormatter, ylabel, ylabel, { + i: undefined, + dateFormatter: new DateTime(ctx).formatDate, + w: w + }); + } + } + + if (typeof yLbFormatter === 'function') { + ylabel = yLbFormatter(ylabel, opts); + } + + if (Number.isFinite(y1) && Number.isFinite(y2)) { + start = y1; + end = y2; + } + + var startVal = ''; + var endVal = ''; + var color = w.globals.colors[seriesIndex]; + + if (w.config.tooltip.x.formatter === undefined) { + if (w.config.xaxis.type === 'datetime') { + var datetimeObj = new DateTime(ctx); + startVal = datetimeObj.formatDate(datetimeObj.getDate(start), w.config.tooltip.x.format); + endVal = datetimeObj.formatDate(datetimeObj.getDate(end), w.config.tooltip.x.format); + } else { + startVal = start; + endVal = end; + } + } else { + startVal = w.config.tooltip.x.formatter(start); + endVal = w.config.tooltip.x.formatter(end); + } + + return { + start: start, + end: end, + startVal: startVal, + endVal: endVal, + ylabel: ylabel, + color: color, + seriesName: seriesName + }; + }; + + var buildRangeTooltipHTML = function buildRangeTooltipHTML(opts) { + var color = opts.color, + seriesName = opts.seriesName, + ylabel = opts.ylabel, + start = opts.start, + end = opts.end, + seriesIndex = opts.seriesIndex, + dataPointIndex = opts.dataPointIndex; + var formatter = opts.ctx.tooltip.tooltipLabels.getFormatters(seriesIndex); + start = formatter.yLbFormatter(start); + end = formatter.yLbFormatter(end); + var val = formatter.yLbFormatter(opts.w.globals.series[seriesIndex][dataPointIndex]); + var valueHTML = ''; + var rangeValues = "\n ".concat(start, "\n - \n ").concat(end, "\n "); + + if (opts.w.globals.comboCharts) { + if (opts.w.config.series[seriesIndex].type === 'rangeArea' || opts.w.config.series[seriesIndex].type === 'rangeBar') { + valueHTML = rangeValues; + } else { + valueHTML = "".concat(val, ""); + } + } else { + valueHTML = rangeValues; + } + + return '
    ' + '
    ' + (seriesName ? seriesName : '') + '
    ' + '
    ' + ylabel + ': ' + valueHTML + '
    ' + '
    '; + }; + + var Defaults = /*#__PURE__*/function () { + function Defaults(opts) { + _classCallCheck(this, Defaults); + + this.opts = opts; + } + + _createClass(Defaults, [{ + key: "line", + value: function line() { + return { + chart: { + animations: { + easing: 'swing' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 5, + curve: 'straight' + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "sparkline", + value: function sparkline(defaults) { + this.opts.yaxis[0].show = false; + this.opts.yaxis[0].title.text = ''; + this.opts.yaxis[0].axisBorder.show = false; + this.opts.yaxis[0].axisTicks.show = false; + this.opts.yaxis[0].floating = true; + var ret = { + grid: { + show: false, + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + }, + legend: { + show: false + }, + xaxis: { + labels: { + show: false + }, + tooltip: { + enabled: false + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + chart: { + toolbar: { + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + } + }; + return Utils$1.extend(defaults, ret); + } + }, { + key: "bar", + value: function bar() { + return { + chart: { + stacked: false, + animations: { + easing: 'swing' + } + }, + plotOptions: { + bar: { + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + style: { + colors: ['#fff'] + }, + background: { + enabled: false + } + }, + stroke: { + width: 0, + lineCap: 'round' + }, + fill: { + opacity: 0.85 + }, + legend: { + markers: { + shape: 'square', + radius: 2, + size: 8 + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + tooltip: { + enabled: false + }, + tickPlacement: 'between', + crosshairs: { + width: 'barWidth', + position: 'back', + fill: { + type: 'gradient' + }, + dropShadow: { + enabled: false + }, + stroke: { + width: 0 + } + } + } + }; + } + }, { + key: "candlestick", + value: function candlestick() { + var _this = this; + + return { + stroke: { + width: 1, + colors: ['#333'] + }, + fill: { + opacity: 1 + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: function custom(_ref2) { + var seriesIndex = _ref2.seriesIndex, + dataPointIndex = _ref2.dataPointIndex, + w = _ref2.w; + return _this._getBoxTooltip(w, seriesIndex, dataPointIndex, ['Open', 'High', '', 'Low', 'Close'], 'candlestick'); + } + }, + states: { + active: { + filter: { + type: 'none' + } + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "boxPlot", + value: function boxPlot() { + var _this2 = this; + + return { + chart: { + animations: { + dynamicAnimation: { + enabled: false + } + } + }, + stroke: { + width: 1, + colors: ['#24292e'] + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: function custom(_ref3) { + var seriesIndex = _ref3.seriesIndex, + dataPointIndex = _ref3.dataPointIndex, + w = _ref3.w; + return _this2._getBoxTooltip(w, seriesIndex, dataPointIndex, ['Minimum', 'Q1', 'Median', 'Q3', 'Maximum'], 'boxPlot'); + } + }, + markers: { + size: 5, + strokeWidth: 1, + strokeColors: '#111' + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "rangeBar", + value: function rangeBar() { + var handleTimelineTooltip = function handleTimelineTooltip(opts) { + var _getRangeValues = getRangeValues(_objectSpread2(_objectSpread2({}, opts), {}, { + isTimeline: true + })), + color = _getRangeValues.color, + seriesName = _getRangeValues.seriesName, + ylabel = _getRangeValues.ylabel, + startVal = _getRangeValues.startVal, + endVal = _getRangeValues.endVal; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: startVal, + end: endVal + })); + }; + + var handleRangeColumnTooltip = function handleRangeColumnTooltip(opts) { + var _getRangeValues2 = getRangeValues(opts), + color = _getRangeValues2.color, + seriesName = _getRangeValues2.seriesName, + ylabel = _getRangeValues2.ylabel, + start = _getRangeValues2.start, + end = _getRangeValues2.end; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: start, + end: end + })); + }; + + return { + chart: { + animations: { + animateGradually: false + } + }, + stroke: { + width: 0, + lineCap: 'square' + }, + plotOptions: { + bar: { + borderRadius: 0, + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + enabled: false, + formatter: function formatter(val, _ref4) { + _ref4.ctx; + var seriesIndex = _ref4.seriesIndex, + dataPointIndex = _ref4.dataPointIndex, + w = _ref4.w; + + var getVal = function getVal() { + var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex]; + var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex]; + return end - start; + }; + + if (w.globals.comboCharts) { + if (w.config.series[seriesIndex].type === 'rangeBar' || w.config.series[seriesIndex].type === 'rangeArea') { + return getVal(); + } else { + return val; + } + } else { + return getVal(); + } + }, + background: { + enabled: false + }, + style: { + colors: ['#fff'] + } + }, + markers: { + size: 10 + }, + tooltip: { + shared: false, + followCursor: true, + custom: function custom(opts) { + if (opts.w.config.plotOptions && opts.w.config.plotOptions.bar && opts.w.config.plotOptions.bar.horizontal) { + return handleTimelineTooltip(opts); + } else { + return handleRangeColumnTooltip(opts); + } + } + }, + xaxis: { + tickPlacement: 'between', + tooltip: { + enabled: false + }, + crosshairs: { + stroke: { + width: 0 + } + } + } + }; + } + }, { + key: "dumbbell", + value: function dumbbell(opts) { + var _opts$plotOptions$bar, _opts$plotOptions$bar2; + + if (!((_opts$plotOptions$bar = opts.plotOptions.bar) !== null && _opts$plotOptions$bar !== void 0 && _opts$plotOptions$bar.barHeight)) { + opts.plotOptions.bar.barHeight = 2; + } + + if (!((_opts$plotOptions$bar2 = opts.plotOptions.bar) !== null && _opts$plotOptions$bar2 !== void 0 && _opts$plotOptions$bar2.columnWidth)) { + opts.plotOptions.bar.columnWidth = 2; + } + + return opts; + } + }, { + key: "area", + value: function area() { + return { + stroke: { + width: 4, + fill: { + type: 'solid', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + } + }, + fill: { + type: 'gradient', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + tooltip: { + followCursor: false + } + }; + } + }, { + key: "rangeArea", + value: function rangeArea() { + var handleRangeAreaTooltip = function handleRangeAreaTooltip(opts) { + var _getRangeValues3 = getRangeValues(opts), + color = _getRangeValues3.color, + seriesName = _getRangeValues3.seriesName, + ylabel = _getRangeValues3.ylabel, + start = _getRangeValues3.start, + end = _getRangeValues3.end; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: start, + end: end + })); + }; + + return { + stroke: { + curve: 'straight', + width: 0 + }, + fill: { + type: 'solid', + opacity: 0.6 + }, + markers: { + size: 0 + }, + states: { + hover: { + filter: { + type: 'none' + } + }, + active: { + filter: { + type: 'none' + } + } + }, + tooltip: { + intersect: false, + shared: true, + followCursor: true, + custom: function custom(opts) { + return handleRangeAreaTooltip(opts); + } + } + }; + } + }, { + key: "brush", + value: function brush(defaults) { + var ret = { + chart: { + toolbar: { + autoSelected: 'selection', + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 1 + }, + tooltip: { + enabled: false + }, + xaxis: { + tooltip: { + enabled: false + } + } + }; + return Utils$1.extend(defaults, ret); + } + }, { + key: "stacked100", + value: function stacked100(opts) { + opts.dataLabels = opts.dataLabels || {}; + opts.dataLabels.formatter = opts.dataLabels.formatter || undefined; + var existingDataLabelFormatter = opts.dataLabels.formatter; + opts.yaxis.forEach(function (yaxe, index) { + opts.yaxis[index].min = 0; + opts.yaxis[index].max = 100; + }); + var isBar = opts.chart.type === 'bar'; + + if (isBar) { + opts.dataLabels.formatter = existingDataLabelFormatter || function (val) { + if (typeof val === 'number') { + return val ? val.toFixed(0) + '%' : val; + } + + return val; + }; + } + + return opts; + } + }, { + key: "stackedBars", + value: function stackedBars() { + var barDefaults = this.bar(); + return _objectSpread2(_objectSpread2({}, barDefaults), {}, { + plotOptions: _objectSpread2(_objectSpread2({}, barDefaults.plotOptions), {}, { + bar: _objectSpread2(_objectSpread2({}, barDefaults.plotOptions.bar), {}, { + borderRadiusApplication: 'end', + borderRadiusWhenStacked: 'last' + }) + }) + }); + } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area + + }, { + key: "convertCatToNumeric", + value: function convertCatToNumeric(opts) { + opts.xaxis.convertedCatToNumeric = true; + return opts; + } + }, { + key: "convertCatToNumericXaxis", + value: function convertCatToNumericXaxis(opts, ctx, cats) { + opts.xaxis.type = 'numeric'; + opts.xaxis.labels = opts.xaxis.labels || {}; + + opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) { + return Utils$1.isNumber(val) ? Math.floor(val) : val; + }; + + var defaultFormatter = opts.xaxis.labels.formatter; + var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels; + + if (cats && cats.length) { + labels = cats.map(function (c) { + return Array.isArray(c) ? c : String(c); + }); + } + + if (labels && labels.length) { + opts.xaxis.labels.formatter = function (val) { + return Utils$1.isNumber(val) ? defaultFormatter(labels[Math.floor(val) - 1]) : defaultFormatter(val); + }; + } + + opts.xaxis.categories = []; + opts.labels = []; + opts.xaxis.tickAmount = opts.xaxis.tickAmount || 'dataPoints'; + return opts; + } + }, { + key: "bubble", + value: function bubble() { + return { + dataLabels: { + style: { + colors: ['#fff'] + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + crosshairs: { + width: 0 + } + }, + fill: { + type: 'solid', + gradient: { + shade: 'light', + inverse: true, + shadeIntensity: 0.55, + opacityFrom: 0.4, + opacityTo: 0.8 + } + } + }; + } + }, { + key: "scatter", + value: function scatter() { + return { + dataLabels: { + enabled: false + }, + tooltip: { + shared: false, + intersect: true + }, + markers: { + size: 6, + strokeWidth: 1, + hover: { + sizeOffset: 2 + } + } + }; + } + }, { + key: "heatmap", + value: function heatmap() { + return { + chart: { + stacked: false + }, + fill: { + opacity: 1 + }, + dataLabels: { + style: { + colors: ['#fff'] + } + }, + stroke: { + colors: ['#fff'] + }, + tooltip: { + followCursor: true, + marker: { + show: false + }, + x: { + show: false + } + }, + legend: { + position: 'top', + markers: { + shape: 'square', + size: 10, + offsetY: 2 + } + }, + grid: { + padding: { + right: 20 + } + } + }; + } + }, { + key: "treemap", + value: function treemap() { + return { + chart: { + zoom: { + enabled: false + } + }, + dataLabels: { + style: { + fontSize: 14, + fontWeight: 600, + colors: ['#fff'] + } + }, + stroke: { + show: true, + width: 2, + colors: ['#fff'] + }, + legend: { + show: false + }, + fill: { + gradient: { + stops: [0, 100] + } + }, + tooltip: { + followCursor: true, + x: { + show: false + } + }, + grid: { + padding: { + left: 0, + right: 0 + } + }, + xaxis: { + crosshairs: { + show: false + }, + tooltip: { + enabled: false + } + } + }; + } + }, { + key: "pie", + value: function pie() { + return { + chart: { + toolbar: { + show: false + } + }, + plotOptions: { + pie: { + donut: { + labels: { + show: false + } + } + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + stops: [0, 100] + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "donut", + value: function donut() { + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + shadeIntensity: 0.35, + stops: [80, 100], + opacityFrom: 1, + opacityTo: 1 + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "polarArea", + value: function polarArea() { + this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount ? this.opts.yaxis[0].tickAmount : 6; + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + enabled: false + }, + stroke: { + show: true, + width: 2 + }, + fill: { + opacity: 0.7 + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "radar", + value: function radar() { + this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6; + return { + dataLabels: { + enabled: false, + style: { + fontSize: '11px' + } + }, + stroke: { + width: 2 + }, + markers: { + size: 3, + strokeWidth: 1, + strokeOpacity: 1 + }, + fill: { + opacity: 0.2 + }, + tooltip: { + shared: false, + intersect: true, + followCursor: true + }, + grid: { + show: false + }, + xaxis: { + labels: { + formatter: function formatter(val) { + return val; + }, + style: { + colors: ['#a8a8a8'], + fontSize: '11px' + } + }, + tooltip: { + enabled: false + }, + crosshairs: { + show: false + } + } + }; + } + }, { + key: "radialBar", + value: function radialBar() { + return { + chart: { + animations: { + dynamicAnimation: { + enabled: true, + speed: 800 + } + }, + toolbar: { + show: false + } + }, + fill: { + gradient: { + shade: 'dark', + shadeIntensity: 0.4, + inverseColors: false, + type: 'diagonal2', + opacityFrom: 1, + opacityTo: 1, + stops: [70, 98, 100] + } + }, + legend: { + show: false, + position: 'right' + }, + tooltip: { + enabled: false, + fillSeriesColor: true + } + }; + } + }, { + key: "_getBoxTooltip", + value: function _getBoxTooltip(w, seriesIndex, dataPointIndex, labels, chartType) { + var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex]; + var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex]; + var m = w.globals.seriesCandleM[seriesIndex][dataPointIndex]; + var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex]; + var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex]; + + if (w.config.series[seriesIndex].type && w.config.series[seriesIndex].type !== chartType) { + return "
    \n ".concat(w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : 'series-' + (seriesIndex + 1), ": ").concat(w.globals.series[seriesIndex][dataPointIndex], "\n
    "); + } else { + return "
    ") + "
    ".concat(labels[0], ": ") + o + '
    ' + "
    ".concat(labels[1], ": ") + h + '
    ' + (m ? "
    ".concat(labels[2], ": ") + m + '
    ' : '') + "
    ".concat(labels[3], ": ") + l + '
    ' + "
    ".concat(labels[4], ": ") + c + '
    ' + '
    '; + } + } + }]); + + return Defaults; + }(); + + /** + * ApexCharts Config Class for extending user options with pre-defined ApexCharts config. + * + * @module Config + **/ + + var Config = /*#__PURE__*/function () { + function Config(opts) { + _classCallCheck(this, Config); + + this.opts = opts; + } + + _createClass(Config, [{ + key: "init", + value: function init(_ref) { + var responsiveOverride = _ref.responsiveOverride; + var opts = this.opts; + var options = new Options(); + var defaults = new Defaults(opts); + this.chartType = opts.chart.type; + opts = this.extendYAxis(opts); + opts = this.extendAnnotations(opts); + var config = options.init(); + var newDefaults = {}; + + if (opts && _typeof(opts) === 'object') { + var _opts$chart$brush, _opts$plotOptions, _opts$plotOptions$bar, _opts$chart$sparkline, _window$Apex$chart, _window$Apex$chart$sp; + + var chartDefaults = {}; + var chartTypes = ['line', 'area', 'bar', 'candlestick', 'boxPlot', 'rangeBar', 'rangeArea', 'bubble', 'scatter', 'heatmap', 'treemap', 'pie', 'polarArea', 'donut', 'radar', 'radialBar']; + + if (chartTypes.indexOf(opts.chart.type) !== -1) { + chartDefaults = defaults[opts.chart.type](); + } else { + chartDefaults = defaults.line(); + } + + if (opts.chart.stacked && opts.chart.type === 'bar') { + chartDefaults = defaults.stackedBars(); + } + + if ((_opts$chart$brush = opts.chart.brush) !== null && _opts$chart$brush !== void 0 && _opts$chart$brush.enabled) { + chartDefaults = defaults.brush(chartDefaults); + } + + if (opts.chart.stacked && opts.chart.stackType === '100%') { + opts = defaults.stacked100(opts); + } + + if ((_opts$plotOptions = opts.plotOptions) !== null && _opts$plotOptions !== void 0 && (_opts$plotOptions$bar = _opts$plotOptions.bar) !== null && _opts$plotOptions$bar !== void 0 && _opts$plotOptions$bar.isDumbbell) { + opts = defaults.dumbbell(opts); + } // If user has specified a dark theme, make the tooltip dark too + + + this.checkForDarkTheme(window.Apex); // check global window Apex options + + this.checkForDarkTheme(opts); // check locally passed options + + opts.xaxis = opts.xaxis || window.Apex.xaxis || {}; // an important boolean needs to be set here + // otherwise all the charts will have this flag set to true window.Apex.xaxis is set globally + + if (!responsiveOverride) { + opts.xaxis.convertedCatToNumeric = false; + } + + opts = this.checkForCatToNumericXAxis(this.chartType, chartDefaults, opts); + + if ((_opts$chart$sparkline = opts.chart.sparkline) !== null && _opts$chart$sparkline !== void 0 && _opts$chart$sparkline.enabled || (_window$Apex$chart = window.Apex.chart) !== null && _window$Apex$chart !== void 0 && (_window$Apex$chart$sp = _window$Apex$chart.sparkline) !== null && _window$Apex$chart$sp !== void 0 && _window$Apex$chart$sp.enabled) { + chartDefaults = defaults.sparkline(chartDefaults); + } + + newDefaults = Utils$1.extend(config, chartDefaults); + } // config should cascade in this fashion + // default-config < global-apex-variable-config < user-defined-config + // get GLOBALLY defined options and merge with the default config + + + var mergedWithDefaultConfig = Utils$1.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config + + config = Utils$1.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled + + config = this.handleUserInputErrors(config); + return config; + } + }, { + key: "checkForCatToNumericXAxis", + value: function checkForCatToNumericXAxis(chartType, chartDefaults, opts) { + var _opts$plotOptions2, _opts$plotOptions2$ba; + + var defaults = new Defaults(opts); + var isBarHorizontal = (chartType === 'bar' || chartType === 'boxPlot') && ((_opts$plotOptions2 = opts.plotOptions) === null || _opts$plotOptions2 === void 0 ? void 0 : (_opts$plotOptions2$ba = _opts$plotOptions2.bar) === null || _opts$plotOptions2$ba === void 0 ? void 0 : _opts$plotOptions2$ba.horizontal); + var unsupportedZoom = chartType === 'pie' || chartType === 'polarArea' || chartType === 'donut' || chartType === 'radar' || chartType === 'radialBar' || chartType === 'heatmap'; + var notNumericXAxis = opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric'; + var tickPlacement = opts.xaxis.tickPlacement ? opts.xaxis.tickPlacement : chartDefaults.xaxis && chartDefaults.xaxis.tickPlacement; + + if (!isBarHorizontal && !unsupportedZoom && notNumericXAxis && tickPlacement !== 'between') { + opts = defaults.convertCatToNumeric(opts); + } + + return opts; + } + }, { + key: "extendYAxis", + value: function extendYAxis(opts, w) { + var options = new Options(); + + if (typeof opts.yaxis === 'undefined' || !opts.yaxis || Array.isArray(opts.yaxis) && opts.yaxis.length === 0) { + opts.yaxis = {}; + } // extend global yaxis config (only if object is provided / not an array) + + + if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) { + opts.yaxis = Utils$1.extend(opts.yaxis, window.Apex.yaxis); + } // as we can't extend nested object's array with extend, we need to do it first + // user can provide either an array or object in yaxis config + + + if (opts.yaxis.constructor !== Array) { + // convert the yaxis to array if user supplied object + opts.yaxis = [Utils$1.extend(options.yAxis, opts.yaxis)]; + } else { + opts.yaxis = Utils$1.extendArray(opts.yaxis, options.yAxis); + } + + var isLogY = false; + opts.yaxis.forEach(function (y) { + if (y.logarithmic) { + isLogY = true; + } + }); + var series = opts.series; + + if (w && !series) { + series = w.config.series; + } // A logarithmic chart works correctly when each series has a corresponding y-axis + // If this is not the case, we manually create yaxis for multi-series log chart + + + if (isLogY && series.length !== opts.yaxis.length && series.length) { + opts.yaxis = series.map(function (s, i) { + if (!s.name) { + series[i].name = "series-".concat(i + 1); + } + + if (opts.yaxis[i]) { + opts.yaxis[i].seriesName = series[i].name; + return opts.yaxis[i]; + } else { + var newYaxis = Utils$1.extend(options.yAxis, opts.yaxis[0]); + newYaxis.show = false; + return newYaxis; + } + }); + } + + if (isLogY && series.length > 1 && series.length !== opts.yaxis.length) { + console.warn('A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both.'); + } + + return opts; + } // annotations also accepts array, so we need to extend them manually + + }, { + key: "extendAnnotations", + value: function extendAnnotations(opts) { + if (typeof opts.annotations === 'undefined') { + opts.annotations = {}; + opts.annotations.yaxis = []; + opts.annotations.xaxis = []; + opts.annotations.points = []; + } + + opts = this.extendYAxisAnnotations(opts); + opts = this.extendXAxisAnnotations(opts); + opts = this.extendPointAnnotations(opts); + return opts; + } + }, { + key: "extendYAxisAnnotations", + value: function extendYAxisAnnotations(opts) { + var options = new Options(); + opts.annotations.yaxis = Utils$1.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation); + return opts; + } + }, { + key: "extendXAxisAnnotations", + value: function extendXAxisAnnotations(opts) { + var options = new Options(); + opts.annotations.xaxis = Utils$1.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation); + return opts; + } + }, { + key: "extendPointAnnotations", + value: function extendPointAnnotations(opts) { + var options = new Options(); + opts.annotations.points = Utils$1.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation); + return opts; + } + }, { + key: "checkForDarkTheme", + value: function checkForDarkTheme(opts) { + if (opts.theme && opts.theme.mode === 'dark') { + if (!opts.tooltip) { + opts.tooltip = {}; + } + + if (opts.tooltip.theme !== 'light') { + opts.tooltip.theme = 'dark'; + } + + if (!opts.chart.foreColor) { + opts.chart.foreColor = '#f6f7f8'; + } + + if (!opts.chart.background) { + opts.chart.background = '#424242'; + } + + if (!opts.theme.palette) { + opts.theme.palette = 'palette4'; + } + } + } + }, { + key: "handleUserInputErrors", + value: function handleUserInputErrors(opts) { + var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it + + if (config.tooltip.shared && config.tooltip.intersect) { + throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.'); + } + + if (config.chart.type === 'bar' && config.plotOptions.bar.horizontal) { + // No multiple yaxis for bars + if (config.yaxis.length > 1) { + throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false'); + } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side + + + if (config.yaxis[0].reversed) { + config.yaxis[0].opposite = true; + } + + config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar + + config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar + + config.chart.zoom.enabled = false; // no zooming for horz bars + } + + if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') { + if (config.tooltip.shared) { + if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) { + config.xaxis.crosshairs.width = 'tickWidth'; + } + } + } + + if (config.chart.type === 'candlestick' || config.chart.type === 'boxPlot') { + if (config.yaxis[0].reversed) { + console.warn("Reversed y-axis in ".concat(config.chart.type, " chart is not supported.")); + config.yaxis[0].reversed = false; + } + } + + return config; + } + }]); + + return Config; + }(); + + var Globals = /*#__PURE__*/function () { + function Globals() { + _classCallCheck(this, Globals); + } + + _createClass(Globals, [{ + key: "initGlobalVars", + value: function initGlobalVars(gl) { + gl.series = []; // the MAIN series array (y values) + + gl.seriesCandleO = []; + gl.seriesCandleH = []; + gl.seriesCandleM = []; + gl.seriesCandleL = []; + gl.seriesCandleC = []; + gl.seriesRangeStart = []; + gl.seriesRangeEnd = []; + gl.seriesRange = []; + gl.seriesPercent = []; + gl.seriesGoals = []; + gl.seriesX = []; + gl.seriesZ = []; + gl.seriesNames = []; + gl.seriesTotals = []; + gl.seriesLog = []; + gl.seriesColors = []; + gl.stackedSeriesTotals = []; + gl.seriesXvalues = []; // we will need this in tooltip (it's x position) + // when we will have unequal x values, we will need + // some way to get x value depending on mouse pointer + + gl.seriesYvalues = []; // we will need this when deciding which series + // user hovered on + + gl.labels = []; + gl.hasXaxisGroups = false; + gl.groups = []; + gl.hasSeriesGroups = false; + gl.seriesGroups = []; + gl.categoryLabels = []; + gl.timescaleLabels = []; + gl.noLabelsProvided = false; + gl.resizeTimer = null; + gl.selectionResizeTimer = null; + gl.delayedElements = []; + gl.pointsArray = []; + gl.dataLabelsRects = []; + gl.isXNumeric = false; + gl.skipLastTimelinelabel = false; + gl.skipFirstTimelinelabel = false; + gl.isDataXYZ = false; + gl.isMultiLineX = false; + gl.isMultipleYAxis = false; + gl.maxY = -Number.MAX_VALUE; + gl.minY = Number.MIN_VALUE; + gl.minYArr = []; + gl.maxYArr = []; + gl.maxX = -Number.MAX_VALUE; + gl.minX = Number.MAX_VALUE; + gl.initialMaxX = -Number.MAX_VALUE; + gl.initialMinX = Number.MAX_VALUE; + gl.maxDate = 0; + gl.minDate = Number.MAX_VALUE; + gl.minZ = Number.MAX_VALUE; + gl.maxZ = -Number.MAX_VALUE; + gl.minXDiff = Number.MAX_VALUE; + gl.yAxisScale = []; + gl.xAxisScale = null; + gl.xAxisTicksPositions = []; + gl.yLabelsCoords = []; + gl.yTitleCoords = []; + gl.barPadForNumericAxis = 0; + gl.padHorizontal = 0; + gl.xRange = 0; + gl.yRange = []; + gl.zRange = 0; + gl.dataPoints = 0; + gl.xTickAmount = 0; + } + }, { + key: "globalVars", + value: function globalVars(config) { + return { + chartID: null, + // chart ID - apexcharts-cuid + cuid: null, + // chart ID - random numbers excluding "apexcharts" part + events: { + beforeMount: [], + mounted: [], + updated: [], + clicked: [], + selection: [], + dataPointSelection: [], + zoomed: [], + scrolled: [] + }, + colors: [], + clientX: null, + clientY: null, + fill: { + colors: [] + }, + stroke: { + colors: [] + }, + dataLabels: { + style: { + colors: [] + } + }, + radarPolygons: { + fill: { + colors: [] + } + }, + markers: { + colors: [], + size: config.markers.size, + largestSize: 0 + }, + animationEnded: false, + isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints, + isDirty: false, + // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update + isExecCalled: false, + // whether user updated the chart through the exec method + initialConfig: null, + // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it + initialSeries: [], + lastXAxis: [], + lastYAxis: [], + columnSeries: null, + labels: [], + // store the text to draw on x axis + // Don't mutate the labels, many things including tooltips depends on it! + timescaleLabels: [], + // store the timescaleLabels Labels in another variable + noLabelsProvided: false, + // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4... + allSeriesCollapsed: false, + collapsedSeries: [], + // when user collapses a series, it goes into this array + collapsedSeriesIndices: [], + // this stores the index of the collapsedSeries instead of whole object for quick access + ancillaryCollapsedSeries: [], + // when user collapses an "alwaysVisible" series, it goes into this array + ancillaryCollapsedSeriesIndices: [], + // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible + risingSeries: [], + // when user re-opens a collapsed series, it goes here + dataFormatXNumeric: false, + // boolean value to indicate user has passed numeric x values + capturedSeriesIndex: -1, + capturedDataPointIndex: -1, + selectedDataPoints: [], + goldenPadding: 35, + // this value is used at a lot of places for spacing purpose + invalidLogScale: false, + // if a user enabled log scale but the data provided is not valid to generate a log scale, turn on this flag + ignoreYAxisIndexes: [], + // when series are being collapsed in multiple y axes, ignore certain index + yAxisSameScaleIndices: [], + maxValsInArrayIndex: 0, + radialSize: 0, + selection: undefined, + zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled, + panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan, + selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection, + yaxis: null, + mousedown: false, + lastClientPosition: {}, + // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning + visibleXRange: undefined, + yValueDecimal: 0, + // are there floating numbers in the series. If yes, this represent the len of the decimals + total: 0, + SVGNS: 'http://www.w3.org/2000/svg', + // svg namespace + svgWidth: 0, + // the whole svg width + svgHeight: 0, + // the whole svg height + noData: false, + // whether there is any data to display or not + locale: {}, + // the current locale values will be preserved here for global access + dom: {}, + // for storing all dom nodes in this particular property + memory: { + methodsToExec: [] + }, + shouldAnimate: true, + skipLastTimelinelabel: false, + // when last label is cropped, skip drawing it + skipFirstTimelinelabel: false, + // when first label is cropped, skip drawing it + delayedElements: [], + // element which appear after animation has finished + axisCharts: true, + // chart type = line or area or bar + // (refer them also as plot charts in the code) + isDataXYZ: false, + // bool: data was provided in a {[x,y,z]} pattern + resized: false, + // bool: user has resized + resizeTimer: null, + // timeout function to make a small delay before + // drawing when user resized + comboCharts: false, + // bool: whether it's a combination of line/column + dataChanged: false, + // bool: has data changed dynamically + previousPaths: [], + // array: when data is changed, it will animate from + // previous paths + allSeriesHasEqualX: true, + pointsArray: [], + // store the points positions here to draw later on hover + // format is - [[x,y],[x,y]... [x,y]] + dataLabelsRects: [], + // store the positions of datalabels to prevent collision + lastDrawnDataLabelsIndexes: [], + hasNullValues: false, + // bool: whether series contains null values + easing: null, + // function: animation effect to apply + zoomed: false, + // whether user has zoomed or not + gridWidth: 0, + // drawable width of actual graphs (series paths) + gridHeight: 0, + // drawable height of actual graphs (series paths) + rotateXLabels: false, + defaultLabels: false, + xLabelFormatter: undefined, + // formatter for x axis labels + yLabelFormatters: [], + xaxisTooltipFormatter: undefined, + // formatter for x axis tooltip + ttKeyFormatter: undefined, + ttVal: undefined, + ttZFormatter: undefined, + LINE_HEIGHT_RATIO: 1.618, + xAxisLabelsHeight: 0, + xAxisGroupLabelsHeight: 0, + xAxisLabelsWidth: 0, + yAxisLabelsWidth: 0, + scaleX: 1, + scaleY: 1, + translateX: 0, + translateY: 0, + translateYAxisX: [], + yAxisWidths: [], + translateXAxisY: 0, + translateXAxisX: 0, + tooltip: null + }; + } + }, { + key: "init", + value: function init(config) { + var globals = this.globalVars(config); + this.initGlobalVars(globals); + globals.initialConfig = Utils$1.extend({}, config); + globals.initialSeries = Utils$1.clone(config.series); + globals.lastXAxis = Utils$1.clone(globals.initialConfig.xaxis); + globals.lastYAxis = Utils$1.clone(globals.initialConfig.yaxis); + return globals; + } + }]); + + return Globals; + }(); + + /** + * ApexCharts Base Class for extending user options with pre-defined ApexCharts config. + * + * @module Base + **/ + + var Base = /*#__PURE__*/function () { + function Base(opts) { + _classCallCheck(this, Base); + + this.opts = opts; + } + + _createClass(Base, [{ + key: "init", + value: function init() { + var config = new Config(this.opts).init({ + responsiveOverride: false + }); + var globals = new Globals().init(config); + var w = { + config: config, + globals: globals + }; + return w; + } + }]); + + return Base; + }(); + + /** + * ApexCharts Fill Class for setting fill options of the paths. + * + * @module Fill + **/ + + var Fill = /*#__PURE__*/function () { + function Fill(ctx) { + _classCallCheck(this, Fill); + + this.ctx = ctx; + this.w = ctx.w; + this.opts = null; + this.seriesIndex = 0; + } + + _createClass(Fill, [{ + key: "clippedImgArea", + value: function clippedImgArea(params) { + var w = this.w; + var cnf = w.config; + var svgW = parseInt(w.globals.gridWidth, 10); + var svgH = parseInt(w.globals.gridHeight, 10); + var size = svgW > svgH ? svgW : svgH; + var fillImg = params.image; + var imgWidth = 0; + var imgHeight = 0; + + if (typeof params.width === 'undefined' && typeof params.height === 'undefined') { + if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) { + imgWidth = cnf.fill.image.width + 1; + imgHeight = cnf.fill.image.height; + } else { + imgWidth = size + 1; + imgHeight = size; + } + } else { + imgWidth = params.width; + imgHeight = params.height; + } + + var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern'); + Graphics.setAttrs(elPattern, { + id: params.patternID, + patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse', + width: imgWidth + 'px', + height: imgHeight + 'px' + }); + var elImage = document.createElementNS(w.globals.SVGNS, 'image'); + elPattern.appendChild(elImage); + elImage.setAttributeNS(window.SVG.xlink, 'href', fillImg); + Graphics.setAttrs(elImage, { + x: 0, + y: 0, + preserveAspectRatio: 'none', + width: imgWidth + 'px', + height: imgHeight + 'px' + }); + elImage.style.opacity = params.opacity; + w.globals.dom.elDefs.node.appendChild(elPattern); + } + }, { + key: "getSeriesIndex", + value: function getSeriesIndex(opts) { + var w = this.w; + + if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' || w.config.chart.type === 'treemap') { + this.seriesIndex = opts.seriesNumber; + } else { + this.seriesIndex = opts.seriesNumber % w.globals.series.length; + } + + return this.seriesIndex; + } + }, { + key: "fillPath", + value: function fillPath(opts) { + var w = this.w; + this.opts = opts; + var cnf = this.w.config; + var pathFill; + var patternFill, gradientFill; + this.seriesIndex = this.getSeriesIndex(opts); + var fillColors = this.getFillColors(); + var fillColor = fillColors[this.seriesIndex]; //override fillcolor if user inputted color with data + + if (w.globals.seriesColors[this.seriesIndex] !== undefined) { + fillColor = w.globals.seriesColors[this.seriesIndex]; + } + + if (typeof fillColor === 'function') { + fillColor = fillColor({ + seriesIndex: this.seriesIndex, + dataPointIndex: opts.dataPointIndex, + value: opts.value, + w: w + }); + } + + var fillType = opts.fillType ? opts.fillType : this.getFillType(this.seriesIndex); + var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity; + + if (opts.color) { + fillColor = opts.color; + } + + var defaultColor = fillColor; + + if (fillColor.indexOf('rgb') === -1) { + if (fillColor.length < 9) { + // if the hex contains alpha and is of 9 digit, skip the opacity + defaultColor = Utils$1.hexToRgba(fillColor, fillOpacity); + } + } else { + if (fillColor.indexOf('rgba') > -1) { + fillOpacity = Utils$1.getOpacityFromRGBA(fillColor); + } + } + + if (opts.opacity) fillOpacity = opts.opacity; + + if (fillType === 'pattern') { + patternFill = this.handlePatternFill({ + fillConfig: opts.fillConfig, + patternFill: patternFill, + fillColor: fillColor, + fillOpacity: fillOpacity, + defaultColor: defaultColor + }); + } + + if (fillType === 'gradient') { + gradientFill = this.handleGradientFill({ + fillConfig: opts.fillConfig, + fillColor: fillColor, + fillOpacity: fillOpacity, + i: this.seriesIndex + }); + } + + if (fillType === 'image') { + var imgSrc = cnf.fill.image.src; + var patternID = opts.patternID ? opts.patternID : ''; + this.clippedImgArea({ + opacity: fillOpacity, + image: Array.isArray(imgSrc) ? opts.seriesNumber < imgSrc.length ? imgSrc[opts.seriesNumber] : imgSrc[0] : imgSrc, + width: opts.width ? opts.width : undefined, + height: opts.height ? opts.height : undefined, + patternUnits: opts.patternUnits, + patternID: "pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID) + }); + pathFill = "url(#pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID, ")"); + } else if (fillType === 'gradient') { + pathFill = gradientFill; + } else if (fillType === 'pattern') { + pathFill = patternFill; + } else { + pathFill = defaultColor; + } // override pattern/gradient if opts.solid is true + + + if (opts.solid) { + pathFill = defaultColor; + } + + return pathFill; + } + }, { + key: "getFillType", + value: function getFillType(seriesIndex) { + var w = this.w; + + if (Array.isArray(w.config.fill.type)) { + return w.config.fill.type[seriesIndex]; + } else { + return w.config.fill.type; + } + } + }, { + key: "getFillColors", + value: function getFillColors() { + var w = this.w; + var cnf = w.config; + var opts = this.opts; + var fillColors = []; + + if (w.globals.comboCharts) { + if (w.config.series[this.seriesIndex].type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors; + } else { + fillColors.push(w.globals.stroke.colors); + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors; + } else { + fillColors.push(w.globals.fill.colors); + } + } + } else { + if (cnf.chart.type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors; + } else { + fillColors.push(w.globals.stroke.colors); + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors; + } else { + fillColors.push(w.globals.fill.colors); + } + } + } // colors passed in arguments + + + if (typeof opts.fillColors !== 'undefined') { + fillColors = []; + + if (Array.isArray(opts.fillColors)) { + fillColors = opts.fillColors.slice(); + } else { + fillColors.push(opts.fillColors); + } + } + + return fillColors; + } + }, { + key: "handlePatternFill", + value: function handlePatternFill(_ref) { + var fillConfig = _ref.fillConfig, + patternFill = _ref.patternFill, + fillColor = _ref.fillColor, + fillOpacity = _ref.fillOpacity, + defaultColor = _ref.defaultColor; + var fillCnf = this.w.config.fill; + + if (fillConfig) { + fillCnf = fillConfig; + } + + var opts = this.opts; + var graphics = new Graphics(this.ctx); + var patternStrokeWidth = Array.isArray(fillCnf.pattern.strokeWidth) ? fillCnf.pattern.strokeWidth[this.seriesIndex] : fillCnf.pattern.strokeWidth; + var patternLineColor = fillColor; + + if (Array.isArray(fillCnf.pattern.style)) { + if (typeof fillCnf.pattern.style[opts.seriesNumber] !== 'undefined') { + var pf = graphics.drawPattern(fillCnf.pattern.style[opts.seriesNumber], fillCnf.pattern.width, fillCnf.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity); + patternFill = pf; + } else { + patternFill = defaultColor; + } + } else { + patternFill = graphics.drawPattern(fillCnf.pattern.style, fillCnf.pattern.width, fillCnf.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity); + } + + return patternFill; + } + }, { + key: "handleGradientFill", + value: function handleGradientFill(_ref2) { + var fillColor = _ref2.fillColor, + fillOpacity = _ref2.fillOpacity, + fillConfig = _ref2.fillConfig, + i = _ref2.i; + var fillCnf = this.w.config.fill; + + if (fillConfig) { + fillCnf = _objectSpread2(_objectSpread2({}, fillCnf), fillConfig); + } + + var opts = this.opts; + var graphics = new Graphics(this.ctx); + var utils = new Utils$1(); + var type = fillCnf.gradient.type; + var gradientFrom = fillColor; + var gradientTo; + var opacityFrom = fillCnf.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(fillCnf.gradient.opacityFrom) ? fillCnf.gradient.opacityFrom[i] : fillCnf.gradient.opacityFrom; + + if (gradientFrom.indexOf('rgba') > -1) { + opacityFrom = Utils$1.getOpacityFromRGBA(gradientFrom); + } + + var opacityTo = fillCnf.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(fillCnf.gradient.opacityTo) ? fillCnf.gradient.opacityTo[i] : fillCnf.gradient.opacityTo; + + if (fillCnf.gradient.gradientToColors === undefined || fillCnf.gradient.gradientToColors.length === 0) { + if (fillCnf.gradient.shade === 'dark') { + gradientTo = utils.shadeColor(parseFloat(fillCnf.gradient.shadeIntensity) * -1, fillColor.indexOf('rgb') > -1 ? Utils$1.rgb2hex(fillColor) : fillColor); + } else { + gradientTo = utils.shadeColor(parseFloat(fillCnf.gradient.shadeIntensity), fillColor.indexOf('rgb') > -1 ? Utils$1.rgb2hex(fillColor) : fillColor); + } + } else { + if (fillCnf.gradient.gradientToColors[opts.seriesNumber]) { + var gToColor = fillCnf.gradient.gradientToColors[opts.seriesNumber]; + gradientTo = gToColor; + + if (gToColor.indexOf('rgba') > -1) { + opacityTo = Utils$1.getOpacityFromRGBA(gToColor); + } + } else { + gradientTo = fillColor; + } + } + + if (fillCnf.gradient.gradientFrom) { + gradientFrom = fillCnf.gradient.gradientFrom; + } + + if (fillCnf.gradient.gradientTo) { + gradientTo = fillCnf.gradient.gradientTo; + } + + if (fillCnf.gradient.inverseColors) { + var t = gradientFrom; + gradientFrom = gradientTo; + gradientTo = t; + } + + if (gradientFrom.indexOf('rgb') > -1) { + gradientFrom = Utils$1.rgb2hex(gradientFrom); + } + + if (gradientTo.indexOf('rgb') > -1) { + gradientTo = Utils$1.rgb2hex(gradientTo); + } + + return graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, fillCnf.gradient.stops, fillCnf.gradient.colorStops, i); + } + }]); + + return Fill; + }(); + + /** + * ApexCharts Markers Class for drawing points on y values in axes charts. + * + * @module Markers + **/ + + var Markers = /*#__PURE__*/function () { + function Markers(ctx, opts) { + _classCallCheck(this, Markers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Markers, [{ + key: "setGlobalMarkerSize", + value: function setGlobalMarkerSize() { + var w = this.w; + w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size]; + + if (w.globals.markers.size.length > 0) { + if (w.globals.markers.size.length < w.globals.series.length + 1) { + for (var i = 0; i <= w.globals.series.length; i++) { + if (typeof w.globals.markers.size[i] === 'undefined') { + w.globals.markers.size.push(w.globals.markers.size[0]); + } + } + } + } else { + w.globals.markers.size = w.config.series.map(function (s) { + return w.config.markers.size; + }); + } + } + }, { + key: "plotChartMarkers", + value: function plotChartMarkers(pointsPos, seriesIndex, j, pSize) { + var alwaysDrawMarker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var w = this.w; + var i = seriesIndex; + var p = pointsPos; + var elPointsWrap = null; + var graphics = new Graphics(this.ctx); + var point; + var hasDiscreteMarkers = w.config.markers.discrete && w.config.markers.discrete.length; + + if (w.globals.markers.size[seriesIndex] > 0 || alwaysDrawMarker || hasDiscreteMarkers) { + elPointsWrap = graphics.group({ + class: alwaysDrawMarker || hasDiscreteMarkers ? '' : 'apexcharts-series-markers' + }); + elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")")); + } + + if (Array.isArray(p.x)) { + for (var q = 0; q < p.x.length; q++) { + var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it + + if (j === 1 && q === 0) dataPointIndex = 0; + if (j === 1 && q === 1) dataPointIndex = 1; + var PointClasses = 'apexcharts-marker'; + + if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) { + PointClasses += ' no-pointer-events'; + } + + var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0; + + if (shouldMarkerDraw || alwaysDrawMarker || hasDiscreteMarkers) { + if (Utils$1.isNumber(p.y[q])) { + PointClasses += " w".concat(Utils$1.randomId()); + } else { + PointClasses = 'apexcharts-nullpoint'; + } + + var opts = this.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex + }); + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + opts.pointFillColor = w.config.series[i].data[dataPointIndex].fillColor; + } + + if (w.config.series[i].data[dataPointIndex].strokeColor) { + opts.pointStrokeColor = w.config.series[i].data[dataPointIndex].strokeColor; + } + } + + if (pSize) { + opts.pSize = pSize; + } + + if (p.x[q] < 0 || p.x[q] > w.globals.gridWidth || p.y[q] < 0 || p.y[q] > w.globals.gridHeight) { + opts.pSize = 0; + } + + point = graphics.drawMarker(p.x[q], p.y[q], opts); + point.attr('rel', dataPointIndex); + point.attr('j', dataPointIndex); + point.attr('index', seriesIndex); + point.node.setAttribute('default-marker-size', opts.pSize); + var filters = new Filters(this.ctx); + filters.setSelectionFilter(point, seriesIndex, dataPointIndex); + this.addEvents(point); + + if (elPointsWrap) { + elPointsWrap.add(point); + } + } else { + // dynamic array creation - multidimensional + if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = []; + w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]); + } + } + } + + return elPointsWrap; + } + }, { + key: "getMarkerConfig", + value: function getMarkerConfig(_ref) { + var cssClass = _ref.cssClass, + seriesIndex = _ref.seriesIndex, + _ref$dataPointIndex = _ref.dataPointIndex, + dataPointIndex = _ref$dataPointIndex === void 0 ? null : _ref$dataPointIndex, + _ref$finishRadius = _ref.finishRadius, + finishRadius = _ref$finishRadius === void 0 ? null : _ref$finishRadius; + var w = this.w; + var pStyle = this.getMarkerStyle(seriesIndex); + var pSize = w.globals.markers.size[seriesIndex]; + var m = w.config.markers; // discrete markers is an option where user can specify a particular marker with different shape, size and color + + if (dataPointIndex !== null && m.discrete.length) { + m.discrete.map(function (marker) { + if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) { + pStyle.pointStrokeColor = marker.strokeColor; + pStyle.pointFillColor = marker.fillColor; + pSize = marker.size; + pStyle.pointShape = marker.shape; + } + }); + } + + return { + pSize: finishRadius === null ? pSize : finishRadius, + pRadius: m.radius, + width: Array.isArray(m.width) ? m.width[seriesIndex] : m.width, + height: Array.isArray(m.height) ? m.height[seriesIndex] : m.height, + pointStrokeWidth: Array.isArray(m.strokeWidth) ? m.strokeWidth[seriesIndex] : m.strokeWidth, + pointStrokeColor: pStyle.pointStrokeColor, + pointFillColor: pStyle.pointFillColor, + shape: pStyle.pointShape || (Array.isArray(m.shape) ? m.shape[seriesIndex] : m.shape), + class: cssClass, + pointStrokeOpacity: Array.isArray(m.strokeOpacity) ? m.strokeOpacity[seriesIndex] : m.strokeOpacity, + pointStrokeDashArray: Array.isArray(m.strokeDashArray) ? m.strokeDashArray[seriesIndex] : m.strokeDashArray, + pointFillOpacity: Array.isArray(m.fillOpacity) ? m.fillOpacity[seriesIndex] : m.fillOpacity, + seriesIndex: seriesIndex + }; + } + }, { + key: "addEvents", + value: function addEvents(circle) { + var w = this.w; + var graphics = new Graphics(this.ctx); + circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle)); + circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle)); + circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle)); + circle.node.addEventListener('click', w.config.markers.onClick); + circle.node.addEventListener('dblclick', w.config.markers.onDblClick); + circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), { + passive: true + }); + } + }, { + key: "getMarkerStyle", + value: function getMarkerStyle(seriesIndex) { + var w = this.w; + var colors = w.globals.markers.colors; + var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors; + var pointStrokeColor = Array.isArray(strokeColors) ? strokeColors[seriesIndex] : strokeColors; + var pointFillColor = Array.isArray(colors) ? colors[seriesIndex] : colors; + return { + pointStrokeColor: pointStrokeColor, + pointFillColor: pointFillColor + }; + } + }]); + + return Markers; + }(); + + /** + * ApexCharts Scatter Class. + * This Class also handles bubbles chart as currently there is no major difference in drawing them, + * @module Scatter + **/ + + var Scatter = /*#__PURE__*/function () { + function Scatter(ctx) { + _classCallCheck(this, Scatter); + + this.ctx = ctx; + this.w = ctx.w; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + } + + _createClass(Scatter, [{ + key: "draw", + value: function draw(elSeries, j, opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var realIndex = opts.realIndex; + var pointsPos = opts.pointsPos; + var zRatio = opts.zRatio; + var elPointsMain = opts.elParent; + var elPointsWrap = graphics.group({ + class: "apexcharts-series-markers apexcharts-series-".concat(w.config.chart.type) + }); + elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")")); + + if (Array.isArray(pointsPos.x)) { + for (var q = 0; q < pointsPos.x.length; q++) { + var dataPointIndex = j + 1; + var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it + + if (j === 0 && q === 0) dataPointIndex = 0; + if (j === 0 && q === 1) dataPointIndex = 1; + var radius = 0; + var finishRadius = w.globals.markers.size[realIndex]; + + if (zRatio !== Infinity) { + // means we have a bubble + var bubble = w.config.plotOptions.bubble; + finishRadius = w.globals.seriesZ[realIndex][dataPointIndex]; + + if (bubble.zScaling) { + finishRadius /= zRatio; + } + + if (bubble.minBubbleRadius && finishRadius < bubble.minBubbleRadius) { + finishRadius = bubble.minBubbleRadius; + } + + if (bubble.maxBubbleRadius && finishRadius > bubble.maxBubbleRadius) { + finishRadius = bubble.maxBubbleRadius; + } + } + + if (!w.config.chart.animations.enabled) { + radius = finishRadius; + } + + var x = pointsPos.x[q]; + var y = pointsPos.y[q]; + radius = radius || 0; + + if (y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') { + shouldDraw = false; + } + + if (shouldDraw) { + var point = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j); + elPointsWrap.add(point); + } + + elPointsMain.add(elPointsWrap); + } + } + } + }, { + key: "drawPoint", + value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) { + var w = this.w; + var i = realIndex; + var anim = new Animations(this.ctx); + var filters = new Filters(this.ctx); + var fill = new Fill(this.ctx); + var markers = new Markers(this.ctx); + var graphics = new Graphics(this.ctx); + var markerConfig = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex: dataPointIndex, + finishRadius: w.config.chart.type === 'bubble' || w.globals.comboCharts && w.config.series[realIndex] && w.config.series[realIndex].type === 'bubble' ? finishRadius : null + }); + finishRadius = markerConfig.pSize; + var pathFillCircle = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex: dataPointIndex, + color: markerConfig.pointFillColor, + patternUnits: 'objectBoundingBox', + value: w.globals.series[realIndex][j] + }); + var el; + + if (markerConfig.shape === 'circle') { + el = graphics.drawCircle(radius); + } else if (markerConfig.shape === 'square' || markerConfig.shape === 'rect') { + el = graphics.drawRect(0, 0, markerConfig.width - markerConfig.pointStrokeWidth / 2, markerConfig.height - markerConfig.pointStrokeWidth / 2, markerConfig.pRadius); + } + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor; + } + } + + el.attr({ + x: x - markerConfig.width / 2 - markerConfig.pointStrokeWidth / 2, + y: y - markerConfig.height / 2 - markerConfig.pointStrokeWidth / 2, + cx: x, + cy: y, + fill: pathFillCircle, + 'fill-opacity': markerConfig.pointFillOpacity, + stroke: markerConfig.pointStrokeColor, + r: finishRadius, + 'stroke-width': markerConfig.pointStrokeWidth, + 'stroke-dasharray': markerConfig.pointStrokeDashArray, + 'stroke-opacity': markerConfig.pointStrokeOpacity + }); + + if (w.config.chart.dropShadow.enabled) { + var dropShadow = w.config.chart.dropShadow; + filters.dropShadow(el, dropShadow, realIndex); + } + + if (this.initialAnim && !w.globals.dataChanged && !w.globals.resized) { + var speed = w.config.chart.animations.speed; + anim.animateMarker(el, 0, markerConfig.shape === 'circle' ? finishRadius : { + width: markerConfig.width, + height: markerConfig.height + }, speed, w.globals.easing, function () { + window.setTimeout(function () { + anim.animationCompleted(el); + }, 100); + }); + } else { + w.globals.animationEnded = true; + } + + if (w.globals.dataChanged && markerConfig.shape === 'circle') { + if (this.dynamicAnim) { + var _speed = w.config.chart.animations.dynamicAnimation.speed; + var prevX, prevY, prevR; + var prevPathJ = null; + prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j]; + + if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) { + // series containing less elements will ignore these values and revert to 0 + prevX = prevPathJ.x; + prevY = prevPathJ.y; + prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius; + } + + for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) { + if (w.globals.collapsedSeries[cs].index === realIndex) { + _speed = 1; + finishRadius = 0; + } + } + + if (x === 0 && y === 0) finishRadius = 0; + anim.animateCircle(el, { + cx: prevX, + cy: prevY, + r: prevR + }, { + cx: x, + cy: y, + r: finishRadius + }, _speed, w.globals.easing); + } else { + el.attr({ + r: finishRadius + }); + } + } + + el.attr({ + rel: dataPointIndex, + j: dataPointIndex, + index: realIndex, + 'default-marker-size': finishRadius + }); + filters.setSelectionFilter(el, realIndex, dataPointIndex); + markers.addEvents(el); + el.node.classList.add('apexcharts-marker'); + return el; + } + }, { + key: "centerTextInBubble", + value: function centerTextInBubble(y) { + var w = this.w; + y = y + parseInt(w.config.dataLabels.style.fontSize, 10) / 4; + return { + y: y + }; + } + }]); + + return Scatter; + }(); + + /** + * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts. + * + * @module DataLabels + **/ + + var DataLabels = /*#__PURE__*/function () { + function DataLabels(ctx) { + _classCallCheck(this, DataLabels); + + this.ctx = ctx; + this.w = ctx.w; + } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that + // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again + + + _createClass(DataLabels, [{ + key: "dataLabelsCorrection", + value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var drawnextLabel = false; // + + var textRects = graphics.getTextRects(val, fontSize); + var width = textRects.width; + var height = textRects.height; + if (y < 0) y = 0; + if (y > w.globals.gridHeight + height) y = w.globals.gridHeight + height / 2; // first value in series, so push an empty array + + if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array + + w.globals.dataLabelsRects[i].push({ + x: x, + y: y, + width: width, + height: height + }); + var len = w.globals.dataLabelsRects[i].length - 2; + var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0; + + if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') { + var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex]; + + if ( // next label forward and x not intersecting + x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards + ) { + // the 2 indexes don't override, so OK to draw next label + drawnextLabel = true; + } + } + + if (dataPointIndex === 0 || alwaysDrawDataLabel) { + drawnextLabel = true; + } + + return { + x: x, + y: y, + textRects: textRects, + drawnextLabel: drawnextLabel + }; + } + }, { + key: "drawDataLabel", + value: function drawDataLabel(_ref) { + var _this = this; + + var type = _ref.type, + pos = _ref.pos, + i = _ref.i, + j = _ref.j, + isRangeStart = _ref.isRangeStart, + _ref$strokeWidth = _ref.strokeWidth, + strokeWidth = _ref$strokeWidth === void 0 ? 2 : _ref$strokeWidth; + // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions + // all other charts like radar / bars / heatmaps will define their own drawDataLabel routine + var w = this.w; + var graphics = new Graphics(this.ctx); + var dataLabelsConfig = w.config.dataLabels; + var x = 0; + var y = 0; + var dataPointIndex = j; + var elDataLabelsWrap = null; + + if (!dataLabelsConfig.enabled || !Array.isArray(pos.x)) { + return elDataLabelsWrap; + } + + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + + for (var q = 0; q < pos.x.length; q++) { + x = pos.x[q] + dataLabelsConfig.offsetX; + y = pos.y[q] + dataLabelsConfig.offsetY + strokeWidth; + + if (!isNaN(x)) { + // a small hack as we have 2 points for the first val to connect it + if (j === 1 && q === 0) dataPointIndex = 0; + if (j === 1 && q === 1) dataPointIndex = 1; + var val = w.globals.series[i][dataPointIndex]; + + if (type === 'rangeArea') { + if (isRangeStart) { + val = w.globals.seriesRangeStart[i][dataPointIndex]; + } else { + val = w.globals.seriesRangeEnd[i][dataPointIndex]; + } + } + + var text = ''; + + var getText = function getText(v) { + return w.config.dataLabels.formatter(v, { + ctx: _this.ctx, + seriesIndex: i, + dataPointIndex: dataPointIndex, + w: w + }); + }; + + if (w.config.chart.type === 'bubble') { + val = w.globals.seriesZ[i][dataPointIndex]; + text = getText(val); + y = pos.y[q]; + var scatter = new Scatter(this.ctx); + var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex); + y = centerTextInBubbleCoords.y; + } else { + if (typeof val !== 'undefined') { + text = getText(val); + } + } + + this.plotDataLabelsText({ + x: x, + y: y, + text: text, + i: i, + j: dataPointIndex, + parent: elDataLabelsWrap, + offsetCorrection: true, + dataLabelsConfig: w.config.dataLabels + }); + } + } + + return elDataLabelsWrap; + } + }, { + key: "plotDataLabelsText", + value: function plotDataLabelsText(opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var x = opts.x, + y = opts.y, + i = opts.i, + j = opts.j, + text = opts.text, + textAnchor = opts.textAnchor, + fontSize = opts.fontSize, + parent = opts.parent, + dataLabelsConfig = opts.dataLabelsConfig, + color = opts.color, + alwaysDrawDataLabel = opts.alwaysDrawDataLabel, + offsetCorrection = opts.offsetCorrection; + + if (Array.isArray(w.config.dataLabels.enabledOnSeries)) { + if (w.config.dataLabels.enabledOnSeries.indexOf(i) < 0) { + return; + } + } + + var correctedLabels = { + x: x, + y: y, + drawnextLabel: true, + textRects: null + }; + + if (offsetCorrection) { + correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize, 10)); + } // when zoomed, we don't need to correct labels offsets, + // but if normally, labels get cropped, correct them + + + if (!w.globals.zoomed) { + x = correctedLabels.x; + y = correctedLabels.y; + } + + if (correctedLabels.textRects) { + // fixes #2264 + if (x < -10 - correctedLabels.textRects.width || x > w.globals.gridWidth + correctedLabels.textRects.width + 10) { + // datalabels fall outside drawing area, so draw a blank label + text = ''; + } + } + + var dataLabelColor = w.globals.dataLabels.style.colors[i]; + + if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.dataLabels.distributed) { + dataLabelColor = w.globals.dataLabels.style.colors[j]; + } + + if (typeof dataLabelColor === 'function') { + dataLabelColor = dataLabelColor({ + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + if (color) { + dataLabelColor = color; + } + + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + + if (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') { + // for certain chart types, we handle offsets while calculating datalabels pos + // why? because bars/column may have negative values and based on that + // offsets becomes reversed + offX = 0; + offY = 0; + } + + if (correctedLabels.drawnextLabel) { + var dataLabelText = graphics.drawText({ + width: 100, + height: parseInt(dataLabelsConfig.style.fontSize, 10), + x: x + offX, + y: y + offY, + foreColor: dataLabelColor, + textAnchor: textAnchor || dataLabelsConfig.textAnchor, + text: text, + fontSize: fontSize || dataLabelsConfig.style.fontSize, + fontFamily: dataLabelsConfig.style.fontFamily, + fontWeight: dataLabelsConfig.style.fontWeight || 'normal' + }); + dataLabelText.attr({ + class: 'apexcharts-datalabel', + cx: x, + cy: y + }); + + if (dataLabelsConfig.dropShadow.enabled) { + var textShadow = dataLabelsConfig.dropShadow; + var filters = new Filters(this.ctx); + filters.dropShadow(dataLabelText, textShadow); + } + + parent.add(dataLabelText); + + if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') { + w.globals.lastDrawnDataLabelsIndexes[i] = []; + } + + w.globals.lastDrawnDataLabelsIndexes[i].push(j); + } + } + }, { + key: "addBackgroundToDataLabel", + value: function addBackgroundToDataLabel(el, coords) { + var w = this.w; + var bCnf = w.config.dataLabels.background; + var paddingH = bCnf.padding; + var paddingV = bCnf.padding / 2; + var width = coords.width; + var height = coords.height; + var graphics = new Graphics(this.ctx); + var elRect = graphics.drawRect(coords.x - paddingH, coords.y - paddingV / 2, width + paddingH * 2, height + paddingV, bCnf.borderRadius, w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background, bCnf.opacity, bCnf.borderWidth, bCnf.borderColor); + + if (bCnf.dropShadow.enabled) { + var filters = new Filters(this.ctx); + filters.dropShadow(elRect, bCnf.dropShadow); + } + + return elRect; + } + }, { + key: "dataLabelsBackground", + value: function dataLabelsBackground() { + var w = this.w; + if (w.config.chart.type === 'bubble') return; + var elDataLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-datalabels text'); + + for (var i = 0; i < elDataLabels.length; i++) { + var el = elDataLabels[i]; + var coords = el.getBBox(); + var elRect = null; + + if (coords.width && coords.height) { + elRect = this.addBackgroundToDataLabel(el, coords); + } + + if (elRect) { + el.parentNode.insertBefore(elRect.node, el); + var background = el.getAttribute('fill'); + var shouldAnim = w.config.chart.animations.enabled && !w.globals.resized && !w.globals.dataChanged; + + if (shouldAnim) { + elRect.animate().attr({ + fill: background + }); + } else { + elRect.attr({ + fill: background + }); + } + + el.setAttribute('fill', w.config.dataLabels.background.foreColor); + } + } + } + }, { + key: "bringForward", + value: function bringForward() { + var w = this.w; + var elDataLabelsNodes = w.globals.dom.baseEl.querySelectorAll('.apexcharts-datalabels'); + var elSeries = w.globals.dom.baseEl.querySelector('.apexcharts-plot-series:last-child'); + + for (var i = 0; i < elDataLabelsNodes.length; i++) { + if (elSeries) { + elSeries.insertBefore(elDataLabelsNodes[i], elSeries.nextSibling); + } + } + } + }]); + + return DataLabels; + }(); + + /** + * ApexCharts Series Class for interaction with the Series of the chart. + * + * @module Series + **/ + + var Series = /*#__PURE__*/function () { + function Series(ctx) { + _classCallCheck(this, Series); + + this.ctx = ctx; + this.w = ctx.w; + this.legendInactiveClass = 'legend-mouseover-inactive'; + } + + _createClass(Series, [{ + key: "getAllSeriesEls", + value: function getAllSeriesEls() { + return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series"); + } + }, { + key: "getSeriesByName", + value: function getSeriesByName(seriesName) { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner .apexcharts-series[seriesName='".concat(Utils$1.escapeString(seriesName), "']")); + } + }, { + key: "isSeriesHidden", + value: function isSeriesHidden(seriesName) { + var targetElement = this.getSeriesByName(seriesName); + var realIndex = parseInt(targetElement.getAttribute('data:realIndex'), 10); + var isHidden = targetElement.classList.contains('apexcharts-series-collapsed'); + return { + isHidden: isHidden, + realIndex: realIndex + }; + } + }, { + key: "addCollapsedClassToSeries", + value: function addCollapsedClassToSeries(elSeries, index) { + var w = this.w; + + function iterateOnAllCollapsedSeries(series) { + for (var cs = 0; cs < series.length; cs++) { + if (series[cs].index === index) { + elSeries.node.classList.add('apexcharts-series-collapsed'); + } + } + } + + iterateOnAllCollapsedSeries(w.globals.collapsedSeries); + iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries); + } + }, { + key: "toggleSeries", + value: function toggleSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, isSeriesHidden.isHidden); + return isSeriesHidden.isHidden; + } + }, { + key: "showSeries", + value: function showSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + + if (isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, true); + } + } + }, { + key: "hideSeries", + value: function hideSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + + if (!isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, false); + } + } + }, { + key: "resetSeries", + value: function resetSeries() { + var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var shouldResetZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var shouldResetCollapsed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var w = this.w; + var series = Utils$1.clone(w.globals.initialSeries); + w.globals.previousPaths = []; + + if (shouldResetCollapsed) { + w.globals.collapsedSeries = []; + w.globals.ancillaryCollapsedSeries = []; + w.globals.collapsedSeriesIndices = []; + w.globals.ancillaryCollapsedSeriesIndices = []; + } else { + series = this.emptyCollapsedSeries(series); + } + + w.config.series = series; + + if (shouldUpdateChart) { + if (shouldResetZoom) { + w.globals.zoomed = false; + this.ctx.updateHelpers.revertDefaultAxisMinMax(); + } + + this.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + } + }, { + key: "emptyCollapsedSeries", + value: function emptyCollapsedSeries(series) { + var w = this.w; + + for (var i = 0; i < series.length; i++) { + if (w.globals.collapsedSeriesIndices.indexOf(i) > -1) { + series[i].data = []; + } + } + + return series; + } + }, { + key: "toggleSeriesOnHover", + value: function toggleSeriesOnHover(e, targetElement) { + var w = this.w; + if (!targetElement) targetElement = e.target; + var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels"); + + if (e.type === 'mousemove') { + var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1; + var seriesEl = null; + var dataLabelEl = null; + + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']")); + dataLabelEl = w.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(seriesCnt, "']")); + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']")); + } + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "'] path")); + } + + for (var se = 0; se < allSeriesEls.length; se++) { + allSeriesEls[se].classList.add(this.legendInactiveClass); + } + + if (seriesEl !== null) { + if (!w.globals.axisCharts) { + seriesEl.parentNode.classList.remove(this.legendInactiveClass); + } + + seriesEl.classList.remove(this.legendInactiveClass); + + if (dataLabelEl !== null) { + dataLabelEl.classList.remove(this.legendInactiveClass); + } + } + } else if (e.type === 'mouseout') { + for (var _se = 0; _se < allSeriesEls.length; _se++) { + allSeriesEls[_se].classList.remove(this.legendInactiveClass); + } + } + } + }, { + key: "highlightRangeInSeries", + value: function highlightRangeInSeries(e, targetElement) { + var _this = this; + + var w = this.w; + var allHeatMapElements = w.globals.dom.baseEl.getElementsByClassName('apexcharts-heatmap-rect'); + + var activeInactive = function activeInactive(action) { + for (var i = 0; i < allHeatMapElements.length; i++) { + allHeatMapElements[i].classList[action](_this.legendInactiveClass); + } + }; + + var removeInactiveClassFromHoveredRange = function removeInactiveClassFromHoveredRange(range) { + for (var i = 0; i < allHeatMapElements.length; i++) { + var val = parseInt(allHeatMapElements[i].getAttribute('val'), 10); + + if (val >= range.from && val <= range.to) { + allHeatMapElements[i].classList.remove(_this.legendInactiveClass); + } + } + }; + + if (e.type === 'mousemove') { + var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1; + activeInactive('add'); + var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt]; + removeInactiveClassFromHoveredRange(range); + } else if (e.type === 'mouseout') { + activeInactive('remove'); + } + } + }, { + key: "getActiveConfigSeriesIndex", + value: function getActiveConfigSeriesIndex() { + var order = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc'; + var chartTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + var w = this.w; + var activeIndex = 0; + + if (w.config.series.length > 1) { + // active series flag is required to know if user has not deactivated via legend click + var activeSeriesIndex = w.config.series.map(function (s, index) { + var checkChartType = function checkChartType() { + if (w.globals.comboCharts) { + return chartTypes.length === 0 || chartTypes.length && chartTypes.indexOf(w.config.series[index].type) > -1; + } + + return true; + }; + + var hasData = s.data && s.data.length > 0 && w.globals.collapsedSeriesIndices.indexOf(index) === -1; + return hasData && checkChartType() ? index : -1; + }); + + for (var a = order === 'asc' ? 0 : activeSeriesIndex.length - 1; order === 'asc' ? a < activeSeriesIndex.length : a >= 0; order === 'asc' ? a++ : a--) { + if (activeSeriesIndex[a] !== -1) { + activeIndex = activeSeriesIndex[a]; + break; + } + } + } + + return activeIndex; + } + }, { + key: "getBarSeriesIndices", + value: function getBarSeriesIndices() { + var w = this.w; + + if (w.globals.comboCharts) { + return this.w.config.series.map(function (s, i) { + return s.type === 'bar' || s.type === 'column' ? i : -1; + }).filter(function (i) { + return i !== -1; + }); + } + + return this.w.config.series.map(function (s, i) { + return i; + }); + } + }, { + key: "getPreviousPaths", + value: function getPreviousPaths() { + var w = this.w; + w.globals.previousPaths = []; + + function pushPaths(seriesEls, i, type) { + var paths = seriesEls[i].childNodes; + var dArr = { + type: type, + paths: [], + realIndex: seriesEls[i].getAttribute('data:realIndex') + }; + + for (var j = 0; j < paths.length; j++) { + if (paths[j].hasAttribute('pathTo')) { + var d = paths[j].getAttribute('pathTo'); + dArr.paths.push({ + d: d + }); + } + } + + w.globals.previousPaths.push(dArr); + } + + var getPaths = function getPaths(chartType) { + return w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(chartType, "-series .apexcharts-series")); + }; + + var chartTypes = ['line', 'area', 'bar', 'rangebar', 'rangeArea', 'candlestick', 'radar']; + chartTypes.forEach(function (type) { + var paths = getPaths(type); + + for (var p = 0; p < paths.length; p++) { + pushPaths(paths, p, type); + } + }); + this.handlePrevBubbleScatterPaths('bubble'); + this.handlePrevBubbleScatterPaths('scatter'); + var heatTreeSeries = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(w.config.chart.type, " .apexcharts-series")); + + if (heatTreeSeries.length > 0) { + var _loop = function _loop(h) { + var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(w.config.chart.type, " .apexcharts-series[data\\:realIndex='").concat(h, "'] rect")); + var dArr = []; + + var _loop2 = function _loop2(i) { + var getAttr = function getAttr(x) { + return seriesEls[i].getAttribute(x); + }; + + var rect = { + x: parseFloat(getAttr('x')), + y: parseFloat(getAttr('y')), + width: parseFloat(getAttr('width')), + height: parseFloat(getAttr('height')) + }; + dArr.push({ + rect: rect, + color: seriesEls[i].getAttribute('color') + }); + }; + + for (var i = 0; i < seriesEls.length; i++) { + _loop2(i); + } + + w.globals.previousPaths.push(dArr); + }; + + for (var h = 0; h < heatTreeSeries.length; h++) { + _loop(h); + } + } + + if (!w.globals.axisCharts) { + // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series) + w.globals.previousPaths = w.globals.series; + } + } + }, { + key: "handlePrevBubbleScatterPaths", + value: function handlePrevBubbleScatterPaths(type) { + var w = this.w; + var paths = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(type, "-series .apexcharts-series")); + + if (paths.length > 0) { + for (var s = 0; s < paths.length; s++) { + var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(type, "-series .apexcharts-series[data\\:realIndex='").concat(s, "'] circle")); + var dArr = []; + + for (var i = 0; i < seriesEls.length; i++) { + dArr.push({ + x: seriesEls[i].getAttribute('cx'), + y: seriesEls[i].getAttribute('cy'), + r: seriesEls[i].getAttribute('r') + }); + } + + w.globals.previousPaths.push(dArr); + } + } + } + }, { + key: "clearPreviousPaths", + value: function clearPreviousPaths() { + var w = this.w; + w.globals.previousPaths = []; + w.globals.allSeriesCollapsed = false; + } + }, { + key: "handleNoData", + value: function handleNoData() { + var w = this.w; + var me = this; + var noDataOpts = w.config.noData; + var graphics = new Graphics(me.ctx); + var x = w.globals.svgWidth / 2; + var y = w.globals.svgHeight / 2; + var textAnchor = 'middle'; + w.globals.noData = true; + w.globals.animationEnded = true; + + if (noDataOpts.align === 'left') { + x = 10; + textAnchor = 'start'; + } else if (noDataOpts.align === 'right') { + x = w.globals.svgWidth - 10; + textAnchor = 'end'; + } + + if (noDataOpts.verticalAlign === 'top') { + y = 50; + } else if (noDataOpts.verticalAlign === 'bottom') { + y = w.globals.svgHeight - 50; + } + + x = x + noDataOpts.offsetX; + y = y + parseInt(noDataOpts.style.fontSize, 10) + 2 + noDataOpts.offsetY; + + if (noDataOpts.text !== undefined && noDataOpts.text !== '') { + var titleText = graphics.drawText({ + x: x, + y: y, + text: noDataOpts.text, + textAnchor: textAnchor, + fontSize: noDataOpts.style.fontSize, + fontFamily: noDataOpts.style.fontFamily, + foreColor: noDataOpts.style.color, + opacity: 1, + class: 'apexcharts-text-nodata' + }); + w.globals.dom.Paper.add(titleText); + } + } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0] + // This is because we don't want to alter the series' length as it is used at many places + + }, { + key: "setNullSeriesToZeroValues", + value: function setNullSeriesToZeroValues(series) { + var w = this.w; + + for (var sl = 0; sl < series.length; sl++) { + if (series[sl].length === 0) { + for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) { + series[sl].push(0); + } + } + } + + return series; + } + }, { + key: "hasAllSeriesEqualX", + value: function hasAllSeriesEqualX() { + var equalLen = true; + var w = this.w; + var filteredSerX = this.filteredSeriesX(); + + for (var i = 0; i < filteredSerX.length - 1; i++) { + if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) { + equalLen = false; + break; + } + } + + w.globals.allSeriesHasEqualX = equalLen; + return equalLen; + } + }, { + key: "filteredSeriesX", + value: function filteredSeriesX() { + var w = this.w; + var filteredSeriesX = w.globals.seriesX.map(function (ser) { + return ser.length > 0 ? ser : []; + }); + return filteredSeriesX; + } + }]); + + return Series; + }(); + + var Data = /*#__PURE__*/function () { + function Data(ctx) { + _classCallCheck(this, Data); + + this.ctx = ctx; + this.w = ctx.w; + this.twoDSeries = []; + this.threeDSeries = []; + this.twoDSeriesX = []; + this.seriesGoals = []; + this.coreUtils = new CoreUtils(this.ctx); + } + + _createClass(Data, [{ + key: "isMultiFormat", + value: function isMultiFormat() { + return this.isFormatXY() || this.isFormat2DArray(); + } // given format is [{x, y}, {x, y}] + + }, { + key: "isFormatXY", + value: function isFormatXY() { + var series = this.w.config.series.slice(); + var sr = new Series(this.ctx); + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) { + return true; + } + } // given format is [[x, y], [x, y]] + + }, { + key: "isFormat2DArray", + value: function isFormat2DArray() { + var series = this.w.config.series.slice(); + var sr = new Series(this.ctx); + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) { + return true; + } + } + }, { + key: "handleFormat2DArray", + value: function handleFormat2DArray(ser, i) { + var cnf = this.w.config; + var gl = this.w.globals; + var isBoxPlot = cnf.chart.type === 'boxPlot' || cnf.series[i].type === 'boxPlot'; + + for (var j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j][1] !== 'undefined') { + if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4 && !isBoxPlot) { + // candlestick nested ohlc format + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][1][3])); + } else if (ser[i].data[j].length >= 5) { + // candlestick non-nested ohlc format + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][4])); + } else { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][1])); + } + + gl.dataFormatXNumeric = true; + } + + if (cnf.xaxis.type === 'datetime') { + // if timestamps are provided and xaxis type is datetime, + var ts = new Date(ser[i].data[j][0]); + ts = new Date(ts).getTime(); + this.twoDSeriesX.push(ts); + } else { + this.twoDSeriesX.push(ser[i].data[j][0]); + } + } + + for (var _j = 0; _j < ser[i].data.length; _j++) { + if (typeof ser[i].data[_j][2] !== 'undefined') { + this.threeDSeries.push(ser[i].data[_j][2]); + gl.isDataXYZ = true; + } + } + } + }, { + key: "handleFormatXY", + value: function handleFormatXY(ser, i) { + var cnf = this.w.config; + var gl = this.w.globals; + var dt = new DateTime(this.ctx); + var activeI = i; + + if (gl.collapsedSeriesIndices.indexOf(i) > -1) { + // fix #368 + activeI = this.activeSeriesIndex; + } // get series + + + for (var j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j].y !== 'undefined') { + if (Array.isArray(ser[i].data[j].y)) { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1])); + } else { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j].y)); + } + } + + if (typeof ser[i].data[j].goals !== 'undefined' && Array.isArray(ser[i].data[j].goals)) { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = []; + } + + this.seriesGoals[i].push(ser[i].data[j].goals); + } else { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = []; + } + + this.seriesGoals[i].push(null); + } + } // get seriesX + + + for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) { + var isXString = typeof ser[activeI].data[_j2].x === 'string'; + var isXArr = Array.isArray(ser[activeI].data[_j2].x); + var isXDate = !isXArr && !!dt.isValidDate(ser[activeI].data[_j2].x.toString()); + + if (isXString || isXDate) { + // user supplied '01/01/2017' or a date string (a JS date object is not supported) + if (isXString || cnf.xaxis.convertedCatToNumeric) { + var isRangeColumn = gl.isBarHorizontal && gl.isRangeData; + + if (cnf.xaxis.type === 'datetime' && !isRangeColumn) { + this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x)); + } else { + // a category and not a numeric x value + this.fallbackToCategory = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } + } else { + if (cnf.xaxis.type === 'datetime') { + this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString())); + } else { + gl.dataFormatXNumeric = true; + gl.isXNumeric = true; + this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x)); + } + } + } else if (isXArr) { + // a multiline label described in array format + this.fallbackToCategory = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } else { + // a numeric value in x property + gl.isXNumeric = true; + gl.dataFormatXNumeric = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } + } + + if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') { + for (var t = 0; t < ser[i].data.length; t++) { + this.threeDSeries.push(ser[i].data[t].z); + } + + gl.isDataXYZ = true; + } + } + }, { + key: "handleRangeData", + value: function handleRangeData(ser, i) { + var gl = this.w.globals; + var range = {}; + + if (this.isFormat2DArray()) { + range = this.handleRangeDataFormat('array', ser, i); + } else if (this.isFormatXY()) { + range = this.handleRangeDataFormat('xy', ser, i); + } + + gl.seriesRangeStart.push(range.start); + gl.seriesRangeEnd.push(range.end); + gl.seriesRange.push(range.rangeUniques); // check for overlaps to avoid clashes in a timeline chart + + gl.seriesRange.forEach(function (sr, si) { + if (sr) { + sr.forEach(function (sarr, sarri) { + sarr.y.forEach(function (arr, arri) { + for (var sri = 0; sri < sarr.y.length; sri++) { + if (arri !== sri) { + var range1y1 = arr.y1; + var range1y2 = arr.y2; + var range2y1 = sarr.y[sri].y1; + var range2y2 = sarr.y[sri].y2; + + if (range1y1 <= range2y2 && range2y1 <= range1y2) { + if (sarr.overlaps.indexOf(arr.rangeName) < 0) { + sarr.overlaps.push(arr.rangeName); + } + + if (sarr.overlaps.indexOf(sarr.y[sri].rangeName) < 0) { + sarr.overlaps.push(sarr.y[sri].rangeName); + } + } + } + } + }); + }); + } + }); + return range; + } + }, { + key: "handleCandleStickBoxData", + value: function handleCandleStickBoxData(ser, i) { + var gl = this.w.globals; + var ohlc = {}; + + if (this.isFormat2DArray()) { + ohlc = this.handleCandleStickBoxDataFormat('array', ser, i); + } else if (this.isFormatXY()) { + ohlc = this.handleCandleStickBoxDataFormat('xy', ser, i); + } + + gl.seriesCandleO[i] = ohlc.o; + gl.seriesCandleH[i] = ohlc.h; + gl.seriesCandleM[i] = ohlc.m; + gl.seriesCandleL[i] = ohlc.l; + gl.seriesCandleC[i] = ohlc.c; + return ohlc; + } + }, { + key: "handleRangeDataFormat", + value: function handleRangeDataFormat(format, ser, i) { + var rangeStart = []; + var rangeEnd = []; + var uniqueKeys = ser[i].data.filter(function (thing, index, self) { + return index === self.findIndex(function (t) { + return t.x === thing.x; + }); + }).map(function (r, index) { + return { + x: r.x, + overlaps: [], + y: [] + }; + }); + + if (format === 'array') { + for (var j = 0; j < ser[i].data.length; j++) { + if (Array.isArray(ser[i].data[j])) { + rangeStart.push(ser[i].data[j][1][0]); + rangeEnd.push(ser[i].data[j][1][1]); + } else { + rangeStart.push(ser[i].data[j]); + rangeEnd.push(ser[i].data[j]); + } + } + } else if (format === 'xy') { + var _loop = function _loop(_j3) { + var isDataPoint2D = Array.isArray(ser[i].data[_j3].y); + var id = Utils$1.randomId(); + var x = ser[i].data[_j3].x; + var y = { + y1: isDataPoint2D ? ser[i].data[_j3].y[0] : ser[i].data[_j3].y, + y2: isDataPoint2D ? ser[i].data[_j3].y[1] : ser[i].data[_j3].y, + rangeName: id + }; // mutating config object by adding a new property + // TODO: As this is specifically for timeline rangebar charts, update the docs mentioning the series only supports xy format + + ser[i].data[_j3].rangeName = id; + var uI = uniqueKeys.findIndex(function (t) { + return t.x === x; + }); + uniqueKeys[uI].y.push(y); + rangeStart.push(y.y1); + rangeEnd.push(y.y2); + }; + + for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) { + _loop(_j3); + } + } + + return { + start: rangeStart, + end: rangeEnd, + rangeUniques: uniqueKeys + }; + } + }, { + key: "handleCandleStickBoxDataFormat", + value: function handleCandleStickBoxDataFormat(format, ser, i) { + var w = this.w; + var isBoxPlot = w.config.chart.type === 'boxPlot' || w.config.series[i].type === 'boxPlot'; + var serO = []; + var serH = []; + var serM = []; + var serL = []; + var serC = []; + + if (format === 'array') { + if (isBoxPlot && ser[i].data[0].length === 6 || !isBoxPlot && ser[i].data[0].length === 5) { + for (var j = 0; j < ser[i].data.length; j++) { + serO.push(ser[i].data[j][1]); + serH.push(ser[i].data[j][2]); + + if (isBoxPlot) { + serM.push(ser[i].data[j][3]); + serL.push(ser[i].data[j][4]); + serC.push(ser[i].data[j][5]); + } else { + serL.push(ser[i].data[j][3]); + serC.push(ser[i].data[j][4]); + } + } + } else { + for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) { + if (Array.isArray(ser[i].data[_j4][1])) { + serO.push(ser[i].data[_j4][1][0]); + serH.push(ser[i].data[_j4][1][1]); + + if (isBoxPlot) { + serM.push(ser[i].data[_j4][1][2]); + serL.push(ser[i].data[_j4][1][3]); + serC.push(ser[i].data[_j4][1][4]); + } else { + serL.push(ser[i].data[_j4][1][2]); + serC.push(ser[i].data[_j4][1][3]); + } + } + } + } + } else if (format === 'xy') { + for (var _j5 = 0; _j5 < ser[i].data.length; _j5++) { + if (Array.isArray(ser[i].data[_j5].y)) { + serO.push(ser[i].data[_j5].y[0]); + serH.push(ser[i].data[_j5].y[1]); + + if (isBoxPlot) { + serM.push(ser[i].data[_j5].y[2]); + serL.push(ser[i].data[_j5].y[3]); + serC.push(ser[i].data[_j5].y[4]); + } else { + serL.push(ser[i].data[_j5].y[2]); + serC.push(ser[i].data[_j5].y[3]); + } + } + } + } + + return { + o: serO, + h: serH, + m: serM, + l: serL, + c: serC + }; + } + }, { + key: "parseDataAxisCharts", + value: function parseDataAxisCharts(ser) { + var _ser$, + _this = this; + + var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx; + var cnf = this.w.config; + var gl = this.w.globals; + var dt = new DateTime(ctx); + var xlabels = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice(); + gl.isRangeBar = cnf.chart.type === 'rangeBar' && gl.isBarHorizontal; + gl.hasXaxisGroups = cnf.xaxis.type === 'category' && cnf.xaxis.group.groups.length > 0; + + if (gl.hasXaxisGroups) { + gl.groups = cnf.xaxis.group.groups; + } + + gl.hasSeriesGroups = (_ser$ = ser[0]) === null || _ser$ === void 0 ? void 0 : _ser$.group; + + if (gl.hasSeriesGroups) { + var buckets = []; + + var groups = _toConsumableArray(new Set(ser.map(function (s) { + return s.group; + }))); + + ser.forEach(function (s, i) { + var index = groups.indexOf(s.group); + if (!buckets[index]) buckets[index] = []; + buckets[index].push(s.name); + }); + gl.seriesGroups = buckets; + } + + var handleDates = function handleDates() { + for (var j = 0; j < xlabels.length; j++) { + if (typeof xlabels[j] === 'string') { + // user provided date strings + var isDate = dt.isValidDate(xlabels[j]); + + if (isDate) { + _this.twoDSeriesX.push(dt.parseDate(xlabels[j])); + } else { + throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date'); + } + } else { + // user provided timestamps + _this.twoDSeriesX.push(xlabels[j]); + } + } + }; + + for (var i = 0; i < ser.length; i++) { + this.twoDSeries = []; + this.twoDSeriesX = []; + this.threeDSeries = []; + + if (typeof ser[i].data === 'undefined') { + console.error("It is a possibility that you may have not included 'data' property in series."); + return; + } + + if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') { + gl.isRangeData = true; + + if (gl.isComboCharts) { + if (ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') { + this.handleRangeData(ser, i); + } + } else if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea') { + this.handleRangeData(ser, i); + } + } + + if (this.isMultiFormat()) { + if (this.isFormat2DArray()) { + this.handleFormat2DArray(ser, i); + } else if (this.isFormatXY()) { + this.handleFormatXY(ser, i); + } + + if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick' || cnf.chart.type === 'boxPlot' || ser[i].type === 'boxPlot') { + this.handleCandleStickBoxData(ser, i); + } + + gl.series.push(this.twoDSeries); + gl.labels.push(this.twoDSeriesX); + gl.seriesX.push(this.twoDSeriesX); + gl.seriesGoals = this.seriesGoals; + + if (i === this.activeSeriesIndex && !this.fallbackToCategory) { + gl.isXNumeric = true; + } + } else { + if (cnf.xaxis.type === 'datetime') { + // user didn't supplied [{x,y}] or [[x,y]], but single array in data. + // Also labels/categories were supplied differently + gl.isXNumeric = true; + handleDates(); + gl.seriesX.push(this.twoDSeriesX); + } else if (cnf.xaxis.type === 'numeric') { + gl.isXNumeric = true; + + if (xlabels.length > 0) { + this.twoDSeriesX = xlabels; + gl.seriesX.push(this.twoDSeriesX); + } + } + + gl.labels.push(this.twoDSeriesX); + var singleArray = ser[i].data.map(function (d) { + return Utils$1.parseNumber(d); + }); + gl.series.push(singleArray); + } + + gl.seriesZ.push(this.threeDSeries); + + if (ser[i].name !== undefined) { + gl.seriesNames.push(ser[i].name); + } else { + gl.seriesNames.push('series-' + parseInt(i + 1, 10)); + } // overrided default color if user inputs color with series data + + + if (ser[i].color !== undefined) { + gl.seriesColors.push(ser[i].color); + } else { + gl.seriesColors.push(undefined); + } + } + + return this.w; + } + }, { + key: "parseDataNonAxisCharts", + value: function parseDataNonAxisCharts(ser) { + var gl = this.w.globals; + var cnf = this.w.config; + gl.series = ser.slice(); + gl.seriesNames = cnf.labels.slice(); + + for (var i = 0; i < gl.series.length; i++) { + if (gl.seriesNames[i] === undefined) { + gl.seriesNames.push('series-' + (i + 1)); + } + } + + return this.w; + } + /** User possibly set string categories in xaxis.categories or labels prop + * Or didn't set xaxis labels at all - in which case we manually do it. + * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }], + * this shouldn't be called + * @param {array} ser - the series which user passed to the config + */ + + }, { + key: "handleExternalLabelsData", + value: function handleExternalLabelsData(ser) { + var cnf = this.w.config; + var gl = this.w.globals; + + if (cnf.xaxis.categories.length > 0) { + // user provided labels in xaxis.category prop + gl.labels = cnf.xaxis.categories; + } else if (cnf.labels.length > 0) { + // user provided labels in labels props + gl.labels = cnf.labels.slice(); + } else if (this.fallbackToCategory) { + // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array + gl.labels = gl.labels[0]; + + if (gl.seriesRange.length) { + gl.seriesRange.map(function (srt) { + srt.forEach(function (sr) { + if (gl.labels.indexOf(sr.x) < 0 && sr.x) { + gl.labels.push(sr.x); + } + }); + }); + gl.labels = gl.labels.filter(function (elem, pos, arr) { + return arr.indexOf(elem) === pos; + }); + } + + if (cnf.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(cnf); + defaults.convertCatToNumericXaxis(cnf, this.ctx, gl.seriesX[0]); + + this._generateExternalLabels(ser); + } + } else { + this._generateExternalLabels(ser); + } + } + }, { + key: "_generateExternalLabels", + value: function _generateExternalLabels(ser) { + var gl = this.w.globals; + var cnf = this.w.config; // user didn't provided any labels, fallback to 1-2-3-4-5 + + var labelArr = []; + + if (gl.axisCharts) { + if (gl.series.length > 0) { + if (this.isFormatXY()) { + // in case there is a combo chart (boxplot/scatter) + // and there are duplicated x values, we need to eliminate duplicates + var seriesDataFiltered = cnf.series.map(function (serie, s) { + return serie.data.filter(function (v, i, a) { + return a.findIndex(function (t) { + return t.x === v.x; + }) === i; + }); + }); + var len = seriesDataFiltered.reduce(function (p, c, i, a) { + return a[p].length > c.length ? p : i; + }, 0); + + for (var i = 0; i < seriesDataFiltered[len].length; i++) { + labelArr.push(i + 1); + } + } else { + for (var _i = 0; _i < gl.series[gl.maxValsInArrayIndex].length; _i++) { + labelArr.push(_i + 1); + } + } + } + + gl.seriesX = []; // create gl.seriesX as it will be used in calculations of x positions + + for (var _i2 = 0; _i2 < ser.length; _i2++) { + gl.seriesX.push(labelArr); + } // turn on the isXNumeric flag to allow minX and maxX to function properly + + + gl.isXNumeric = true; + } // no series to pull labels from, put a 0-10 series + // possibly, user collapsed all series. Hence we can't work with above calc + + + if (labelArr.length === 0) { + labelArr = gl.axisCharts ? [] : gl.series.map(function (gls, glsi) { + return glsi + 1; + }); + + for (var _i3 = 0; _i3 < ser.length; _i3++) { + gl.seriesX.push(labelArr); + } + } // Finally, pass the labelArr in gl.labels which will be printed on x-axis + + + gl.labels = labelArr; + + if (cnf.xaxis.convertedCatToNumeric) { + gl.categoryLabels = labelArr.map(function (l) { + return cnf.xaxis.labels.formatter(l); + }); + } // Turn on this global flag to indicate no labels were provided by user + + + gl.noLabelsProvided = true; + } // Segregate user provided data into appropriate vars + + }, { + key: "parseData", + value: function parseData(ser) { + var w = this.w; + var cnf = w.config; + var gl = w.globals; + this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis + + this.fallbackToCategory = false; + this.ctx.core.resetGlobals(); + this.ctx.core.isMultipleY(); + + if (gl.axisCharts) { + // axisCharts includes line / area / column / scatter + this.parseDataAxisCharts(ser); + this.coreUtils.getLargestSeries(); + } else { + // non-axis charts are pie / donut + this.parseDataNonAxisCharts(ser); + } // set Null values to 0 in all series when user hides/shows some series + + + if (cnf.chart.type === 'bar' && cnf.chart.stacked) { + var series = new Series(this.ctx); + gl.series = series.setNullSeriesToZeroValues(gl.series); + } + + this.coreUtils.getSeriesTotals(); + + if (gl.axisCharts) { + gl.stackedSeriesTotals = this.coreUtils.getStackedSeriesTotals(); + } + + this.coreUtils.getPercentSeries(); + + if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) { + // x-axis labels couldn't be detected; hence try searching every option in config + this.handleExternalLabelsData(ser); + } // check for multiline xaxis + + + var catLabels = this.coreUtils.getCategoryLabels(gl.labels); + + for (var l = 0; l < catLabels.length; l++) { + if (Array.isArray(catLabels[l])) { + gl.isMultiLineX = true; + break; + } + } + } + }, { + key: "excludeCollapsedSeriesInYAxis", + value: function excludeCollapsedSeriesInYAxis() { + var _this2 = this; + + var w = this.w; + w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) { + // fix issue #1215 + // if stacked, not returning collapsed.index to preserve yaxis + if (_this2.w.globals.isMultipleYAxis && !w.config.chart.stacked) { + return collapsed.index; + } + }); + } + }]); + + return Data; + }(); + + var AxesUtils = /*#__PURE__*/function () { + function AxesUtils(ctx) { + _classCallCheck(this, AxesUtils); + + this.ctx = ctx; + this.w = ctx.w; + } // Based on the formatter function, get the label text and position + + + _createClass(AxesUtils, [{ + key: "getLabel", + value: function getLabel(labels, timescaleLabels, x, i) { + var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; + var fontSize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '12px'; + var isLeafGroup = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true; + var w = this.w; + var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i]; + var label = rawLabel; + var xlbFormatter = w.globals.xLabelFormatter; + var customFormatter = w.config.xaxis.labels.formatter; + var isBold = false; + var xFormat = new Formatters(this.ctx); + var timestamp = rawLabel; + + if (isLeafGroup) { + label = xFormat.xLabelFormat(xlbFormatter, rawLabel, timestamp, { + i: i, + dateFormatter: new DateTime(this.ctx).formatDate, + w: w + }); + + if (customFormatter !== undefined) { + label = customFormatter(rawLabel, labels[i], { + i: i, + dateFormatter: new DateTime(this.ctx).formatDate, + w: w + }); + } + } + + var determineHighestUnit = function determineHighestUnit(unit) { + var highestUnit = null; + timescaleLabels.forEach(function (t) { + if (t.unit === 'month') { + highestUnit = 'year'; + } else if (t.unit === 'day') { + highestUnit = 'month'; + } else if (t.unit === 'hour') { + highestUnit = 'day'; + } else if (t.unit === 'minute') { + highestUnit = 'hour'; + } + }); + return highestUnit === unit; + }; + + if (timescaleLabels.length > 0) { + isBold = determineHighestUnit(timescaleLabels[i].unit); + x = timescaleLabels[i].position; + label = timescaleLabels[i].value; + } else { + if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) { + label = ''; + } + } + + if (typeof label === 'undefined') label = ''; + label = Array.isArray(label) ? label : label.toString(); + var graphics = new Graphics(this.ctx); + var textRect = {}; + + if (w.globals.rotateXLabels && isLeafGroup) { + textRect = graphics.getTextRects(label, parseInt(fontSize, 10), null, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false); + } else { + textRect = graphics.getTextRects(label, parseInt(fontSize, 10)); + } + + var allowDuplicatesInTimeScale = !w.config.xaxis.labels.showDuplicates && this.ctx.timeScale; + + if (!Array.isArray(label) && (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && allowDuplicatesInTimeScale)) { + label = ''; + } + + return { + x: x, + text: label, + textRect: textRect, + isBold: isBold + }; + } + }, { + key: "checkLabelBasedOnTickamount", + value: function checkLabelBasedOnTickamount(i, label, labelsLen) { + var w = this.w; + var ticks = w.config.xaxis.tickAmount; + if (ticks === 'dataPoints') ticks = Math.round(w.globals.gridWidth / 120); + if (ticks > labelsLen) return label; + var tickMultiple = Math.round(labelsLen / (ticks + 1)); + + if (i % tickMultiple === 0) { + return label; + } else { + label.text = ''; + } + + return label; + } + }, { + key: "checkForOverflowingLabels", + value: function checkForOverflowingLabels(i, label, labelsLen, drawnLabels, drawnLabelsRects) { + var w = this.w; + + if (i === 0) { + // check if first label is being truncated + if (w.globals.skipFirstTimelinelabel) { + label.text = ''; + } + } + + if (i === labelsLen - 1) { + // check if last label is being truncated + if (w.globals.skipLastTimelinelabel) { + label.text = ''; + } + } + + if (w.config.xaxis.labels.hideOverlappingLabels && drawnLabels.length > 0) { + var prev = drawnLabelsRects[drawnLabelsRects.length - 1]; + + if (label.x < prev.textRect.width / (w.globals.rotateXLabels ? Math.abs(w.config.xaxis.labels.rotate) / 12 : 1.01) + prev.x) { + label.text = ''; + } + } + + return label; + } + }, { + key: "checkForReversedLabels", + value: function checkForReversedLabels(i, labels) { + var w = this.w; + + if (w.config.yaxis[i] && w.config.yaxis[i].reversed) { + labels.reverse(); + } + + return labels; + } + }, { + key: "isYAxisHidden", + value: function isYAxisHidden(index) { + var w = this.w; + var coreUtils = new CoreUtils(this.ctx); + return !w.config.yaxis[index].show || !w.config.yaxis[index].showForNullSeries && coreUtils.isSeriesNull(index) && w.globals.collapsedSeriesIndices.indexOf(index) === -1; + } // get the label color for y-axis + // realIndex is the actual series index, while i is the tick Index + + }, { + key: "getYAxisForeColor", + value: function getYAxisForeColor(yColors, realIndex) { + var w = this.w; + + if (Array.isArray(yColors) && w.globals.yAxisScale[realIndex]) { + this.ctx.theme.pushExtraColors(yColors, w.globals.yAxisScale[realIndex].result.length, false); + } + + return yColors; + } + }, { + key: "drawYAxisTicks", + value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) { + var w = this.w; + var graphics = new Graphics(this.ctx); // initial label position = 0; + + var t = w.globals.translateY; + + if (axisTicks.show && tickAmount > 0) { + if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width; + + for (var i = tickAmount; i >= 0; i--) { + var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1; + + if (w.globals.isBarHorizontal) { + tY = labelsDivider * i; + } + + if (w.config.chart.type === 'heatmap') { + tY = tY + labelsDivider / 2; + } + + var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisTicks.color); + elYaxis.add(elTick); + t = t + labelsDivider; + } + } + } + }]); + + return AxesUtils; + }(); + + var Exports = /*#__PURE__*/function () { + function Exports(ctx) { + _classCallCheck(this, Exports); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Exports, [{ + key: "scaleSvgNode", + value: function scaleSvgNode(svg, scale) { + // get current both width and height of the svg + var svgWidth = parseFloat(svg.getAttributeNS(null, 'width')); + var svgHeight = parseFloat(svg.getAttributeNS(null, 'height')); // set new width and height based on the scale + + svg.setAttributeNS(null, 'width', svgWidth * scale); + svg.setAttributeNS(null, 'height', svgHeight * scale); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + svgWidth + ' ' + svgHeight); + } + }, { + key: "fixSvgStringForIe11", + value: function fixSvgStringForIe11(svgData) { + // IE11 generates broken SVG that we have to fix by using regex + if (!Utils$1.isIE11()) { + // not IE11 - noop + return svgData.replace(/ /g, ' '); + } // replace second occurrence of "xmlns" attribute with "xmlns:xlink" with correct url + add xmlns:svgjs + + + var nXmlnsSeen = 0; + var result = svgData.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, function (match) { + nXmlnsSeen++; + return nXmlnsSeen === 2 ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"' : match; + }); // remove the invalid empty namespace declarations + + result = result.replace(/xmlns:NS\d+=""/g, ''); // remove these broken namespaces from attributes + + result = result.replace(/NS\d+:(\w+:\w+=")/g, '$1'); + return result; + } + }, { + key: "getSvgString", + value: function getSvgString(scale) { + if (scale == undefined) { + scale = 1; // if no scale is specified, don't scale... + } + + var svgString = this.w.globals.dom.Paper.svg(); // in case the scale is different than 1, the svg needs to be rescaled + + if (scale !== 1) { + // clone the svg node so it remains intact in the UI + var svgNode = this.w.globals.dom.Paper.node.cloneNode(true); // scale the image + + this.scaleSvgNode(svgNode, scale); // get the string representation of the svgNode + + svgString = new XMLSerializer().serializeToString(svgNode); + } + + return this.fixSvgStringForIe11(svgString); + } + }, { + key: "cleanup", + value: function cleanup() { + var w = this.w; // hide some elements to avoid printing them on exported svg + + var xcrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-xcrosshairs'); + var ycrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-ycrosshairs'); + var zoomSelectionRects = w.globals.dom.baseEl.querySelectorAll('.apexcharts-zoom-rect, .apexcharts-selection-rect'); + Array.prototype.forEach.call(zoomSelectionRects, function (z) { + z.setAttribute('width', 0); + }); + + if (xcrosshairs && xcrosshairs[0]) { + xcrosshairs[0].setAttribute('x', -500); + xcrosshairs[0].setAttribute('x1', -500); + xcrosshairs[0].setAttribute('x2', -500); + } + + if (ycrosshairs && ycrosshairs[0]) { + ycrosshairs[0].setAttribute('y', -100); + ycrosshairs[0].setAttribute('y1', -100); + ycrosshairs[0].setAttribute('y2', -100); + } + } + }, { + key: "svgUrl", + value: function svgUrl() { + this.cleanup(); + var svgData = this.getSvgString(); + var svgBlob = new Blob([svgData], { + type: 'image/svg+xml;charset=utf-8' + }); + return URL.createObjectURL(svgBlob); + } + }, { + key: "dataURI", + value: function dataURI(options) { + var _this = this; + + return new Promise(function (resolve) { + var w = _this.w; + var scale = options ? options.scale || options.width / w.globals.svgWidth : 1; + + _this.cleanup(); + + var canvas = document.createElement('canvas'); + canvas.width = w.globals.svgWidth * scale; + canvas.height = parseInt(w.globals.dom.elWrap.style.height, 10) * scale; // because of resizeNonAxisCharts + + var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background; + var ctx = canvas.getContext('2d'); + ctx.fillStyle = canvasBg; + ctx.fillRect(0, 0, canvas.width * scale, canvas.height * scale); + + var svgData = _this.getSvgString(scale); + + if (window.canvg && Utils$1.isIE11()) { + // use canvg as a polyfill to workaround ie11 considering a canvas with loaded svg 'unsafe' + // without ignoreClear we lose our background color; without ignoreDimensions some grid lines become invisible + var v = window.canvg.Canvg.fromString(ctx, svgData, { + ignoreClear: true, + ignoreDimensions: true + }); // render the svg to canvas + + v.start(); + var blob = canvas.msToBlob(); // dispose - missing this will cause a memory leak + + v.stop(); + resolve({ + blob: blob + }); + } else { + var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData); + var img = new Image(); + img.crossOrigin = 'anonymous'; + + img.onload = function () { + ctx.drawImage(img, 0, 0); + + if (canvas.msToBlob) { + // IE and Edge can't navigate to data urls, so we return the blob instead + var _blob = canvas.msToBlob(); + + resolve({ + blob: _blob + }); + } else { + var imgURI = canvas.toDataURL('image/png'); + resolve({ + imgURI: imgURI + }); + } + }; + + img.src = svgUrl; + } + }); + } + }, { + key: "exportToSVG", + value: function exportToSVG() { + this.triggerDownload(this.svgUrl(), this.w.config.chart.toolbar.export.svg.filename, '.svg'); + } + }, { + key: "exportToPng", + value: function exportToPng() { + var _this2 = this; + + this.dataURI().then(function (_ref) { + var imgURI = _ref.imgURI, + blob = _ref.blob; + + if (blob) { + navigator.msSaveOrOpenBlob(blob, _this2.w.globals.chartID + '.png'); + } else { + _this2.triggerDownload(imgURI, _this2.w.config.chart.toolbar.export.png.filename, '.png'); + } + }); + } + }, { + key: "exportToCSV", + value: function exportToCSV(_ref2) { + var _this3 = this; + + var series = _ref2.series, + fileName = _ref2.fileName, + _ref2$columnDelimiter = _ref2.columnDelimiter, + columnDelimiter = _ref2$columnDelimiter === void 0 ? ',' : _ref2$columnDelimiter, + _ref2$lineDelimiter = _ref2.lineDelimiter, + lineDelimiter = _ref2$lineDelimiter === void 0 ? '\n' : _ref2$lineDelimiter; + var w = this.w; + if (!series) series = w.config.series; + var columns = []; + var rows = []; + var result = ''; + var universalBOM = "\uFEFF"; + var gSeries = w.globals.series.map(function (s, i) { + return w.globals.collapsedSeriesIndices.indexOf(i) === -1 ? s : []; + }); + + var isTimeStamp = function isTimeStamp(num) { + return w.config.xaxis.type === 'datetime' && String(num).length >= 10; + }; + + var seriesMaxDataLength = Math.max.apply(Math, _toConsumableArray(series.map(function (s) { + return s.data ? s.data.length : 0; + }))); + var dataFormat = new Data(this.ctx); + var axesUtils = new AxesUtils(this.ctx); + + var getCat = function getCat(i) { + var cat = ''; // pie / donut/ radial + + if (!w.globals.axisCharts) { + cat = w.config.labels[i]; + } else { + // xy charts + // non datetime + if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) { + if (w.globals.isBarHorizontal) { + var lbFormatter = w.globals.yLabelFormatters[0]; + var sr = new Series(_this3.ctx); + var activeSeries = sr.getActiveConfigSeriesIndex(); + cat = lbFormatter(w.globals.labels[i], { + seriesIndex: activeSeries, + dataPointIndex: i, + w: w + }); + } else { + cat = axesUtils.getLabel(w.globals.labels, w.globals.timescaleLabels, 0, i).text; + } + } // datetime, but labels specified in categories or labels + + + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.categories.length) { + cat = w.config.xaxis.categories[i]; + } else if (w.config.labels.length) { + cat = w.config.labels[i]; + } + } + } + + if (Array.isArray(cat)) { + cat = cat.join(' '); + } + + return Utils$1.isNumber(cat) ? cat : cat.split(columnDelimiter).join(''); + }; // Fix https://github.com/apexcharts/apexcharts.js/issues/3365 + + + var getEmptyDataForCsvColumn = function getEmptyDataForCsvColumn() { + return _toConsumableArray(Array(seriesMaxDataLength)).map(function () { + return ''; + }); + }; + + var handleAxisRowsColumns = function handleAxisRowsColumns(s, sI) { + if (columns.length && sI === 0) { + // It's the first series. Go ahead and create the first row with header information. + rows.push(columns.join(columnDelimiter)); + } + + if (s.data) { + // Use the data we have, or generate a properly sized empty array with empty data if some data is missing. + s.data = s.data.length && s.data || getEmptyDataForCsvColumn(); + + for (var i = 0; i < s.data.length; i++) { + // Reset the columns array so that we can start building columns for this row. + columns = []; + var cat = getCat(i); + + if (!cat) { + if (dataFormat.isFormatXY()) { + cat = series[sI].data[i].x; + } else if (dataFormat.isFormat2DArray()) { + cat = series[sI].data[i] ? series[sI].data[i][0] : ''; + } + } + + if (sI === 0) { + // It's the first series. Also handle the category. + columns.push(isTimeStamp(cat) ? w.config.chart.toolbar.export.csv.dateFormatter(cat) : Utils$1.isNumber(cat) ? cat : cat.split(columnDelimiter).join('')); + + for (var ci = 0; ci < w.globals.series.length; ci++) { + if (dataFormat.isFormatXY()) { + columns.push(series[ci].data[i].y); + } else { + columns.push(gSeries[ci][i]); + } + } + } + + if (w.config.chart.type === 'candlestick' || s.type && s.type === 'candlestick') { + columns.pop(); + columns.push(w.globals.seriesCandleO[sI][i]); + columns.push(w.globals.seriesCandleH[sI][i]); + columns.push(w.globals.seriesCandleL[sI][i]); + columns.push(w.globals.seriesCandleC[sI][i]); + } + + if (w.config.chart.type === 'boxPlot' || s.type && s.type === 'boxPlot') { + columns.pop(); + columns.push(w.globals.seriesCandleO[sI][i]); + columns.push(w.globals.seriesCandleH[sI][i]); + columns.push(w.globals.seriesCandleM[sI][i]); + columns.push(w.globals.seriesCandleL[sI][i]); + columns.push(w.globals.seriesCandleC[sI][i]); + } + + if (w.config.chart.type === 'rangeBar') { + columns.pop(); + columns.push(w.globals.seriesRangeStart[sI][i]); + columns.push(w.globals.seriesRangeEnd[sI][i]); + } + + if (columns.length) { + rows.push(columns.join(columnDelimiter)); + } + } + } + }; + + columns.push(w.config.chart.toolbar.export.csv.headerCategory); + + if (w.config.chart.type === 'boxPlot') { + columns.push('minimum'); + columns.push('q1'); + columns.push('median'); + columns.push('q3'); + columns.push('maximum'); + } else if (w.config.chart.type === 'candlestick') { + columns.push('open'); + columns.push('high'); + columns.push('low'); + columns.push('close'); + } else if (w.config.chart.type === 'rangeBar') { + columns.push('minimum'); + columns.push('maximum'); + } else { + series.map(function (s, sI) { + var sname = s.name ? s.name : "series-".concat(sI); + + if (w.globals.axisCharts) { + columns.push(sname.split(columnDelimiter).join('') ? sname.split(columnDelimiter).join('') : "series-".concat(sI)); + } + }); + } + + if (!w.globals.axisCharts) { + columns.push(w.config.chart.toolbar.export.csv.headerValue); + rows.push(columns.join(columnDelimiter)); + } + + series.map(function (s, sI) { + if (w.globals.axisCharts) { + handleAxisRowsColumns(s, sI); + } else { + columns = []; + columns.push(w.globals.labels[sI].split(columnDelimiter).join('')); + columns.push(gSeries[sI]); + rows.push(columns.join(columnDelimiter)); + } + }); + result += rows.join(lineDelimiter); + this.triggerDownload('data:text/csv; charset=utf-8,' + encodeURIComponent(universalBOM + result), fileName ? fileName : w.config.chart.toolbar.export.csv.filename, '.csv'); + } + }, { + key: "triggerDownload", + value: function triggerDownload(href, filename, ext) { + var downloadLink = document.createElement('a'); + downloadLink.href = href; + downloadLink.download = (filename ? filename : this.w.globals.chartID) + ext; + document.body.appendChild(downloadLink); + downloadLink.click(); + document.body.removeChild(downloadLink); + } + }]); + + return Exports; + }(); + + /** + * ApexCharts XAxis Class for drawing X-Axis. + * + * @module XAxis + **/ + + var XAxis = /*#__PURE__*/function () { + function XAxis(ctx, elgrid) { + _classCallCheck(this, XAxis); + + this.ctx = ctx; + this.elgrid = elgrid; + this.w = ctx.w; + var w = this.w; + this.axesUtils = new AxesUtils(ctx); + this.xaxisLabels = w.globals.labels.slice(); + + if (w.globals.timescaleLabels.length > 0 && !w.globals.isBarHorizontal) { + // timeline labels are there and chart is not rangeabr timeline + this.xaxisLabels = w.globals.timescaleLabels.slice(); + } + + if (w.config.xaxis.overwriteCategories) { + this.xaxisLabels = w.config.xaxis.overwriteCategories; + } + + this.drawnLabels = []; + this.drawnLabelsRects = []; + + if (w.config.xaxis.position === 'top') { + this.offY = 0; + } else { + this.offY = w.globals.gridHeight + 1; + } + + this.offY = this.offY + w.config.xaxis.axisBorder.offsetY; + this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal; + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize; + this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily; + this.xaxisForeColors = w.config.xaxis.labels.style.colors; + this.xaxisBorderWidth = w.config.xaxis.axisBorder.width; + + if (this.isCategoryBarHorizontal) { + this.xaxisBorderWidth = w.config.yaxis[0].axisBorder.width.toString(); + } + + if (this.xaxisBorderWidth.indexOf('%') > -1) { + this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100; + } else { + this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10); + } + + this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais, + // as we are not providing multiple yaxis for bar charts + + this.yaxis = w.config.yaxis[0]; + } + + _createClass(XAxis, [{ + key: "drawXaxis", + value: function drawXaxis() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var elXaxis = graphics.group({ + class: 'apexcharts-xaxis', + transform: "translate(".concat(w.config.xaxis.offsetX, ", ").concat(w.config.xaxis.offsetY, ")") + }); + var elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")") + }); + elXaxis.add(elXaxisTexts); + var labels = []; + + for (var i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]); + } + + this.drawXAxisLabelAndGroup(true, graphics, elXaxisTexts, labels, w.globals.isXNumeric, function (i, colWidth) { + return colWidth; + }); + + if (w.globals.hasXaxisGroups) { + var labelsGroup = w.globals.groups; + labels = []; + + for (var _i = 0; _i < labelsGroup.length; _i++) { + labels.push(labelsGroup[_i].title); + } + + var overwriteStyles = {}; + + if (w.config.xaxis.group.style) { + overwriteStyles.xaxisFontSize = w.config.xaxis.group.style.fontSize; + overwriteStyles.xaxisFontFamily = w.config.xaxis.group.style.fontFamily; + overwriteStyles.xaxisForeColors = w.config.xaxis.group.style.colors; + overwriteStyles.fontWeight = w.config.xaxis.group.style.fontWeight; + overwriteStyles.cssClass = w.config.xaxis.group.style.cssClass; + } + + this.drawXAxisLabelAndGroup(false, graphics, elXaxisTexts, labels, false, function (i, colWidth) { + return labelsGroup[i].cols * colWidth; + }, overwriteStyles); + } + + if (w.config.xaxis.title.text !== undefined) { + var elXaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title' + }); + var elXAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: this.offY + parseFloat(this.xaxisFontSize) + (w.config.xaxis.position === 'bottom' ? w.globals.xAxisLabelsHeight : -w.globals.xAxisLabelsHeight - 10) + w.config.xaxis.title.offsetY, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }); + elXaxisTitle.add(elXAxisTitleText); + elXaxis.add(elXaxisTitle); + } + + if (w.config.xaxis.axisBorder.show) { + var offX = w.globals.barPadForNumericAxis; + var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX - offX, this.offY, this.xaxisBorderWidth + offX, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight); + + if (this.elgrid && this.elgrid.elGridBorders && w.config.grid.show) { + this.elgrid.elGridBorders.add(elHorzLine); + } else { + elXaxis.add(elHorzLine); + } + } + + return elXaxis; + } + }, { + key: "drawXAxisLabelAndGroup", + value: function drawXAxisLabelAndGroup(isLeafGroup, graphics, elXaxisTexts, labels, isXNumeric, colWidthCb) { + var _this = this; + + var overwriteStyles = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var drawnLabels = []; + var drawnLabelsRects = []; + var w = this.w; + var xaxisFontSize = overwriteStyles.xaxisFontSize || this.xaxisFontSize; + var xaxisFontFamily = overwriteStyles.xaxisFontFamily || this.xaxisFontFamily; + var xaxisForeColors = overwriteStyles.xaxisForeColors || this.xaxisForeColors; + var fontWeight = overwriteStyles.fontWeight || w.config.xaxis.labels.style.fontWeight; + var cssClass = overwriteStyles.cssClass || w.config.xaxis.labels.style.cssClass; + var colWidth; // initial x Position (keep adding column width in the loop) + + var xPos = w.globals.padHorizontal; + var labelsLen = labels.length; + /** + * labelsLen can be different (whether you are drawing x-axis labels or x-axis group labels) + * hence, we introduce dataPoints to be consistent. + * Also, in datetime/numeric xaxis, dataPoints can be misleading, so we resort to labelsLen for such xaxis type + */ + + var dataPoints = w.config.xaxis.type === 'category' ? w.globals.dataPoints : labelsLen; // when all series are collapsed, fixes #3381 + + if (dataPoints === 0 && labelsLen > dataPoints) dataPoints = labelsLen; + + if (isXNumeric) { + var len = dataPoints > 1 ? dataPoints - 1 : dataPoints; + colWidth = w.globals.gridWidth / len; + xPos = xPos + colWidthCb(0, colWidth) / 2 + w.config.xaxis.labels.offsetX; + } else { + colWidth = w.globals.gridWidth / dataPoints; + xPos = xPos + colWidthCb(0, colWidth) + w.config.xaxis.labels.offsetX; + } + + var _loop = function _loop(i) { + var x = xPos - colWidthCb(i, colWidth) / 2 + w.config.xaxis.labels.offsetX; + + if (i === 0 && labelsLen === 1 && colWidth / 2 === xPos && dataPoints === 1) { + // single datapoint + x = w.globals.gridWidth / 2; + } + + var label = _this.axesUtils.getLabel(labels, w.globals.timescaleLabels, x, i, drawnLabels, xaxisFontSize, isLeafGroup); + + var offsetYCorrection = 28; + + if (w.globals.rotateXLabels && isLeafGroup) { + offsetYCorrection = 22; + } + + if (w.config.xaxis.title.text && w.config.xaxis.position === 'top') { + offsetYCorrection += parseFloat(w.config.xaxis.title.style.fontSize) + 2; + } + + if (!isLeafGroup) { + offsetYCorrection = offsetYCorrection + parseFloat(xaxisFontSize) + (w.globals.xAxisLabelsHeight - w.globals.xAxisGroupLabelsHeight) + (w.globals.rotateXLabels ? 10 : 0); + } + + var isCategoryTickAmounts = typeof w.config.xaxis.tickAmount !== 'undefined' && w.config.xaxis.tickAmount !== 'dataPoints' && w.config.xaxis.type !== 'datetime'; + + if (isCategoryTickAmounts) { + label = _this.axesUtils.checkLabelBasedOnTickamount(i, label, labelsLen); + } else { + label = _this.axesUtils.checkForOverflowingLabels(i, label, labelsLen, drawnLabels, drawnLabelsRects); + } + + var getCatForeColor = function getCatForeColor() { + return isLeafGroup && w.config.xaxis.convertedCatToNumeric ? xaxisForeColors[w.globals.minX + i - 1] : xaxisForeColors[i]; + }; + + if (w.config.xaxis.labels.show) { + var elText = graphics.drawText({ + x: label.x, + y: _this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0), + text: label.text, + textAnchor: 'middle', + fontWeight: label.isBold ? 600 : fontWeight, + fontSize: xaxisFontSize, + fontFamily: xaxisFontFamily, + foreColor: Array.isArray(xaxisForeColors) ? getCatForeColor() : xaxisForeColors, + isPlainText: false, + cssClass: (isLeafGroup ? 'apexcharts-xaxis-label ' : 'apexcharts-xaxis-group-label ') + cssClass + }); + elXaxisTexts.add(elText); + elText.on('click', function (e) { + if (typeof w.config.chart.events.xAxisLabelClick === 'function') { + var opts = Object.assign({}, w, { + labelIndex: i + }); + w.config.chart.events.xAxisLabelClick(e, _this.ctx, opts); + } + }); + + if (isLeafGroup) { + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(label.text) ? label.text.join(' ') : label.text; + elText.node.appendChild(elTooltipTitle); + + if (label.text !== '') { + drawnLabels.push(label.text); + drawnLabelsRects.push(label); + } + } + } + + if (i < labelsLen - 1) { + xPos = xPos + colWidthCb(i + 1, colWidth); + } + }; + + for (var i = 0; i <= labelsLen - 1; i++) { + _loop(i); + } + } // this actually becomes the vertical axis (for bar charts) + + }, { + key: "drawXaxisInversed", + value: function drawXaxisInversed(realIndex) { + var _this2 = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0; + var elYaxis = graphics.group({ + class: 'apexcharts-yaxis apexcharts-xaxis-inversed', + rel: realIndex + }); + var elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g', + transform: 'translate(' + translateYAxisX + ', 0)' + }); + elYaxis.add(elYaxisTexts); + var colHeight; // initial x Position (keep adding column width in the loop) + + var yPos; + var labels = []; + + if (w.config.yaxis[realIndex].show) { + for (var i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]); + } + } + + colHeight = w.globals.gridHeight / labels.length; + yPos = -(colHeight / 2.2); + var lbFormatter = w.globals.yLabelFormatters[0]; + var ylabels = w.config.yaxis[0].labels; + + if (ylabels.show) { + var _loop2 = function _loop2(_i2) { + var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2]; + label = lbFormatter(label, { + seriesIndex: realIndex, + dataPointIndex: _i2, + w: w + }); + + var yColors = _this2.axesUtils.getYAxisForeColor(ylabels.style.colors, realIndex); + + var getForeColor = function getForeColor() { + return Array.isArray(yColors) ? yColors[_i2] : yColors; + }; + + var multiY = 0; + + if (Array.isArray(label)) { + multiY = label.length / 2 * parseInt(ylabels.style.fontSize, 10); + } + + var offsetX = ylabels.offsetX - 15; + var textAnchor = 'end'; + + if (_this2.yaxis.opposite) { + textAnchor = 'start'; + } + + if (w.config.yaxis[0].labels.align === 'left') { + offsetX = ylabels.offsetX; + textAnchor = 'start'; + } else if (w.config.yaxis[0].labels.align === 'center') { + offsetX = ylabels.offsetX; + textAnchor = 'middle'; + } else if (w.config.yaxis[0].labels.align === 'right') { + textAnchor = 'end'; + } + + var elLabel = graphics.drawText({ + x: offsetX, + y: yPos + colHeight + ylabels.offsetY - multiY, + text: label, + textAnchor: textAnchor, + foreColor: getForeColor(), + fontSize: ylabels.style.fontSize, + fontFamily: ylabels.style.fontFamily, + fontWeight: ylabels.style.fontWeight, + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass, + maxWidth: ylabels.maxWidth + }); + elYaxisTexts.add(elLabel); + elLabel.on('click', function (e) { + if (typeof w.config.chart.events.xAxisLabelClick === 'function') { + var opts = Object.assign({}, w, { + labelIndex: _i2 + }); + w.config.chart.events.xAxisLabelClick(e, _this2.ctx, opts); + } + }); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(label) ? label.join(' ') : label; + elLabel.node.appendChild(elTooltipTitle); + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node); + elLabel.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " 0 ").concat(labelRotatingCenter.y, ")")); + } + + yPos = yPos + colHeight; + }; + + for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) { + _loop2(_i2); + } + } + + if (w.config.yaxis[0].title.text !== undefined) { + var elXaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed', + transform: 'translate(' + translateYAxisX + ', 0)' + }); + var elXAxisTitleText = graphics.drawText({ + x: w.config.yaxis[0].title.offsetX, + y: w.globals.gridHeight / 2 + w.config.yaxis[0].title.offsetY, + text: w.config.yaxis[0].title.text, + textAnchor: 'middle', + foreColor: w.config.yaxis[0].title.style.color, + fontSize: w.config.yaxis[0].title.style.fontSize, + fontWeight: w.config.yaxis[0].title.style.fontWeight, + fontFamily: w.config.yaxis[0].title.style.fontFamily, + cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass + }); + elXaxisTitle.add(elXAxisTitleText); + elYaxis.add(elXaxisTitle); + } + + var offX = 0; + + if (this.isCategoryBarHorizontal && w.config.yaxis[0].opposite) { + offX = w.globals.gridWidth; + } + + var axisBorder = w.config.xaxis.axisBorder; + + if (axisBorder.show) { + var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX + offX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX + offX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color, 0); + + if (this.elgrid && this.elgrid.elGridBorders && w.config.grid.show) { + this.elgrid.elGridBorders.add(elVerticalLine); + } else { + elYaxis.add(elVerticalLine); + } + } + + if (w.config.yaxis[0].axisTicks.show) { + this.axesUtils.drawYAxisTicks(offX, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis); + } + + return elYaxis; + } + }, { + key: "drawXaxisTicks", + value: function drawXaxisTicks(x1, y2, appendToElement) { + var w = this.w; + var x2 = x1; + if (x1 < 0 || x1 - 2 > w.globals.gridWidth) return; + var y1 = this.offY + w.config.xaxis.axisTicks.offsetY; + y2 = y2 + y1 + w.config.xaxis.axisTicks.height; + + if (w.config.xaxis.position === 'top') { + y2 = y1 - w.config.xaxis.axisTicks.height; + } + + if (w.config.xaxis.axisTicks.show) { + var graphics = new Graphics(this.ctx); + var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element passed in param + + appendToElement.add(line); + line.node.classList.add('apexcharts-xaxis-tick'); + } + } + }, { + key: "getXAxisTicksPositions", + value: function getXAxisTicksPositions() { + var w = this.w; + var xAxisTicksPositions = []; + var xCount = this.xaxisLabels.length; + var x1 = w.globals.padHorizontal; + + if (w.globals.timescaleLabels.length > 0) { + for (var i = 0; i < xCount; i++) { + x1 = this.xaxisLabels[i].position; + xAxisTicksPositions.push(x1); + } + } else { + var xCountForCategoryCharts = xCount; + + for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) { + var x1Count = xCountForCategoryCharts; + + if (w.globals.isXNumeric && w.config.chart.type !== 'bar') { + x1Count -= 1; + } + + x1 = x1 + w.globals.gridWidth / x1Count; + xAxisTicksPositions.push(x1); + } + } + + return xAxisTicksPositions; + } // to rotate x-axis labels or to put ... for longer text in xaxis + + }, { + key: "xAxisLabelCorrections", + value: function xAxisLabelCorrections() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g'); + var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)'); + var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text'); + var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text tspan'); + + if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) { + for (var xat = 0; xat < xAxisTexts.length; xat++) { + var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]); + textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4; + + textRotatingCenter.x = textRotatingCenter.x + 1; + xAxisTexts[xat].setAttribute('transform', "rotate(".concat(w.config.xaxis.labels.rotate, " ").concat(textRotatingCenter.x, " ").concat(textRotatingCenter.y, ")")); + xAxisTexts[xat].setAttribute('text-anchor', "end"); + var offsetHeight = 10; + xAxis.setAttribute('transform', "translate(0, ".concat(-offsetHeight, ")")); + var tSpan = xAxisTexts[xat].childNodes; + + if (w.config.xaxis.labels.trim) { + Array.prototype.forEach.call(tSpan, function (ts) { + graphics.placeTextWithEllipsis(ts, ts.textContent, w.globals.xAxisLabelsHeight - (w.config.legend.position === 'bottom' ? 20 : 10)); + }); + } + } + } else { + (function () { + var width = w.globals.gridWidth / (w.globals.labels.length + 1); + + for (var _xat = 0; _xat < xAxisTexts.length; _xat++) { + var _tSpan = xAxisTexts[_xat].childNodes; + + if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') { + Array.prototype.forEach.call(_tSpan, function (ts) { + graphics.placeTextWithEllipsis(ts, ts.textContent, width); + }); + } + } + })(); + } + + if (yAxisTextsInversed.length > 0) { + // truncate rotated y axis in bar chart (x axis) + var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox(); + var lastLabelPosX = yAxisTextsInversed[0].getBBox(); + + if (firstLabelPosX.x < -20) { + yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]); + } + + if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth && !w.globals.isBarHorizontal) { + yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]); + } // truncate rotated x axis in bar chart (y axis) + + + for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) { + graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - (w.config.yaxis[0].title.text ? parseFloat(w.config.yaxis[0].title.style.fontSize) * 2 : 0) - 15); + } + } + } // renderXAxisBands() { + // let w = this.w; + // let plotBand = document.createElementNS(w.globals.SVGNS, 'rect') + // w.globals.dom.elGraphical.add(plotBand) + // } + + }]); + + return XAxis; + }(); + + /** + * ApexCharts Grid Class for drawing Cartesian Grid. + * + * @module Grid + **/ + + var Grid = /*#__PURE__*/function () { + function Grid(ctx) { + _classCallCheck(this, Grid); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.xaxisLabels = w.globals.labels.slice(); + this.axesUtils = new AxesUtils(ctx); + this.isRangeBar = w.globals.seriesRange.length; + + if (w.globals.timescaleLabels.length > 0) { + // timescaleLabels labels are there + this.xaxisLabels = w.globals.timescaleLabels.slice(); + } + } // when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well + + + _createClass(Grid, [{ + key: "drawGridArea", + value: function drawGridArea() { + var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (elGrid === null) { + elGrid = graphics.group({ + class: 'apexcharts-grid' + }); + } + + var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent'); + var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent'); + elGrid.add(elHorzLine); + elGrid.add(elVerticalLine); + return elGrid; + } + }, { + key: "drawGrid", + value: function drawGrid() { + var gl = this.w.globals; + var elgrid = null; + + if (gl.axisCharts) { + // grid is drawn after xaxis and yaxis are drawn + elgrid = this.renderGrid(); + this.drawGridArea(elgrid.el); + } + + return elgrid; + } // This mask will clip off overflowing graphics from the drawable area + + }, { + key: "createGridMask", + value: function createGridMask() { + var w = this.w; + var gl = w.globals; + var graphics = new Graphics(this.ctx); + var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width; + + if (Array.isArray(w.config.stroke.width)) { + var strokeMaxSize = 0; + w.config.stroke.width.forEach(function (m) { + strokeMaxSize = Math.max(strokeMaxSize, m); + }); + strokeSize = strokeMaxSize; + } + + gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elGridRectMask.setAttribute('id', "gridRectMask".concat(gl.cuid)); + gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elGridRectMarkerMask.setAttribute('id', "gridRectMarkerMask".concat(gl.cuid)); + gl.dom.elForecastMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elForecastMask.setAttribute('id', "forecastMask".concat(gl.cuid)); + gl.dom.elNonForecastMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elNonForecastMask.setAttribute('id', "nonForecastMask".concat(gl.cuid)); // let barHalfWidth = 0 + + var type = w.config.chart.type; + var hasBar = type === 'bar' || type === 'rangeBar' || type === 'candlestick' || type === 'boxPlot' || w.globals.comboBarCount > 0; + var barWidthLeft = 0; + var barWidthRight = 0; + + if (hasBar && w.globals.isXNumeric && !w.globals.isBarHorizontal) { + barWidthLeft = w.config.grid.padding.left; + barWidthRight = w.config.grid.padding.right; + + if (gl.barPadForNumericAxis > barWidthLeft) { + barWidthLeft = gl.barPadForNumericAxis; + barWidthRight = gl.barPadForNumericAxis; + } + } + + gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2 - barWidthLeft - 2, -strokeSize / 2, gl.gridWidth + strokeSize + barWidthRight + barWidthLeft + 4, gl.gridHeight + strokeSize, 0, '#fff'); + var markerSize = w.globals.markers.largestSize + 1; + gl.dom.elGridRectMarker = graphics.drawRect(-markerSize * 2, -markerSize * 2, gl.gridWidth + markerSize * 4, gl.gridHeight + markerSize * 4, 0, '#fff'); + gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node); + gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node); + var defs = gl.dom.baseEl.querySelector('defs'); + defs.appendChild(gl.dom.elGridRectMask); + defs.appendChild(gl.dom.elForecastMask); + defs.appendChild(gl.dom.elNonForecastMask); + defs.appendChild(gl.dom.elGridRectMarkerMask); + } + }, { + key: "_drawGridLines", + value: function _drawGridLines(_ref) { + var i = _ref.i, + x1 = _ref.x1, + y1 = _ref.y1, + x2 = _ref.x2, + y2 = _ref.y2, + xCount = _ref.xCount, + parent = _ref.parent; + var w = this.w; + + var shouldDraw = function shouldDraw() { + if (i === 0 && w.globals.skipFirstTimelinelabel) { + return false; + } + + if (i === xCount - 1 && w.globals.skipLastTimelinelabel && !w.config.xaxis.labels.formatter) { + return false; + } + + if (w.config.chart.type === 'radar') { + return false; + } + + return true; + }; + + if (shouldDraw()) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: parent + }); + } + + var y_2 = 0; + + if (w.globals.hasXaxisGroups && w.config.xaxis.tickPlacement === 'between') { + var groups = w.globals.groups; + + if (groups) { + var gacc = 0; + + for (var gi = 0; gacc < i && gi < groups.length; gi++) { + gacc += groups[gi].cols; + } + + if (gacc === i) { + y_2 = w.globals.xAxisLabelsHeight * 0.6; + } + } + } + + var xAxis = new XAxis(this.ctx); + xAxis.drawXaxisTicks(x1, y_2, w.globals.dom.elGraphical); + } + } + }, { + key: "_drawGridLine", + value: function _drawGridLine(_ref2) { + var i = _ref2.i, + x1 = _ref2.x1, + y1 = _ref2.y1, + x2 = _ref2.x2, + y2 = _ref2.y2, + xCount = _ref2.xCount, + parent = _ref2.parent; + var w = this.w; + var excludeBorders = false; + var isHorzLine = parent.node.classList.contains('apexcharts-gridlines-horizontal'); + var strokeDashArray = w.config.grid.strokeDashArray; + var offX = w.globals.barPadForNumericAxis; + + if (y1 === 0 && y2 === 0 || x1 === 0 && x2 === 0) { + excludeBorders = true; + } + + if (y1 === w.globals.gridHeight && y2 === w.globals.gridHeight) { + excludeBorders = true; + } + + if (w.globals.isBarHorizontal && (i === 0 || i === xCount - 1)) { + excludeBorders = true; + } + + var graphics = new Graphics(this); + var line = graphics.drawLine(x1 - (isHorzLine ? offX : 0), y1, x2 + (isHorzLine ? offX : 0), y2, w.config.grid.borderColor, strokeDashArray); + line.node.classList.add('apexcharts-gridline'); + + if (excludeBorders && w.config.grid.show) { + this.elGridBorders.add(line); + } else { + parent.add(line); + } + } + }, { + key: "_drawGridBandRect", + value: function _drawGridBandRect(_ref3) { + var c = _ref3.c, + x1 = _ref3.x1, + y1 = _ref3.y1, + x2 = _ref3.x2, + y2 = _ref3.y2, + type = _ref3.type; + var w = this.w; + var graphics = new Graphics(this.ctx); + var offX = w.globals.barPadForNumericAxis; + if (type === 'column' && w.config.xaxis.type === 'datetime') return; + var color = w.config.grid[type].colors[c]; + var rect = graphics.drawRect(x1 - (type === 'row' ? offX : 0), y1, x2 + (type === 'row' ? offX * 2 : 0), y2, 0, color, w.config.grid[type].opacity); + this.elg.add(rect); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + rect.node.classList.add("apexcharts-grid-".concat(type)); + } + }, { + key: "_drawXYLines", + value: function _drawXYLines(_ref4) { + var _this = this; + + var xCount = _ref4.xCount, + tickAmount = _ref4.tickAmount; + var w = this.w; + + var datetimeLines = function datetimeLines(_ref5) { + var xC = _ref5.xC, + x1 = _ref5.x1, + y1 = _ref5.y1, + x2 = _ref5.x2, + y2 = _ref5.y2; + + for (var i = 0; i < xC; i++) { + x1 = _this.xaxisLabels[i].position; + x2 = _this.xaxisLabels[i].position; + + _this._drawGridLines({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: _this.elgridLinesV + }); + } + }; + + var categoryLines = function categoryLines(_ref6) { + var xC = _ref6.xC, + x1 = _ref6.x1, + y1 = _ref6.y1, + x2 = _ref6.x2, + y2 = _ref6.y2; + + for (var i = 0; i < xC + (w.globals.isXNumeric ? 0 : 1); i++) { + if (i === 0 && xC === 1 && w.globals.dataPoints === 1) { + // single datapoint + x1 = w.globals.gridWidth / 2; + x2 = x1; + } + + _this._drawGridLines({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: _this.elgridLinesV + }); + + x1 = x1 + w.globals.gridWidth / (w.globals.isXNumeric ? xC - 1 : xC); + x2 = x1; + } + }; // draw vertical lines + + + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + var x1 = w.globals.padHorizontal; + var y1 = 0; + var x2; + var y2 = w.globals.gridHeight; + + if (w.globals.timescaleLabels.length) { + datetimeLines({ + xC: xCount, + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + } else { + if (w.globals.isXNumeric) { + xCount = w.globals.xAxisScale.result.length; + } + + categoryLines({ + xC: xCount, + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + } + } // draw horizontal lines + + + if (w.config.grid.yaxis.lines.show) { + var _x = 0; + var _y = 0; + var _y2 = 0; + var _x2 = w.globals.gridWidth; + var tA = tickAmount + 1; + + if (this.isRangeBar) { + tA = w.globals.labels.length; + } + + for (var i = 0; i < tA + (this.isRangeBar ? 1 : 0); i++) { + this._drawGridLine({ + i: i, + xCount: tA + (this.isRangeBar ? 1 : 0), + x1: _x, + y1: _y, + x2: _x2, + y2: _y2, + parent: this.elgridLinesH + }); + + _y = _y + w.globals.gridHeight / (this.isRangeBar ? tA : tickAmount); + _y2 = _y; + } + } + } + }, { + key: "_drawInvertedXYLines", + value: function _drawInvertedXYLines(_ref7) { + var xCount = _ref7.xCount; + var w = this.w; // draw vertical lines + + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + var x1 = w.globals.padHorizontal; + var y1 = 0; + var x2; + var y2 = w.globals.gridHeight; + + for (var i = 0; i < xCount + 1; i++) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ + i: i, + xCount: xCount + 1, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + parent: this.elgridLinesV + }); + } + + var xAxis = new XAxis(this.ctx); + xAxis.drawXaxisTicks(x1, 0, w.globals.dom.elGraphical); + x1 = x1 + w.globals.gridWidth / xCount + 0.3; + x2 = x1; + } + } // draw horizontal lines + + + if (w.config.grid.yaxis.lines.show) { + var _x3 = 0; + var _y3 = 0; + var _y4 = 0; + var _x4 = w.globals.gridWidth; + + for (var _i = 0; _i < w.globals.dataPoints + 1; _i++) { + this._drawGridLine({ + i: _i, + xCount: w.globals.dataPoints + 1, + x1: _x3, + y1: _y3, + x2: _x4, + y2: _y4, + parent: this.elgridLinesH + }); + + _y3 = _y3 + w.globals.gridHeight / w.globals.dataPoints; + _y4 = _y3; + } + } + } // actual grid rendering + + }, { + key: "renderGrid", + value: function renderGrid() { + var w = this.w; + var graphics = new Graphics(this.ctx); + this.elg = graphics.group({ + class: 'apexcharts-grid' + }); + this.elgridLinesH = graphics.group({ + class: 'apexcharts-gridlines-horizontal' + }); + this.elgridLinesV = graphics.group({ + class: 'apexcharts-gridlines-vertical' + }); + this.elGridBorders = graphics.group({ + class: 'apexcharts-grid-borders' + }); + this.elg.add(this.elgridLinesH); + this.elg.add(this.elgridLinesV); + + if (!w.config.grid.show) { + this.elgridLinesV.hide(); + this.elgridLinesH.hide(); + this.elGridBorders.hide(); + } + + var yTickAmount = w.globals.yAxisScale.length ? w.globals.yAxisScale[0].result.length - 1 : 5; + + for (var i = 0; i < w.globals.series.length; i++) { + if (typeof w.globals.yAxisScale[i] !== 'undefined') { + yTickAmount = w.globals.yAxisScale[i].result.length - 1; + } + + if (yTickAmount > 2) break; + } + + var xCount; + + if (!w.globals.isBarHorizontal || this.isRangeBar) { + xCount = this.xaxisLabels.length; + + if (this.isRangeBar) { + xCount--; + yTickAmount = w.globals.labels.length; + + if (w.config.xaxis.tickAmount && w.config.xaxis.labels.formatter) { + xCount = w.config.xaxis.tickAmount; + } + } + + this._drawXYLines({ + xCount: xCount, + tickAmount: yTickAmount + }); + } else { + xCount = yTickAmount; // for horizontal bar chart, get the xaxis tickamount + + yTickAmount = w.globals.xTickAmount; + + this._drawInvertedXYLines({ + xCount: xCount, + tickAmount: yTickAmount + }); + } + + this.drawGridBands(xCount, yTickAmount); + return { + el: this.elg, + elGridBorders: this.elGridBorders, + xAxisTickWidth: w.globals.gridWidth / xCount + }; + } + }, { + key: "drawGridBands", + value: function drawGridBands(xCount, tickAmount) { + var w = this.w; // rows background bands + + if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) { + var x1 = 0; + var y1 = 0; + var y2 = w.globals.gridHeight / tickAmount; + var x2 = w.globals.gridWidth; + + for (var i = 0, c = 0; i < tickAmount; i++, c++) { + if (c >= w.config.grid.row.colors.length) { + c = 0; + } + + this._drawGridBandRect({ + c: c, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + type: 'row' + }); + + y1 = y1 + w.globals.gridHeight / tickAmount; + } + } // columns background bands + + + if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) { + var xc = !w.globals.isBarHorizontal && (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) ? xCount - 1 : xCount; + var _x5 = w.globals.padHorizontal; + var _y5 = 0; + + var _x6 = w.globals.padHorizontal + w.globals.gridWidth / xc; + + var _y6 = w.globals.gridHeight; + + for (var _i2 = 0, _c = 0; _i2 < xCount; _i2++, _c++) { + if (_c >= w.config.grid.column.colors.length) { + _c = 0; + } + + this._drawGridBandRect({ + c: _c, + x1: _x5, + y1: _y5, + x2: _x6, + y2: _y6, + type: 'column' + }); + + _x5 = _x5 + w.globals.gridWidth / xc; + } + } + } + }]); + + return Grid; + }(); + + var Range$1 = /*#__PURE__*/function () { + function Range(ctx) { + _classCallCheck(this, Range); + + this.ctx = ctx; + this.w = ctx.w; + } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss + // This routine creates the Y axis values for a graph. + + + _createClass(Range, [{ + key: "niceScale", + value: function niceScale(yMin, yMax) { + var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; + var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + var NO_MIN_MAX_PROVIDED = arguments.length > 4 ? arguments[4] : undefined; + var w = this.w; // Determine Range + + var range = Math.abs(yMax - yMin); + ticks = this._adjustTicksForSmallRange(ticks, index, range); + + if (ticks === 'dataPoints') { + ticks = w.globals.dataPoints - 1; + } + + if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils$1.isNumber(yMin) && !Utils$1.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) { + // when all values are 0 + yMin = 0; + yMax = ticks; + var linearScale = this.linearScale(yMin, yMax, ticks); + return linearScale; + } + + if (yMin > yMax) { + // if somehow due to some wrong config, user sent max less than min, + // adjust the min/max again + console.warn('axis.min cannot be greater than axis.max'); + yMax = yMin + 0.1; + } else if (yMin === yMax) { + // If yMin and yMax are identical, then + // adjust the yMin and yMax values to actually + // make a graph. Also avoids division by zero errors. + yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value + + yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value + } // Calculate Min amd Max graphical labels and graph + // increments. The number of ticks defaults to + // 10 which is the SUGGESTED value. Any tick value + // entered is used as a suggested value which is + // adjusted to be a 'pretty' value. + // + // Output will be an array of the Y axis values that + // encompass the Y values. + + + var result = []; + + if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.config.chart.type === 'boxPlot' || w.config.series[index].type === 'boxPlot' || w.globals.isRangeData)) { + /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */ + yMax = yMax * 1.01; + } + + var tiks = ticks + 1; // Adjust ticks if needed + + if (tiks < 2) { + tiks = 2; + } else if (tiks > 2) { + tiks -= 2; + } // Get raw step value + + + var tempStep = range / tiks; // Calculate pretty step value + + var mag = Math.floor(Utils$1.log10(tempStep)); + var magPow = Math.pow(10, mag); + var magMsd = Math.round(tempStep / magPow); + + if (magMsd < 1) { + magMsd = 1; + } + + var stepSize = magMsd * magPow; // build Y label array. + // Lower and upper bounds calculations + + var lb = stepSize * Math.floor(yMin / stepSize); + var ub = stepSize * Math.ceil(yMax / stepSize); // Build array + + var val = lb; + + if (NO_MIN_MAX_PROVIDED && range > 2) { + while (1) { + result.push(val); + val += stepSize; + + if (val > ub) { + break; + } + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } else { + result = []; + var v = yMin; + result.push(v); + var valuesDivider = Math.abs(yMax - yMin) / ticks; + + for (var i = 0; i <= ticks; i++) { + v = v + valuesDivider; + result.push(v); + } + + if (result[result.length - 2] >= yMax) { + result.pop(); + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } + } + }, { + key: "linearScale", + value: function linearScale(yMin, yMax) { + var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; + var index = arguments.length > 3 ? arguments[3] : undefined; + var range = Math.abs(yMax - yMin); + ticks = this._adjustTicksForSmallRange(ticks, index, range); + + if (ticks === 'dataPoints') { + ticks = this.w.globals.dataPoints - 1; + } + + var step = range / ticks; + + if (ticks === Number.MAX_VALUE) { + ticks = 10; + step = 1; + } + + var result = []; + var v = yMin; + + while (ticks >= 0) { + result.push(v); + v = v + step; + ticks -= 1; + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } + }, { + key: "logarithmicScaleNice", + value: function logarithmicScaleNice(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base); + if (yMin <= 0) yMin = Math.min(yMax, base); + var logs = []; + var logMax = Math.ceil(Math.log(yMax) / Math.log(base) + 1); // Get powers of base for our max and min + + var logMin = Math.floor(Math.log(yMin) / Math.log(base)); + + for (var i = logMin; i < logMax; i++) { + logs.push(Math.pow(base, i)); + } + + return { + result: logs, + niceMin: logs[0], + niceMax: logs[logs.length - 1] + }; + } + }, { + key: "logarithmicScale", + value: function logarithmicScale(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base); + if (yMin <= 0) yMin = Math.min(yMax, base); + var logs = []; // Get the logarithmic range. + + var logMax = Math.log(yMax) / Math.log(base); + var logMin = Math.log(yMin) / Math.log(base); // Get the exact logarithmic range. + // (This is the exact number of multiples of the base there are between yMin and yMax). + + var logRange = logMax - logMin; // Round the logarithmic range to get the number of ticks we will create. + // If the chosen min/max values are multiples of each other WRT the base, this will be neat. + // If the chosen min/max aren't, we will at least still provide USEFUL ticks. + + var ticks = Math.round(logRange); // Get the logarithmic spacing between ticks. + + var logTickSpacing = logRange / ticks; // Create as many ticks as there is range in the logs. + + for (var i = 0, logTick = logMin; i < ticks; i++, logTick += logTickSpacing) { + logs.push(Math.pow(base, logTick)); + } // Add a final tick at the yMax. + + + logs.push(Math.pow(base, logMax)); + return { + result: logs, + niceMin: yMin, + niceMax: yMax + }; + } + }, { + key: "_adjustTicksForSmallRange", + value: function _adjustTicksForSmallRange(ticks, index, range) { + var newTicks = ticks; + + if (typeof index !== 'undefined' && this.w.config.yaxis[index].labels.formatter && this.w.config.yaxis[index].tickAmount === undefined) { + var formattedVal = Number(this.w.config.yaxis[index].labels.formatter(1)); + + if (Utils$1.isNumber(formattedVal) && this.w.globals.yValueDecimal === 0) { + newTicks = Math.ceil(range); + } + } + + return newTicks < ticks ? newTicks : ticks; + } + }, { + key: "setYScaleForIndex", + value: function setYScaleForIndex(index, minY, maxY) { + var gl = this.w.globals; + var cnf = this.w.config; + var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index]; + + if (typeof gl.yAxisScale[index] === 'undefined') { + gl.yAxisScale[index] = []; + } + + var diff = Math.abs(maxY - minY); + + if (y.logarithmic && diff <= 5) { + gl.invalidLogScale = true; + } + + if (y.logarithmic && diff > 5) { + gl.allSeriesCollapsed = false; + gl.yAxisScale[index] = this.logarithmicScale(minY, maxY, y.logBase); + gl.yAxisScale[index] = y.forceNiceScale ? this.logarithmicScaleNice(minY, maxY, y.logBase) : this.logarithmicScale(minY, maxY, y.logBase); + } else { + if (maxY === -Number.MAX_VALUE || !Utils$1.isNumber(maxY)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.yAxisScale[index] = this.linearScale(0, 5, 5); + } else { + // there is some data. Turn off the allSeriesCollapsed flag + gl.allSeriesCollapsed = false; + + if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) { + // fix https://github.com/apexcharts/apexcharts.js/issues/492 + gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount, index); + } else { + var noMinMaxProvided = cnf.yaxis[index].max === undefined && cnf.yaxis[index].min === undefined || cnf.yaxis[index].forceNiceScale; + gl.yAxisScale[index] = this.niceScale(minY, maxY, y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397 + noMinMaxProvided); + } + } + } + } + }, { + key: "setXScale", + value: function setXScale(minX, maxX) { + var w = this.w; + var gl = w.globals; + var x = w.config.xaxis; + var diff = Math.abs(maxX - minX); + + if (maxX === -Number.MAX_VALUE || !Utils$1.isNumber(maxX)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.xAxisScale = this.linearScale(0, 5, 5); + } else { + gl.xAxisScale = this.linearScale(minX, maxX, x.tickAmount ? x.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, 0); + } + + return gl.xAxisScale; + } + }, { + key: "setMultipleYScales", + value: function setMultipleYScales() { + var _this = this; + + var gl = this.w.globals; + var cnf = this.w.config; + var minYArr = gl.minYArr.concat([]); + var maxYArr = gl.maxYArr.concat([]); + var scalesIndices = []; // here, we loop through the yaxis array and find the item which has "seriesName" property + + cnf.yaxis.forEach(function (yaxe, i) { + var index = i; + cnf.series.forEach(function (s, si) { + // if seriesName matches and that series is not collapsed, we use that scale + // fix issue #1215 + // proceed even if si is in gl.collapsedSeriesIndices + if (s.name === yaxe.seriesName) { + index = si; + + if (i !== si) { + scalesIndices.push({ + index: si, + similarIndex: i, + alreadyExists: true + }); + } else { + scalesIndices.push({ + index: si + }); + } + } + }); + var minY = minYArr[index]; + var maxY = maxYArr[index]; + + _this.setYScaleForIndex(i, minY, maxY); + }); + this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices); + } + }, { + key: "sameScaleInMultipleAxes", + value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) { + var _this2 = this; + + var cnf = this.w.config; + var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales + + var similarIndices = []; + scalesIndices.forEach(function (scale) { + if (scale.alreadyExists) { + if (typeof similarIndices[scale.index] === 'undefined') { + similarIndices[scale.index] = []; + } + + similarIndices[scale.index].push(scale.index); + similarIndices[scale.index].push(scale.similarIndex); + } + }); + + function intersect(a, b) { + return a.filter(function (value) { + return b.indexOf(value) !== -1; + }); + } + + gl.yAxisSameScaleIndices = similarIndices; + similarIndices.forEach(function (si, i) { + similarIndices.forEach(function (sj, j) { + if (i !== j) { + if (intersect(si, sj).length > 0) { + similarIndices[i] = similarIndices[i].concat(similarIndices[j]); + } + } + }); + }); // then, we remove duplicates from the similarScale array + + var uniqueSimilarIndices = similarIndices.map(function (item) { + return item.filter(function (i, pos) { + return item.indexOf(i) === pos; + }); + }); // sort further to remove whole duplicate arrays later + + var sortedIndices = uniqueSimilarIndices.map(function (s) { + return s.sort(); + }); // remove undefined items + + similarIndices = similarIndices.filter(function (s) { + return !!s; + }); + var indices = sortedIndices.slice(); + var stringIndices = indices.map(function (ind) { + return JSON.stringify(ind); + }); + indices = indices.filter(function (ind, p) { + return stringIndices.indexOf(JSON.stringify(ind)) === p; + }); + var sameScaleMinYArr = []; + var sameScaleMaxYArr = []; + minYArr.forEach(function (minYValue, yi) { + indices.forEach(function (scale, i) { + // we compare only the yIndex which exists in the indices array + if (scale.indexOf(yi) > -1) { + if (typeof sameScaleMinYArr[i] === 'undefined') { + sameScaleMinYArr[i] = []; + sameScaleMaxYArr[i] = []; + } + + sameScaleMinYArr[i].push({ + key: yi, + value: minYValue + }); + sameScaleMaxYArr[i].push({ + key: yi, + value: maxYArr[yi] + }); + } + }); + }); + var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE); + var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE); + sameScaleMinYArr.forEach(function (s, i) { + s.forEach(function (sc, j) { + sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]); + }); + }); + sameScaleMaxYArr.forEach(function (s, i) { + s.forEach(function (sc, j) { + sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]); + }); + }); + minYArr.forEach(function (min, i) { + sameScaleMaxYArr.forEach(function (s, si) { + var minY = sameScaleMin[si]; + var maxY = sameScaleMax[si]; + + if (cnf.chart.stacked) { + // for stacked charts, we need to add the values + maxY = 0; + s.forEach(function (ind, k) { + // fix incorrectly adjust y scale issue #1215 + if (ind.value !== -Number.MAX_VALUE) { + maxY += ind.value; + } + + if (minY !== Number.MIN_VALUE) { + minY += sameScaleMinYArr[si][k].value; + } + }); + } + + s.forEach(function (ind, k) { + if (s[k].key === i) { + if (cnf.yaxis[i].min !== undefined) { + if (typeof cnf.yaxis[i].min === 'function') { + minY = cnf.yaxis[i].min(gl.minY); + } else { + minY = cnf.yaxis[i].min; + } + } + + if (cnf.yaxis[i].max !== undefined) { + if (typeof cnf.yaxis[i].max === 'function') { + maxY = cnf.yaxis[i].max(gl.maxY); + } else { + maxY = cnf.yaxis[i].max; + } + } + + _this2.setYScaleForIndex(i, minY, maxY); + } + }); + }); + }); + } // experimental feature which scales the y-axis to a min/max based on x-axis range + + }, { + key: "autoScaleY", + value: function autoScaleY(ctx, yaxis, e) { + if (!ctx) { + ctx = this; + } + + var w = ctx.w; + + if (w.globals.isMultipleYAxis || w.globals.collapsedSeries.length) { + // The autoScale option for multiple y-axis is turned off as it leads to buggy behavior. + // Also, when a series is collapsed, it results in incorrect behavior. Hence turned it off for that too - fixes apexcharts.js#795 + console.warn('autoScaleYaxis is not supported in a multi-yaxis chart.'); + return yaxis; + } + + var seriesX = w.globals.seriesX[0]; + var isStacked = w.config.chart.stacked; + yaxis.forEach(function (yaxe, yi) { + var firstXIndex = 0; + + for (var xi = 0; xi < seriesX.length; xi++) { + if (seriesX[xi] >= e.xaxis.min) { + firstXIndex = xi; + break; + } + } + + var initialMin = w.globals.minYArr[yi]; + var initialMax = w.globals.maxYArr[yi]; + var min, max; + var stackedSer = w.globals.stackedSeriesTotals; + w.globals.series.forEach(function (serie, sI) { + var firstValue = serie[firstXIndex]; + + if (isStacked) { + firstValue = stackedSer[firstXIndex]; + min = max = firstValue; + stackedSer.forEach(function (y, yI) { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + if (y > max && y !== null) max = y; + if (serie[yI] < min && serie[yI] !== null) min = serie[yI]; + } + }); + } else { + min = max = firstValue; + serie.forEach(function (y, yI) { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + var valMin = y; + var valMax = y; + w.globals.series.forEach(function (wS, wSI) { + if (y !== null) { + valMin = Math.min(wS[yI], valMin); + valMax = Math.max(wS[yI], valMax); + } + }); + if (valMax > max && valMax !== null) max = valMax; + if (valMin < min && valMin !== null) min = valMin; + } + }); + } + + if (min === undefined && max === undefined) { + min = initialMin; + max = initialMax; + } + + min *= min < 0 ? 1.1 : 0.9; + max *= max < 0 ? 0.9 : 1.1; + + if (min === 0 && max === 0) { + min = -1; + max = 1; + } + + if (max < 0 && max < initialMax) { + max = initialMax; + } + + if (min < 0 && min > initialMin) { + min = initialMin; + } + + if (yaxis.length > 1) { + yaxis[sI].min = yaxe.min === undefined ? min : yaxe.min; + yaxis[sI].max = yaxe.max === undefined ? max : yaxe.max; + } else { + yaxis[0].min = yaxe.min === undefined ? min : yaxe.min; + yaxis[0].max = yaxe.max === undefined ? max : yaxe.max; + } + }); + }); + return yaxis; + } + }]); + + return Range; + }(); + + /** + * Range is used to generates values between min and max. + * + * @module Range + **/ + + var Range = /*#__PURE__*/function () { + function Range(ctx) { + _classCallCheck(this, Range); + + this.ctx = ctx; + this.w = ctx.w; + this.scales = new Range$1(ctx); + } + + _createClass(Range, [{ + key: "init", + value: function init() { + this.setYRange(); + this.setXRange(); + this.setZRange(); + } + }, { + key: "getMinYMaxY", + value: function getMinYMaxY(startingIndex) { + var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; + var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE; + var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var cnf = this.w.config; + var gl = this.w.globals; + var maxY = -Number.MAX_VALUE; + var minY = Number.MIN_VALUE; + + if (len === null) { + len = startingIndex + 1; + } + + var series = gl.series; + var seriesMin = series; + var seriesMax = series; + + if (cnf.chart.type === 'candlestick') { + seriesMin = gl.seriesCandleL; + seriesMax = gl.seriesCandleH; + } else if (cnf.chart.type === 'boxPlot') { + seriesMin = gl.seriesCandleO; + seriesMax = gl.seriesCandleC; + } else if (gl.isRangeData) { + seriesMin = gl.seriesRangeStart; + seriesMax = gl.seriesRangeEnd; + } + + for (var i = startingIndex; i < len; i++) { + gl.dataPoints = Math.max(gl.dataPoints, series[i].length); + + if (gl.categoryLabels.length) { + gl.dataPoints = gl.categoryLabels.filter(function (label) { + return typeof label !== 'undefined'; + }).length; + } + + for (var j = 0; j < gl.series[i].length; j++) { + var val = series[i][j]; + + if (val !== null && Utils$1.isNumber(val)) { + if (typeof seriesMax[i][j] !== 'undefined') { + maxY = Math.max(maxY, seriesMax[i][j]); + lowestY = Math.min(lowestY, seriesMax[i][j]); + } + + if (typeof seriesMin[i][j] !== 'undefined') { + lowestY = Math.min(lowestY, seriesMin[i][j]); + highestY = Math.max(highestY, seriesMin[i][j]); + } + + if (this.w.config.chart.type === 'candlestick' || this.w.config.chart.type === 'boxPlot' || this.w.config.chart.type !== 'rangeArea' || this.w.config.chart.type !== 'rangeBar') { + if (this.w.config.chart.type === 'candlestick' || this.w.config.chart.type === 'boxPlot') { + if (typeof gl.seriesCandleC[i][j] !== 'undefined') { + maxY = Math.max(maxY, gl.seriesCandleO[i][j]); + maxY = Math.max(maxY, gl.seriesCandleH[i][j]); + maxY = Math.max(maxY, gl.seriesCandleL[i][j]); + maxY = Math.max(maxY, gl.seriesCandleC[i][j]); + + if (this.w.config.chart.type === 'boxPlot') { + maxY = Math.max(maxY, gl.seriesCandleM[i][j]); + } + } + } // there is a combo chart and the specified series in not either candlestick, boxplot, or rangeArea/rangeBar; find the max there + + + if (cnf.series[i].type && (cnf.series[i].type !== 'candlestick' || cnf.series[i].type !== 'boxPlot' || cnf.series[i].type !== 'rangeArea' || cnf.series[i].type !== 'rangeBar')) { + maxY = Math.max(maxY, gl.series[i][j]); + lowestY = Math.min(lowestY, gl.series[i][j]); + } + + highestY = maxY; + } + + if (gl.seriesGoals[i] && gl.seriesGoals[i][j] && Array.isArray(gl.seriesGoals[i][j])) { + gl.seriesGoals[i][j].forEach(function (g) { + if (minY !== Number.MIN_VALUE) { + minY = Math.min(minY, g.value); + lowestY = minY; + } + + maxY = Math.max(maxY, g.value); + highestY = maxY; + }); + } + + if (Utils$1.isFloat(val)) { + val = Utils$1.noExponents(val); + gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length); + } + + if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) { + minY = seriesMin[i][j]; + } + } else { + gl.hasNullValues = true; + } + } + } + + if (cnf.chart.type === 'rangeBar' && gl.seriesRangeStart.length && gl.isBarHorizontal) { + minY = lowestY; + } + + if (cnf.chart.type === 'bar') { + if (minY < 0 && maxY < 0) { + // all negative values in a bar chart, hence make the max to 0 + maxY = 0; + } + + if (minY === Number.MIN_VALUE) { + minY = 0; + } + } + + return { + minY: minY, + maxY: maxY, + lowestY: lowestY, + highestY: highestY + }; + } + }, { + key: "setYRange", + value: function setYRange() { + var gl = this.w.globals; + var cnf = this.w.config; + gl.maxY = -Number.MAX_VALUE; + gl.minY = Number.MIN_VALUE; + var lowestYInAllSeries = Number.MAX_VALUE; + + if (gl.isMultipleYAxis) { + // we need to get minY and maxY for multiple y axis + for (var i = 0; i < gl.series.length; i++) { + var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1); + gl.minYArr.push(minYMaxYArr.minY); + gl.maxYArr.push(minYMaxYArr.maxY); + lowestYInAllSeries = minYMaxYArr.lowestY; + } + } // and then, get the minY and maxY from all series + + + var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length); + gl.minY = minYMaxY.minY; + gl.maxY = minYMaxY.maxY; + lowestYInAllSeries = minYMaxY.lowestY; + + if (cnf.chart.stacked) { + this._setStackedMinMax(); + } // if the numbers are too big, reduce the range + // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks/boxPlot + + + if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick' || cnf.chart.type === 'boxPlot' || cnf.chart.type === 'rangeBar' && !gl.isBarHorizontal) { + if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility + ) { + var diff = gl.maxY - lowestYInAllSeries; + + if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10 || cnf.yaxis[0].min !== undefined || cnf.yaxis[0].max !== undefined) { + // if minY is already 0/low value, we don't want to go negatives here - so this check is essential. + diff = 0; + } + + gl.minY = lowestYInAllSeries - diff * 5 / 100; + /* fix https://github.com/apexcharts/apexcharts.js/issues/614 */ + + /* fix https://github.com/apexcharts/apexcharts.js/issues/968 */ + + if (lowestYInAllSeries > 0 && gl.minY < 0) { + gl.minY = 0; + } + /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */ + + + gl.maxY = gl.maxY + diff * 5 / 100; + } + } + + cnf.yaxis.forEach(function (yaxe, index) { + // override all min/max values by user defined values (y axis) + if (yaxe.max !== undefined) { + if (typeof yaxe.max === 'number') { + gl.maxYArr[index] = yaxe.max; + } else if (typeof yaxe.max === 'function') { + // fixes apexcharts.js/issues/2098 + gl.maxYArr[index] = yaxe.max(gl.isMultipleYAxis ? gl.maxYArr[index] : gl.maxY); + } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis + + + gl.maxY = gl.maxYArr[index]; + } + + if (yaxe.min !== undefined) { + if (typeof yaxe.min === 'number') { + gl.minYArr[index] = yaxe.min; + } else if (typeof yaxe.min === 'function') { + // fixes apexcharts.js/issues/2098 + gl.minYArr[index] = yaxe.min(gl.isMultipleYAxis ? gl.minYArr[index] === Number.MIN_VALUE ? 0 : gl.minYArr[index] : gl.minY); + } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis + + + gl.minY = gl.minYArr[index]; + } + }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there + + if (gl.isBarHorizontal) { + var minmax = ['min', 'max']; + minmax.forEach(function (m) { + if (cnf.xaxis[m] !== undefined && typeof cnf.xaxis[m] === 'number') { + m === 'min' ? gl.minY = cnf.xaxis[m] : gl.maxY = cnf.xaxis[m]; + } + }); + } // for multi y-axis we need different scales for each + + + if (gl.isMultipleYAxis) { + this.scales.setMultipleYScales(); + gl.minY = lowestYInAllSeries; + gl.yAxisScale.forEach(function (scale, i) { + gl.minYArr[i] = scale.niceMin; + gl.maxYArr[i] = scale.niceMax; + }); + } else { + this.scales.setYScaleForIndex(0, gl.minY, gl.maxY); + gl.minY = gl.yAxisScale[0].niceMin; + gl.maxY = gl.yAxisScale[0].niceMax; + gl.minYArr[0] = gl.yAxisScale[0].niceMin; + gl.maxYArr[0] = gl.yAxisScale[0].niceMax; + } + + return { + minY: gl.minY, + maxY: gl.maxY, + minYArr: gl.minYArr, + maxYArr: gl.maxYArr, + yAxisScale: gl.yAxisScale + }; + } + }, { + key: "setXRange", + value: function setXRange() { + var gl = this.w.globals; + var cnf = this.w.config; + var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric; + + var getInitialMinXMaxX = function getInitialMinXMaxX() { + for (var i = 0; i < gl.series.length; i++) { + if (gl.labels[i]) { + for (var j = 0; j < gl.labels[i].length; j++) { + if (gl.labels[i][j] !== null && Utils$1.isNumber(gl.labels[i][j])) { + gl.maxX = Math.max(gl.maxX, gl.labels[i][j]); + gl.initialMaxX = Math.max(gl.maxX, gl.labels[i][j]); + gl.minX = Math.min(gl.minX, gl.labels[i][j]); + gl.initialMinX = Math.min(gl.minX, gl.labels[i][j]); + } + } + } + } + }; // minX maxX starts here + + + if (gl.isXNumeric) { + getInitialMinXMaxX(); + } + + if (gl.noLabelsProvided) { + if (cnf.xaxis.categories.length === 0) { + gl.maxX = gl.labels[gl.labels.length - 1]; + gl.initialMaxX = gl.labels[gl.labels.length - 1]; + gl.minX = 1; + gl.initialMinX = 1; + } + } + + if (gl.isXNumeric || gl.noLabelsProvided || gl.dataFormatXNumeric) { + var ticks; + + if (cnf.xaxis.tickAmount === undefined) { + ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 30 + + if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 30) { + ticks = gl.dataPoints - 1; + } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels + + + if (ticks > gl.dataPoints && gl.dataPoints !== 0) { + ticks = gl.dataPoints - 1; + } + } else if (cnf.xaxis.tickAmount === 'dataPoints') { + if (gl.series.length > 1) { + ticks = gl.series[gl.maxValsInArrayIndex].length - 1; + } + + if (gl.isXNumeric) { + ticks = gl.maxX - gl.minX - 1; + } + } else { + ticks = cnf.xaxis.tickAmount; + } + + gl.xTickAmount = ticks; // override all min/max values by user defined values (x axis) + + if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') { + gl.maxX = cnf.xaxis.max; + } + + if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') { + gl.minX = cnf.xaxis.min; + } // if range is provided, adjust the new minX + + + if (cnf.xaxis.range !== undefined) { + gl.minX = gl.maxX - cnf.xaxis.range; + } + + if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) { + if (cnf.xaxis.convertedCatToNumeric && !gl.dataFormatXNumeric) { + var catScale = []; + + for (var i = gl.minX - 1; i < gl.maxX; i++) { + catScale.push(i + 1); + } + + gl.xAxisScale = { + result: catScale, + niceMin: catScale[0], + niceMax: catScale[catScale.length - 1] + }; + } else { + gl.xAxisScale = this.scales.setXScale(gl.minX, gl.maxX); + } + } else { + gl.xAxisScale = this.scales.linearScale(1, ticks, ticks); + + if (gl.noLabelsProvided && gl.labels.length > 0) { + gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated + + gl.seriesX = gl.labels.slice(); + } + } // we will still store these labels as the count for this will be different (to draw grid and labels placement) + + + if (isXNumeric) { + gl.labels = gl.xAxisScale.result.slice(); + } + } + + if (gl.isBarHorizontal && gl.labels.length) { + gl.xTickAmount = gl.labels.length; + } // single dataPoint + + + this._handleSingleDataPoint(); // minimum x difference to calculate bar width in numeric bars + + + this._getMinXDiff(); + + return { + minX: gl.minX, + maxX: gl.maxX + }; + } + }, { + key: "setZRange", + value: function setZRange() { + // minZ, maxZ starts here + var gl = this.w.globals; + if (!gl.isDataXYZ) return; + + for (var i = 0; i < gl.series.length; i++) { + if (typeof gl.seriesZ[i] !== 'undefined') { + for (var j = 0; j < gl.seriesZ[i].length; j++) { + if (gl.seriesZ[i][j] !== null && Utils$1.isNumber(gl.seriesZ[i][j])) { + gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]); + gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]); + } + } + } + } + } + }, { + key: "_handleSingleDataPoint", + value: function _handleSingleDataPoint() { + var gl = this.w.globals; + var cnf = this.w.config; + + if (gl.minX === gl.maxX) { + var datetimeObj = new DateTime(this.ctx); + + if (cnf.xaxis.type === 'datetime') { + var newMinX = datetimeObj.getDate(gl.minX); + + if (cnf.xaxis.labels.datetimeUTC) { + newMinX.setUTCDate(newMinX.getUTCDate() - 2); + } else { + newMinX.setDate(newMinX.getDate() - 2); + } + + gl.minX = new Date(newMinX).getTime(); + var newMaxX = datetimeObj.getDate(gl.maxX); + + if (cnf.xaxis.labels.datetimeUTC) { + newMaxX.setUTCDate(newMaxX.getUTCDate() + 2); + } else { + newMaxX.setDate(newMaxX.getDate() + 2); + } + + gl.maxX = new Date(newMaxX).getTime(); + } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) { + gl.minX = gl.minX - 2; + gl.initialMinX = gl.minX; + gl.maxX = gl.maxX + 2; + gl.initialMaxX = gl.maxX; + } + } + } + }, { + key: "_getMinXDiff", + value: function _getMinXDiff() { + var gl = this.w.globals; + + if (gl.isXNumeric) { + // get the least x diff if numeric x axis is present + gl.seriesX.forEach(function (sX, i) { + if (sX.length === 1) { + // a small hack to prevent overlapping multiple bars when there is just 1 datapoint in bar series. + // fix #811 + sX.push(gl.seriesX[gl.maxValsInArrayIndex][gl.seriesX[gl.maxValsInArrayIndex].length - 1]); + } // fix #983 (clone the array to avoid side effects) + + + var seriesX = sX.slice(); + seriesX.sort(function (a, b) { + return a - b; + }); + seriesX.forEach(function (s, j) { + if (j > 0) { + var xDiff = s - seriesX[j - 1]; + + if (xDiff > 0) { + gl.minXDiff = Math.min(xDiff, gl.minXDiff); + } + } + }); + + if (gl.dataPoints === 1 || gl.minXDiff === Number.MAX_VALUE) { + // fixes apexcharts.js #1221 + gl.minXDiff = 0.5; + } + }); + } + } + }, { + key: "_setStackedMinMax", + value: function _setStackedMinMax() { + var _this = this; + + var gl = this.w.globals; // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it + + if (!gl.series.length) return; + var seriesGroups = gl.seriesGroups; + + if (!seriesGroups.length) { + seriesGroups = [this.w.config.series.map(function (serie) { + return serie.name; + })]; + } + + var stackedPoss = {}; + var stackedNegs = {}; + seriesGroups.forEach(function (group) { + stackedPoss[group] = []; + stackedNegs[group] = []; + + var indicesOfSeriesInGroup = _this.w.config.series.map(function (serie, si) { + return group.indexOf(serie.name) > -1 ? si : null; + }).filter(function (f) { + return f !== null; + }); + + indicesOfSeriesInGroup.forEach(function (i) { + for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) { + if (typeof stackedPoss[group][j] === 'undefined') { + stackedPoss[group][j] = 0; + stackedNegs[group][j] = 0; + } + + if (gl.series[i][j] !== null && Utils$1.isNumber(gl.series[i][j])) { + gl.series[i][j] > 0 ? stackedPoss[group][j] += parseFloat(gl.series[i][j]) + 0.0001 : stackedNegs[group][j] += parseFloat(gl.series[i][j]); + } + } + }); + }); + Object.entries(stackedPoss).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + key = _ref2[0]; + + stackedPoss[key].forEach(function (_, stgi) { + gl.maxY = Math.max(gl.maxY, stackedPoss[key][stgi]); + gl.minY = Math.min(gl.minY, stackedNegs[key][stgi]); + }); + }); + } + }]); + + return Range; + }(); + + /** + * ApexCharts YAxis Class for drawing Y-Axis. + * + * @module YAxis + **/ + + var YAxis = /*#__PURE__*/function () { + function YAxis(ctx, elgrid) { + _classCallCheck(this, YAxis); + + this.ctx = ctx; + this.elgrid = elgrid; + this.w = ctx.w; + var w = this.w; + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize; + this.axisFontFamily = w.config.xaxis.labels.style.fontFamily; + this.xaxisForeColors = w.config.xaxis.labels.style.colors; + this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal; + this.xAxisoffX = 0; + + if (w.config.xaxis.position === 'bottom') { + this.xAxisoffX = w.globals.gridHeight; + } + + this.drawnLabels = []; + this.axesUtils = new AxesUtils(ctx); + } + + _createClass(YAxis, [{ + key: "drawYaxis", + value: function drawYaxis(realIndex) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var yaxisStyle = w.config.yaxis[realIndex].labels.style; + var yaxisFontSize = yaxisStyle.fontSize; + var yaxisFontFamily = yaxisStyle.fontFamily; + var yaxisFontWeight = yaxisStyle.fontWeight; + var elYaxis = graphics.group({ + class: 'apexcharts-yaxis', + rel: realIndex, + transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)' + }); + + if (this.axesUtils.isYAxisHidden(realIndex)) { + return elYaxis; + } + + var elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g' + }); + elYaxis.add(elYaxisTexts); + var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks + + var labelsDivider = w.globals.gridHeight / tickAmount; // initial label position = 0; + + var l = w.globals.translateY; + var lbFormatter = w.globals.yLabelFormatters[realIndex]; + var labels = w.globals.yAxisScale[realIndex].result.slice(); + labels = this.axesUtils.checkForReversedLabels(realIndex, labels); + var firstLabel = ''; + + if (w.config.yaxis[realIndex].labels.show) { + var _loop = function _loop(i) { + var val = labels[i]; + val = lbFormatter(val, i, w); + var xPad = w.config.yaxis[realIndex].labels.padding; + + if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) { + xPad = xPad * -1; + } + + var textAnchor = 'end'; + + if (w.config.yaxis[realIndex].opposite) { + textAnchor = 'start'; + } + + if (w.config.yaxis[realIndex].labels.align === 'left') { + textAnchor = 'start'; + } else if (w.config.yaxis[realIndex].labels.align === 'center') { + textAnchor = 'middle'; + } else if (w.config.yaxis[realIndex].labels.align === 'right') { + textAnchor = 'end'; + } + + var yColors = _this.axesUtils.getYAxisForeColor(yaxisStyle.colors, realIndex); + + var getForeColor = function getForeColor() { + return Array.isArray(yColors) ? yColors[i] : yColors; + }; + + var label = graphics.drawText({ + x: xPad, + y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1, + text: val, + textAnchor: textAnchor, + fontSize: yaxisFontSize, + fontFamily: yaxisFontFamily, + fontWeight: yaxisFontWeight, + maxWidth: w.config.yaxis[realIndex].labels.maxWidth, + foreColor: getForeColor(), + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + yaxisStyle.cssClass + }); + + if (i === tickAmount) { + firstLabel = label; + } + + elYaxisTexts.add(label); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(val) ? val.join(' ') : val; + label.node.appendChild(elTooltipTitle); + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + var firstabelRotatingCenter = graphics.rotateAroundCenter(firstLabel.node); + var labelRotatingCenter = graphics.rotateAroundCenter(label.node); + label.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(firstabelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")")); + } + + l = l + labelsDivider; + }; + + for (var i = tickAmount; i >= 0; i--) { + _loop(i); + } + } + + if (w.config.yaxis[realIndex].title.text !== undefined) { + var elYaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title' + }); + var _x = 0; + + if (w.config.yaxis[realIndex].opposite) { + _x = w.globals.translateYAxisX[realIndex]; + } + + var elYAxisTitleText = graphics.drawText({ + x: _x, + y: w.globals.gridHeight / 2 + w.globals.translateY + w.config.yaxis[realIndex].title.offsetY, + text: w.config.yaxis[realIndex].title.text, + textAnchor: 'end', + foreColor: w.config.yaxis[realIndex].title.style.color, + fontSize: w.config.yaxis[realIndex].title.style.fontSize, + fontWeight: w.config.yaxis[realIndex].title.style.fontWeight, + fontFamily: w.config.yaxis[realIndex].title.style.fontFamily, + cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass + }); + elYaxisTitle.add(elYAxisTitleText); + elYaxis.add(elYaxisTitle); + } + + var axisBorder = w.config.yaxis[realIndex].axisBorder; + var x = 31 + axisBorder.offsetX; + + if (w.config.yaxis[realIndex].opposite) { + x = -31 - axisBorder.offsetX; + } + + if (axisBorder.show) { + var elVerticalLine = graphics.drawLine(x, w.globals.translateY + axisBorder.offsetY - 2, x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color, 0, axisBorder.width); + elYaxis.add(elVerticalLine); + } + + if (w.config.yaxis[realIndex].axisTicks.show) { + this.axesUtils.drawYAxisTicks(x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis); + } + + return elYaxis; + } // This actually becomes horizontal axis (for bar charts) + + }, { + key: "drawYaxisInversed", + value: function drawYaxisInversed(realIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var elXaxis = graphics.group({ + class: 'apexcharts-xaxis apexcharts-yaxis-inversed' + }); + var elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")") + }); + elXaxis.add(elXaxisTexts); + var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks + + var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position; + + var l = labelsDivider + w.config.xaxis.labels.offsetX; + var lbFormatter = w.globals.xLabelFormatter; + var labels = w.globals.yAxisScale[realIndex].result.slice(); + var timescaleLabels = w.globals.timescaleLabels; + + if (timescaleLabels.length > 0) { + this.xaxisLabels = timescaleLabels.slice(); + labels = timescaleLabels.slice(); + tickAmount = labels.length; + } + + labels = this.axesUtils.checkForReversedLabels(realIndex, labels); + var tl = timescaleLabels.length; + + if (w.config.xaxis.labels.show) { + for (var i = tl ? 0 : tickAmount; tl ? i < tl : i >= 0; tl ? i++ : i--) { + var val = labels[i]; + val = lbFormatter(val, i, w); + var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX); + + if (timescaleLabels.length) { + var label = this.axesUtils.getLabel(labels, timescaleLabels, x, i, this.drawnLabels, this.xaxisFontSize); + x = label.x; + val = label.text; + this.drawnLabels.push(label.text); + + if (i === 0 && w.globals.skipFirstTimelinelabel) { + val = ''; + } + + if (i === labels.length - 1 && w.globals.skipLastTimelinelabel) { + val = ''; + } + } + + var elTick = graphics.drawText({ + x: x, + y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30 - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0), + text: val, + textAnchor: 'middle', + foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors, + fontSize: this.xaxisFontSize, + fontFamily: this.xaxisFontFamily, + fontWeight: w.config.xaxis.labels.style.fontWeight, + isPlainText: false, + cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass + }); + elXaxisTexts.add(elTick); + elTick.tspan(val); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = val; + elTick.node.appendChild(elTooltipTitle); + l = l + labelsDivider; + } + } + + this.inversedYAxisTitleText(elXaxis); + this.inversedYAxisBorder(elXaxis); + return elXaxis; + } + }, { + key: "inversedYAxisBorder", + value: function inversedYAxisBorder(parent) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var axisBorder = w.config.xaxis.axisBorder; + + if (axisBorder.show) { + var lineCorrection = 0; + + if (w.config.chart.type === 'bar' && w.globals.isXNumeric) { + lineCorrection = lineCorrection - 15; + } + + var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + axisBorder.offsetX, this.xAxisoffX, w.globals.gridWidth, this.xAxisoffX, axisBorder.color, 0, axisBorder.height); // in horizontal bars, we append axisBorder to elGridBorders element to avoid z-index issues + + if (this.elgrid && this.elgrid.elGridBorders && w.config.grid.show) { + this.elgrid.elGridBorders.add(elHorzLine); + } else { + parent.add(elHorzLine); + } + } + } + }, { + key: "inversedYAxisTitleText", + value: function inversedYAxisTitleText(parent) { + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (w.config.xaxis.title.text !== undefined) { + var elYaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed' + }); + var elYAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(w.config.xaxis.title.style.fontSize) + w.config.xaxis.title.offsetY + 20, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }); + elYaxisTitle.add(elYAxisTitleText); + parent.add(elYaxisTitle); + } + } + }, { + key: "yAxisTitleRotate", + value: function yAxisTitleRotate(realIndex, yAxisOpposite) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var yAxisLabelsCoord = { + width: 0, + height: 0 + }; + var yAxisTitleCoord = { + width: 0, + height: 0 + }; + var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-texts-g")); + + if (elYAxisLabelsWrap !== null) { + yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect(); + } + + var yAxisTitle = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-title text")); + + if (yAxisTitle !== null) { + yAxisTitleCoord = yAxisTitle.getBoundingClientRect(); + } + + if (yAxisTitle !== null) { + var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite); + yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0)); + } + + if (yAxisTitle !== null) { + var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle); + yAxisTitle.setAttribute('transform', "rotate(".concat(yAxisOpposite ? w.config.yaxis[realIndex].title.rotate * -1 : w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")")); + } + } + }, { + key: "xPaddingForYAxisTitle", + value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) { + var w = this.w; + var oppositeAxisCount = 0; + var x = 0; + var padd = 10; + + if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) { + return { + xPos: x, + padd: 0 + }; + } + + if (yAxisOpposite) { + x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2; + oppositeAxisCount += 1; + + if (oppositeAxisCount === 0) { + x = x - padd / 2; + } + } else { + x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2; + + if (w.globals.isBarHorizontal) { + padd = 25; + x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd; + } + } + + return { + xPos: x, + padd: padd + }; + } // sets the x position of the y-axis by counting the labels width, title width and any offset + + }, { + key: "setYAxisXPosition", + value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) { + var w = this.w; + var xLeft = 0; + var xRight = 0; + var leftOffsetX = 18; + var rightOffsetX = 1; + + if (w.config.yaxis.length > 1) { + this.multipleYs = true; + } + + w.config.yaxis.map(function (yaxe, index) { + var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0; + var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width; + + if (!yaxe.opposite) { + xLeft = w.globals.translateX - leftOffsetX; + + if (!shouldNotDrawAxis) { + leftOffsetX = leftOffsetX + axisWidth + 20; + } + + w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX; + } else { + if (w.globals.isBarHorizontal) { + xRight = w.globals.gridWidth + w.globals.translateX - 1; + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX; + } else { + xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX; + + if (!shouldNotDrawAxis) { + rightOffsetX = rightOffsetX + axisWidth + 20; + } + + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20; + } + } + }); + } + }, { + key: "setYAxisTextAlignments", + value: function setYAxisTextAlignments() { + var w = this.w; + var yaxis = w.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis"); + yaxis = Utils$1.listToArray(yaxis); + yaxis.forEach(function (y, index) { + var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment + + if (yaxe && !yaxe.floating && yaxe.labels.align !== undefined) { + var yAxisInner = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-texts-g")); + var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-label")); + yAxisTexts = Utils$1.listToArray(yAxisTexts); + var rect = yAxisInner.getBoundingClientRect(); + + if (yaxe.labels.align === 'left') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'start'); + }); + + if (!yaxe.opposite) { + yAxisInner.setAttribute('transform', "translate(-".concat(rect.width, ", 0)")); + } + } else if (yaxe.labels.align === 'center') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'middle'); + }); + yAxisInner.setAttribute('transform', "translate(".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), ", 0)")); + } else if (yaxe.labels.align === 'right') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'end'); + }); + + if (yaxe.opposite) { + yAxisInner.setAttribute('transform', "translate(".concat(rect.width, ", 0)")); + } + } + } + }); + } + }]); + + return YAxis; + }(); + + var Events = /*#__PURE__*/function () { + function Events(ctx) { + _classCallCheck(this, Events); + + this.ctx = ctx; + this.w = ctx.w; + this.documentEvent = Utils$1.bind(this.documentEvent, this); + } + + _createClass(Events, [{ + key: "addEventListener", + value: function addEventListener(name, handler) { + var w = this.w; + + if (w.globals.events.hasOwnProperty(name)) { + w.globals.events[name].push(handler); + } else { + w.globals.events[name] = [handler]; + } + } + }, { + key: "removeEventListener", + value: function removeEventListener(name, handler) { + var w = this.w; + + if (!w.globals.events.hasOwnProperty(name)) { + return; + } + + var index = w.globals.events[name].indexOf(handler); + + if (index !== -1) { + w.globals.events[name].splice(index, 1); + } + } + }, { + key: "fireEvent", + value: function fireEvent(name, args) { + var w = this.w; + + if (!w.globals.events.hasOwnProperty(name)) { + return; + } + + if (!args || !args.length) { + args = []; + } + + var evs = w.globals.events[name]; + var l = evs.length; + + for (var i = 0; i < l; i++) { + evs[i].apply(null, args); + } + } + }, { + key: "setupEventHandlers", + value: function setupEventHandlers() { + var _this = this; + + var w = this.w; + var me = this.ctx; + var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass); + this.ctx.eventList.forEach(function (event) { + clickableArea.addEventListener(event, function (e) { + var opts = Object.assign({}, w, { + seriesIndex: w.globals.capturedSeriesIndex, + dataPointIndex: w.globals.capturedDataPointIndex + }); + + if (e.type === 'mousemove' || e.type === 'touchmove') { + if (typeof w.config.chart.events.mouseMove === 'function') { + w.config.chart.events.mouseMove(e, me, opts); + } + } else if (e.type === 'mouseleave' || e.type === 'touchleave') { + if (typeof w.config.chart.events.mouseLeave === 'function') { + w.config.chart.events.mouseLeave(e, me, opts); + } + } else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') { + if (typeof w.config.chart.events.click === 'function') { + w.config.chart.events.click(e, me, opts); + } + + me.ctx.events.fireEvent('click', [e, me, opts]); + } + }, { + capture: false, + passive: true + }); + }); + this.ctx.eventList.forEach(function (event) { + w.globals.dom.baseEl.addEventListener(event, _this.documentEvent, { + passive: true + }); + }); + this.ctx.core.setupBrushHandler(); + } + }, { + key: "documentEvent", + value: function documentEvent(e) { + var w = this.w; + var target = e.target.className; + + if (e.type === 'click') { + var elMenu = w.globals.dom.baseEl.querySelector('.apexcharts-menu'); + + if (elMenu && elMenu.classList.contains('apexcharts-menu-open') && target !== 'apexcharts-menu-icon') { + elMenu.classList.remove('apexcharts-menu-open'); + } + } + + w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; + } + }]); + + return Events; + }(); + + var Localization = /*#__PURE__*/function () { + function Localization(ctx) { + _classCallCheck(this, Localization); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Localization, [{ + key: "setCurrentLocaleValues", + value: function setCurrentLocaleValues(localeName) { + var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable + // if yes - then extend those with local chart's locale + + if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) { + locales = this.w.config.chart.locales.concat(window.Apex.chart.locales); + } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.) + + + var selectedLocale = locales.filter(function (c) { + return c.name === localeName; + })[0]; + + if (selectedLocale) { + // create a complete locale object by extending defaults so you don't get undefined errors. + var ret = Utils$1.extend(en, selectedLocale); // store these locale options in global var for ease access + + this.w.globals.locale = ret.options; + } else { + throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options'); + } + } + }]); + + return Localization; + }(); + + var Axes = /*#__PURE__*/function () { + function Axes(ctx) { + _classCallCheck(this, Axes); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Axes, [{ + key: "drawAxis", + value: function drawAxis(type, elgrid) { + var _this = this; + + var gl = this.w.globals; + var cnf = this.w.config; + var xAxis = new XAxis(this.ctx, elgrid); + var yAxis = new YAxis(this.ctx, elgrid); + + if (gl.axisCharts && type !== 'radar') { + var elXaxis, elYaxis; + + if (gl.isBarHorizontal) { + elYaxis = yAxis.drawYaxisInversed(0); + elXaxis = xAxis.drawXaxisInversed(0); + gl.dom.elGraphical.add(elXaxis); + gl.dom.elGraphical.add(elYaxis); + } else { + elXaxis = xAxis.drawXaxis(); + gl.dom.elGraphical.add(elXaxis); + cnf.yaxis.map(function (yaxe, index) { + if (gl.ignoreYAxisIndexes.indexOf(index) === -1) { + elYaxis = yAxis.drawYaxis(index); + gl.dom.Paper.add(elYaxis); + + if (_this.w.config.grid.position === 'back') { + var inner = gl.dom.Paper.children()[1]; + inner.remove(); + gl.dom.Paper.add(inner); + } + } + }); + } + } + } + }]); + + return Axes; + }(); + + var Crosshairs = /*#__PURE__*/function () { + function Crosshairs(ctx) { + _classCallCheck(this, Crosshairs); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Crosshairs, [{ + key: "drawXCrosshairs", + value: function drawXCrosshairs() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var filters = new Filters(this.ctx); + var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient; + var crosshairShadow = w.config.xaxis.crosshairs.dropShadow; + var fillType = w.config.xaxis.crosshairs.fill.type; + var gradientFrom = crosshairGradient.colorFrom; + var gradientTo = crosshairGradient.colorTo; + var opacityFrom = crosshairGradient.opacityFrom; + var opacityTo = crosshairGradient.opacityTo; + var stops = crosshairGradient.stops; + var shadow = 'none'; + var dropShadow = crosshairShadow.enabled; + var shadowLeft = crosshairShadow.left; + var shadowTop = crosshairShadow.top; + var shadowBlur = crosshairShadow.blur; + var shadowColor = crosshairShadow.color; + var shadowOpacity = crosshairShadow.opacity; + var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color; + + if (w.config.xaxis.crosshairs.show) { + if (fillType === 'gradient') { + xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null); + } + + var xcrosshairs = graphics.drawRect(); + + if (w.config.xaxis.crosshairs.width === 1) { + // to prevent drawing 2 lines, convert rect to line + xcrosshairs = graphics.drawLine(); + } + + var gridHeight = w.globals.gridHeight; + + if (!Utils$1.isNumber(gridHeight) || gridHeight < 0) { + gridHeight = 0; + } + + var crosshairsWidth = w.config.xaxis.crosshairs.width; + + if (!Utils$1.isNumber(crosshairsWidth) || crosshairsWidth < 0) { + crosshairsWidth = 0; + } + + xcrosshairs.attr({ + class: 'apexcharts-xcrosshairs', + x: 0, + y: 0, + y2: gridHeight, + width: crosshairsWidth, + height: gridHeight, + fill: xcrosshairsFill, + filter: shadow, + 'fill-opacity': w.config.xaxis.crosshairs.opacity, + stroke: w.config.xaxis.crosshairs.stroke.color, + 'stroke-width': w.config.xaxis.crosshairs.stroke.width, + 'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray + }); + + if (dropShadow) { + xcrosshairs = filters.dropShadow(xcrosshairs, { + left: shadowLeft, + top: shadowTop, + blur: shadowBlur, + color: shadowColor, + opacity: shadowOpacity + }); + } + + w.globals.dom.elGraphical.add(xcrosshairs); + } + } + }, { + key: "drawYCrosshairs", + value: function drawYCrosshairs() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var crosshair = w.config.yaxis[0].crosshairs; + var offX = w.globals.barPadForNumericAxis; + + if (w.config.yaxis[0].crosshairs.show) { + var ycrosshairs = graphics.drawLine(-offX, 0, w.globals.gridWidth + offX, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width); + ycrosshairs.attr({ + class: 'apexcharts-ycrosshairs' + }); + w.globals.dom.elGraphical.add(ycrosshairs); + } // draw an invisible crosshair to help in positioning the yaxis tooltip + + + var ycrosshairsHidden = graphics.drawLine(-offX, 0, w.globals.gridWidth + offX, 0, crosshair.stroke.color, 0, 0); + ycrosshairsHidden.attr({ + class: 'apexcharts-ycrosshairs-hidden' + }); + w.globals.dom.elGraphical.add(ycrosshairsHidden); + } + }]); + + return Crosshairs; + }(); + + /** + * ApexCharts Responsive Class to override options for different screen sizes. + * + * @module Responsive + **/ + + var Responsive = /*#__PURE__*/function () { + function Responsive(ctx) { + _classCallCheck(this, Responsive); + + this.ctx = ctx; + this.w = ctx.w; + } // the opts parameter if not null has to be set overriding everything + // as the opts is set by user externally + + + _createClass(Responsive, [{ + key: "checkResponsiveConfig", + value: function checkResponsiveConfig(opts) { + var _this = this; + + var w = this.w; + var cnf = w.config; // check if responsive config exists + + if (cnf.responsive.length === 0) return; + var res = cnf.responsive.slice(); + res.sort(function (a, b) { + return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0; + }).reverse(); + var config = new Config({}); + + var iterateResponsiveOptions = function iterateResponsiveOptions() { + var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var largestBreakpoint = res[0].breakpoint; + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + if (width > largestBreakpoint) { + var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig, w); + newOptions = Utils$1.extend(options, newOptions); + newOptions = Utils$1.extend(w.config, newOptions); + + _this.overrideResponsiveOptions(newOptions); + } else { + for (var i = 0; i < res.length; i++) { + if (width < res[i].breakpoint) { + newOptions = CoreUtils.extendArrayProps(config, res[i].options, w); + newOptions = Utils$1.extend(w.config, newOptions); + + _this.overrideResponsiveOptions(newOptions); + } + } + } + }; + + if (opts) { + var options = CoreUtils.extendArrayProps(config, opts, w); + options = Utils$1.extend(w.config, options); + options = Utils$1.extend(options, opts); + iterateResponsiveOptions(options); + } else { + iterateResponsiveOptions({}); + } + } + }, { + key: "overrideResponsiveOptions", + value: function overrideResponsiveOptions(newOptions) { + var newConfig = new Config(newOptions).init({ + responsiveOverride: true + }); + this.w.config = newConfig; + } + }]); + + return Responsive; + }(); + + /** + * ApexCharts Theme Class for setting the colors and palettes. + * + * @module Theme + **/ + + var Theme = /*#__PURE__*/function () { + function Theme(ctx) { + _classCallCheck(this, Theme); + + this.ctx = ctx; + this.colors = []; + this.w = ctx.w; + var w = this.w; + this.isColorFn = false; + this.isHeatmapDistributed = w.config.chart.type === 'treemap' && w.config.plotOptions.treemap.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.distributed; + this.isBarDistributed = w.config.plotOptions.bar.distributed && (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar'); + } + + _createClass(Theme, [{ + key: "init", + value: function init() { + this.setDefaultColors(); + } + }, { + key: "setDefaultColors", + value: function setDefaultColors() { + var _this = this; + + var w = this.w; + var utils = new Utils$1(); + w.globals.dom.elWrap.classList.add("apexcharts-theme-".concat(w.config.theme.mode)); + + if (w.config.colors === undefined) { + w.globals.colors = this.predefined(); + } else { + w.globals.colors = w.config.colors; // if user provided a function in colors, we need to eval here + + if (Array.isArray(w.config.colors) && w.config.colors.length > 0 && typeof w.config.colors[0] === 'function') { + w.globals.colors = w.config.series.map(function (s, i) { + var c = w.config.colors[i]; + if (!c) c = w.config.colors[0]; + + if (typeof c === 'function') { + _this.isColorFn = true; + return c({ + value: w.globals.axisCharts ? w.globals.series[i][0] ? w.globals.series[i][0] : 0 : w.globals.series[i], + seriesIndex: i, + dataPointIndex: i, + w: w + }); + } + + return c; + }); + } + } // user defined colors in series array + + + w.globals.seriesColors.map(function (c, i) { + if (c) { + w.globals.colors[i] = c; + } + }); + + if (w.config.theme.monochrome.enabled) { + var monoArr = []; + var glsCnt = w.globals.series.length; + + if (this.isBarDistributed || this.isHeatmapDistributed) { + glsCnt = w.globals.series[0].length * w.globals.series.length; + } + + var mainColor = w.config.theme.monochrome.color; + var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity); + var shade = w.config.theme.monochrome.shadeTo; + var percent = 0; + + for (var gsl = 0; gsl < glsCnt; gsl++) { + var newColor = void 0; + + if (shade === 'dark') { + newColor = utils.shadeColor(percent * -1, mainColor); + percent = percent + part; + } else { + newColor = utils.shadeColor(percent, mainColor); + percent = percent + part; + } + + monoArr.push(newColor); + } + + w.globals.colors = monoArr.slice(); + } + + var defaultColors = w.globals.colors.slice(); // if user specified fewer colors than no. of series, push the same colors again + + this.pushExtraColors(w.globals.colors); + var colorTypes = ['fill', 'stroke']; + colorTypes.forEach(function (c) { + if (w.config[c].colors === undefined) { + w.globals[c].colors = _this.isColorFn ? w.config.colors : defaultColors; + } else { + w.globals[c].colors = w.config[c].colors.slice(); + } + + _this.pushExtraColors(w.globals[c].colors); + }); + + if (w.config.dataLabels.style.colors === undefined) { + w.globals.dataLabels.style.colors = defaultColors; + } else { + w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors.slice(); + } + + this.pushExtraColors(w.globals.dataLabels.style.colors, 50); + + if (w.config.plotOptions.radar.polygons.fill.colors === undefined) { + w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#424242' : 'none']; + } else { + w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors.slice(); + } + + this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors + + if (w.config.markers.colors === undefined) { + w.globals.markers.colors = defaultColors; + } else { + w.globals.markers.colors = w.config.markers.colors.slice(); + } + + this.pushExtraColors(w.globals.markers.colors); + } // When the number of colors provided is less than the number of series, this method + // will push same colors to the list + // params: + // distributed is only valid for distributed column/bar charts + + }, { + key: "pushExtraColors", + value: function pushExtraColors(colorSeries, length) { + var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var w = this.w; + var len = length || w.globals.series.length; + + if (distributed === null) { + distributed = this.isBarDistributed || this.isHeatmapDistributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse; + } + + if (distributed && w.globals.series.length) { + len = w.globals.series[w.globals.maxValsInArrayIndex].length * w.globals.series.length; + } + + if (colorSeries.length < len) { + var diff = len - colorSeries.length; + + for (var i = 0; i < diff; i++) { + colorSeries.push(colorSeries[i]); + } + } + } + }, { + key: "updateThemeOptions", + value: function updateThemeOptions(options) { + options.chart = options.chart || {}; + options.tooltip = options.tooltip || {}; + var mode = options.theme.mode || 'light'; + var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1'; + var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f'; + options.tooltip.theme = mode; + options.chart.foreColor = foreColor; + options.theme.palette = palette; + return options; + } + }, { + key: "predefined", + value: function predefined() { + var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF + + switch (palette) { + case 'palette1': + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0']; + break; + + case 'palette2': + this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800']; + break; + + case 'palette3': + this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B']; + break; + + case 'palette4': + this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A']; + break; + + case 'palette5': + this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7']; + break; + + case 'palette6': + this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D']; + break; + + case 'palette7': + this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044']; + break; + + case 'palette8': + this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD']; + break; + + case 'palette9': + this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF']; + break; + + case 'palette10': + this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2']; + break; + + default: + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0']; + break; + } + + return this.colors; + } + }]); + + return Theme; + }(); + + var TitleSubtitle = /*#__PURE__*/function () { + function TitleSubtitle(ctx) { + _classCallCheck(this, TitleSubtitle); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(TitleSubtitle, [{ + key: "draw", + value: function draw() { + this.drawTitleSubtitle('title'); + this.drawTitleSubtitle('subtitle'); + } + }, { + key: "drawTitleSubtitle", + value: function drawTitleSubtitle(type) { + var w = this.w; + var tsConfig = type === 'title' ? w.config.title : w.config.subtitle; + var x = w.globals.svgWidth / 2; + var y = tsConfig.offsetY; + var textAnchor = 'middle'; + + if (tsConfig.align === 'left') { + x = 10; + textAnchor = 'start'; + } else if (tsConfig.align === 'right') { + x = w.globals.svgWidth - 10; + textAnchor = 'end'; + } + + x = x + tsConfig.offsetX; + y = y + parseInt(tsConfig.style.fontSize, 10) + tsConfig.margin / 2; + + if (tsConfig.text !== undefined) { + var graphics = new Graphics(this.ctx); + var titleText = graphics.drawText({ + x: x, + y: y, + text: tsConfig.text, + textAnchor: textAnchor, + fontSize: tsConfig.style.fontSize, + fontFamily: tsConfig.style.fontFamily, + fontWeight: tsConfig.style.fontWeight, + foreColor: tsConfig.style.color, + opacity: 1 + }); + titleText.node.setAttribute('class', "apexcharts-".concat(type, "-text")); + w.globals.dom.Paper.add(titleText); + } + } + }]); + + return TitleSubtitle; + }(); + + var Helpers$3 = /*#__PURE__*/function () { + function Helpers(dCtx) { + _classCallCheck(this, Helpers); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get Chart Title/Subtitle Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(Helpers, [{ + key: "getTitleSubtitleCoords", + value: function getTitleSubtitleCoords(type) { + var w = this.w; + var width = 0; + var height = 0; + var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating; + var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-text")); + + if (el !== null && !floating) { + var coord = el.getBoundingClientRect(); + width = coord.width; + height = w.globals.axisCharts ? coord.height + 5 : coord.height; + } + + return { + width: width, + height: height + }; + } + }, { + key: "getLegendsRect", + value: function getLegendsRect() { + var w = this.w; + var elLegendWrap = w.globals.dom.elLegendWrap; + + if (!w.config.legend.height && (w.config.legend.position === 'top' || w.config.legend.position === 'bottom')) { + // avoid legend to take up all the space + elLegendWrap.style.maxHeight = w.globals.svgHeight / 2 + 'px'; + } + + var lgRect = Object.assign({}, Utils$1.getBoundingClientRect(elLegendWrap)); + + if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) { + this.dCtx.lgRect = { + x: lgRect.x, + y: lgRect.y, + height: lgRect.height, + width: lgRect.height === 0 ? 0 : lgRect.width + }; + } else { + this.dCtx.lgRect = { + x: 0, + y: 0, + height: 0, + width: 0 + }; + } // if legend takes up all of the chart space, we need to restrict it. + + + if (w.config.legend.position === 'left' || w.config.legend.position === 'right') { + if (this.dCtx.lgRect.width * 1.5 > w.globals.svgWidth) { + this.dCtx.lgRect.width = w.globals.svgWidth / 1.5; + } + } + + return this.dCtx.lgRect; + } + }, { + key: "getLargestStringFromMultiArr", + value: function getLargestStringFromMultiArr(val, arr) { + var w = this.w; + var valArr = val; + + if (w.globals.isMultiLineX) { + // if the xaxis labels has multiline texts (array) + var maxArrs = arr.map(function (xl, idx) { + return Array.isArray(xl) ? xl.length : 1; + }); + var maxArrLen = Math.max.apply(Math, _toConsumableArray(maxArrs)); + var maxArrIndex = maxArrs.indexOf(maxArrLen); + valArr = arr[maxArrIndex]; + } + + return valArr; + } + }]); + + return Helpers; + }(); + + var DimXAxis = /*#__PURE__*/function () { + function DimXAxis(dCtx) { + _classCallCheck(this, DimXAxis); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get X Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(DimXAxis, [{ + key: "getxAxisLabelsCoords", + value: function getxAxisLabelsCoords() { + var w = this.w; + var xaxisLabels = w.globals.labels.slice(); + + if (w.config.xaxis.convertedCatToNumeric && xaxisLabels.length === 0) { + xaxisLabels = w.globals.categoryLabels; + } + + var rect; + + if (w.globals.timescaleLabels.length > 0) { + var coords = this.getxAxisTimeScaleLabelsCoords(); + rect = { + width: coords.width, + height: coords.height + }; + w.globals.rotateXLabels = false; + } else { + this.dCtx.lgWidthForSideLegends = (w.config.legend.position === 'left' || w.config.legend.position === 'right') && !w.config.legend.floating ? this.dCtx.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter + + var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + + var val = Utils$1.getLargestStringFromArr(xaxisLabels); + var valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, xaxisLabels); // the labels gets changed for bar charts + + if (w.globals.isBarHorizontal) { + val = w.globals.yAxisScale[0].result.reduce(function (a, b) { + return a.length > b.length ? a : b; + }, 0); + valArr = val; + } + + var xFormat = new Formatters(this.dCtx.ctx); + var timestamp = val; + val = xFormat.xLabelFormat(xlbFormatter, val, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w: w + }); + valArr = xFormat.xLabelFormat(xlbFormatter, valArr, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w: w + }); + + if (w.config.xaxis.convertedCatToNumeric && typeof val === 'undefined' || String(val).trim() === '') { + val = '1'; + valArr = val; + } + + var graphics = new Graphics(this.dCtx.ctx); + var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize); + var xArrLabelrect = xLabelrect; + + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects(valArr, w.config.xaxis.labels.style.fontSize); + } + + rect = { + width: xLabelrect.width >= xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width, + height: xLabelrect.height >= xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height + }; + + if (rect.width * xaxisLabels.length > w.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && w.config.xaxis.labels.rotate !== 0 || w.config.xaxis.labels.rotateAlways) { + if (!w.globals.isBarHorizontal) { + w.globals.rotateXLabels = true; + + var getRotatedTextRects = function getRotatedTextRects(text) { + return graphics.getTextRects(text, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false); + }; + + xLabelrect = getRotatedTextRects(val); + + if (val !== valArr) { + xArrLabelrect = getRotatedTextRects(valArr); + } + + rect.height = (xLabelrect.height > xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height) / 1.5; + rect.width = xLabelrect.width > xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width; + } + } else { + w.globals.rotateXLabels = false; + } + } + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + }; + } + + return { + width: rect.width, + height: rect.height + }; + } + /** + * Get X Axis Label Group height + * @memberof Dimensions + * @return {{width, height}} + */ + + }, { + key: "getxAxisGroupLabelsCoords", + value: function getxAxisGroupLabelsCoords() { + var _w$config$xaxis$group; + + var w = this.w; + + if (!w.globals.hasXaxisGroups) { + return { + width: 0, + height: 0 + }; + } + + var fontSize = ((_w$config$xaxis$group = w.config.xaxis.group.style) === null || _w$config$xaxis$group === void 0 ? void 0 : _w$config$xaxis$group.fontSize) || w.config.xaxis.labels.style.fontSize; + var xaxisLabels = w.globals.groups.map(function (g) { + return g.title; + }); + var rect; // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + + var val = Utils$1.getLargestStringFromArr(xaxisLabels); + var valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, xaxisLabels); + var graphics = new Graphics(this.dCtx.ctx); + var xLabelrect = graphics.getTextRects(val, fontSize); + var xArrLabelrect = xLabelrect; + + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects(valArr, fontSize); + } + + rect = { + width: xLabelrect.width >= xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width, + height: xLabelrect.height >= xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height + }; + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + }; + } + + return { + width: rect.width, + height: rect.height + }; + } + /** + * Get X Axis Title Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + }, { + key: "getxAxisTitleCoords", + value: function getxAxisTitleCoords() { + var w = this.w; + var width = 0; + var height = 0; + + if (w.config.xaxis.title.text !== undefined) { + var graphics = new Graphics(this.dCtx.ctx); + var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize); + width = rect.width; + height = rect.height; + } + + return { + width: width, + height: height + }; + } + }, { + key: "getxAxisTimeScaleLabelsCoords", + value: function getxAxisTimeScaleLabelsCoords() { + var w = this.w; + var rect; + this.dCtx.timescaleLabels = w.globals.timescaleLabels.slice(); + var labels = this.dCtx.timescaleLabels.map(function (label) { + return label.value; + }); // get the longest string from the labels array and also apply label formatter to it + + var val = labels.reduce(function (a, b) { + // if undefined, maybe user didn't pass the datetime(x) values + if (typeof a === 'undefined') { + console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date'); + return 0; + } else { + return a.length > b.length ? a : b; + } + }, 0); + var graphics = new Graphics(this.dCtx.ctx); + rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize); + var totalWidthRotated = rect.width * 1.05 * labels.length; + + if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) { + w.globals.overlappingXLabels = true; + } + + return rect; + } // In certain cases, the last labels gets cropped in xaxis. + // Hence, we add some additional padding based on the label length to avoid the last label being cropped or we don't draw it at all + + }, { + key: "additionalPaddingXLabels", + value: function additionalPaddingXLabels(xaxisLabelCoords) { + var _this = this; + + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var xtype = cnf.xaxis.type; + var lbWidth = xaxisLabelCoords.width; + gl.skipLastTimelinelabel = false; + gl.skipFirstTimelinelabel = false; + var isBarOpposite = w.config.yaxis[0].opposite && w.globals.isBarHorizontal; + + var isCollapsed = function isCollapsed(i) { + return gl.collapsedSeriesIndices.indexOf(i) !== -1; + }; + + var rightPad = function rightPad(yaxe) { + if (_this.dCtx.timescaleLabels && _this.dCtx.timescaleLabels.length) { + // for timeline labels, we take the last label and check if it exceeds gridWidth + var firstimescaleLabel = _this.dCtx.timescaleLabels[0]; + var lastTimescaleLabel = _this.dCtx.timescaleLabels[_this.dCtx.timescaleLabels.length - 1]; + var lastLabelPosition = lastTimescaleLabel.position + lbWidth / 1.75 - _this.dCtx.yAxisWidthRight; + var firstLabelPosition = firstimescaleLabel.position - lbWidth / 1.75 + _this.dCtx.yAxisWidthLeft; + var lgRightRectWidth = w.config.legend.position === 'right' && _this.dCtx.lgRect.width > 0 ? _this.dCtx.lgRect.width : 0; + + if (lastLabelPosition > gl.svgWidth - gl.translateX - lgRightRectWidth) { + gl.skipLastTimelinelabel = true; + } + + if (firstLabelPosition < -((!yaxe.show || yaxe.floating) && (cnf.chart.type === 'bar' || cnf.chart.type === 'candlestick' || cnf.chart.type === 'rangeBar' || cnf.chart.type === 'boxPlot') ? lbWidth / 1.75 : 10)) { + gl.skipFirstTimelinelabel = true; + } + } else if (xtype === 'datetime') { + // If user has enabled DateTime, but uses own's formatter + if (_this.dCtx.gridPad.right < lbWidth && !gl.rotateXLabels) { + gl.skipLastTimelinelabel = true; + } + } else if (xtype !== 'datetime') { + if (_this.dCtx.gridPad.right < lbWidth / 2 - _this.dCtx.yAxisWidthRight && !gl.rotateXLabels && !w.config.xaxis.labels.trim && (w.config.xaxis.tickPlacement !== 'between' || w.globals.isBarHorizontal)) { + _this.dCtx.xPadRight = lbWidth / 2 + 1; + } + } + }; + + var padYAxe = function padYAxe(yaxe, i) { + if (cnf.yaxis.length > 1 && isCollapsed(i)) return; + rightPad(yaxe); + }; + + cnf.yaxis.forEach(function (yaxe, i) { + if (isBarOpposite) { + if (_this.dCtx.gridPad.left < lbWidth) { + _this.dCtx.xPadLeft = lbWidth / 2 + 1; + } + + _this.dCtx.xPadRight = lbWidth / 2 + 1; + } else { + padYAxe(yaxe, i); + } + }); + } + }]); + + return DimXAxis; + }(); + + var DimYAxis = /*#__PURE__*/function () { + function DimYAxis(dCtx) { + _classCallCheck(this, DimYAxis); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(DimYAxis, [{ + key: "getyAxisLabelsCoords", + value: function getyAxisLabelsCoords() { + var _this = this; + + var w = this.w; + var width = 0; + var height = 0; + var ret = []; + var labelPad = 10; + var axesUtils = new AxesUtils(this.dCtx.ctx); + w.config.yaxis.map(function (yaxe, index) { + var yS = w.globals.yAxisScale[index]; + var yAxisMinWidth = 0; + if (!axesUtils.isYAxisHidden(index) && yaxe.labels.show && yaxe.labels.minWidth !== undefined) yAxisMinWidth = yaxe.labels.minWidth; + + if (!axesUtils.isYAxisHidden(index) && yaxe.labels.show && yS.result.length) { + var lbFormatter = w.globals.yLabelFormatters[index]; + var minV = yS.niceMin === Number.MIN_VALUE ? 0 : yS.niceMin; + var longestStr = String(minV).length > String(yS.niceMax).length ? minV : yS.niceMax; // the second parameter -1 is the index of tick which user can use in the formatter + + var val = lbFormatter(longestStr, { + seriesIndex: index, + dataPointIndex: -1, + w: w + }); + var valArr = val; // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is. + + if (typeof val === 'undefined' || val.length === 0) { + val = longestStr; + } + + if (w.globals.isBarHorizontal) { + labelPad = 0; + var barYaxisLabels = w.globals.labels.slice(); // get the longest string from the labels array and also apply label formatter to it + + val = Utils$1.getLargestStringFromArr(barYaxisLabels); + val = lbFormatter(val, { + seriesIndex: index, + dataPointIndex: -1, + w: w + }); + valArr = _this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, barYaxisLabels); + } + + var graphics = new Graphics(_this.dCtx.ctx); + var rotateStr = 'rotate('.concat(yaxe.labels.rotate, ' 0 0)'); + var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize, yaxe.labels.style.fontFamily, rotateStr, false); + var arrLabelrect = rect; + + if (val !== valArr) { + arrLabelrect = graphics.getTextRects(valArr, yaxe.labels.style.fontSize, yaxe.labels.style.fontFamily, rotateStr, false); + } + + ret.push({ + width: (yAxisMinWidth > arrLabelrect.width || yAxisMinWidth > rect.width ? yAxisMinWidth : arrLabelrect.width > rect.width ? arrLabelrect.width : rect.width) + labelPad, + height: arrLabelrect.height > rect.height ? arrLabelrect.height : rect.height + }); + } else { + ret.push({ + width: width, + height: height + }); + } + }); + return ret; + } + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + }, { + key: "getyAxisTitleCoords", + value: function getyAxisTitleCoords() { + var _this2 = this; + + var w = this.w; + var ret = []; + w.config.yaxis.map(function (yaxe, index) { + if (yaxe.show && yaxe.title.text !== undefined) { + var graphics = new Graphics(_this2.dCtx.ctx); + var rotateStr = 'rotate('.concat(yaxe.title.rotate, ' 0 0)'); + var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, rotateStr, false); + ret.push({ + width: rect.width, + height: rect.height + }); + } else { + ret.push({ + width: 0, + height: 0 + }); + } + }); + return ret; + } + }, { + key: "getTotalYAxisWidth", + value: function getTotalYAxisWidth() { + var w = this.w; + var yAxisWidth = 0; + var yAxisWidthLeft = 0; + var yAxisWidthRight = 0; + var padding = w.globals.yAxisScale.length > 1 ? 10 : 0; + var axesUtils = new AxesUtils(this.dCtx.ctx); + + var isHiddenYAxis = function isHiddenYAxis(index) { + return w.globals.ignoreYAxisIndexes.indexOf(index) > -1; + }; + + var padForLabelTitle = function padForLabelTitle(coord, index) { + var floating = w.config.yaxis[index].floating; + var width = 0; + + if (coord.width > 0 && !floating) { + width = coord.width + padding; + + if (isHiddenYAxis(index)) { + width = width - coord.width - padding; + } + } else { + width = floating || axesUtils.isYAxisHidden(index) ? 0 : 5; + } + + w.config.yaxis[index].opposite ? yAxisWidthRight = yAxisWidthRight + width : yAxisWidthLeft = yAxisWidthLeft + width; + yAxisWidth = yAxisWidth + width; + }; + + w.globals.yLabelsCoords.map(function (yLabelCoord, index) { + padForLabelTitle(yLabelCoord, index); + }); + w.globals.yTitleCoords.map(function (yTitleCoord, index) { + padForLabelTitle(yTitleCoord, index); + }); + + if (w.globals.isBarHorizontal && !w.config.yaxis[0].floating) { + yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15; + } + + this.dCtx.yAxisWidthLeft = yAxisWidthLeft; + this.dCtx.yAxisWidthRight = yAxisWidthRight; + return yAxisWidth; + } + }]); + + return DimYAxis; + }(); + + var DimGrid = /*#__PURE__*/function () { + function DimGrid(dCtx) { + _classCallCheck(this, DimGrid); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + + _createClass(DimGrid, [{ + key: "gridPadForColumnsInNumericAxis", + value: function gridPadForColumnsInNumericAxis(gridWidth) { + var w = this.w; + + if (w.globals.noData || w.globals.allSeriesCollapsed) { + return 0; + } + + var hasBar = function hasBar(type) { + return type === 'bar' || type === 'rangeBar' || type === 'candlestick' || type === 'boxPlot'; + }; + + var type = w.config.chart.type; + var barWidth = 0; + var seriesLen = hasBar(type) ? w.config.series.length : 1; + + if (w.globals.comboBarCount > 0) { + seriesLen = w.globals.comboBarCount; + } + + w.globals.collapsedSeries.forEach(function (c) { + if (hasBar(c.type)) { + seriesLen = seriesLen - 1; + } + }); + + if (w.config.chart.stacked) { + seriesLen = 1; + } + + var barsPresent = hasBar(type) || w.globals.comboBarCount > 0; + + if (barsPresent && w.globals.isXNumeric && !w.globals.isBarHorizontal && seriesLen > 0) { + var xRatio = 0; + var xRange = Math.abs(w.globals.initialMaxX - w.globals.initialMinX); + + if (xRange <= 3) { + xRange = w.globals.dataPoints; + } + + xRatio = xRange / gridWidth; + var xDivision; // max barwidth should be equal to minXDiff to avoid overlap + + if (w.globals.minXDiff && w.globals.minXDiff / xRatio > 0) { + xDivision = w.globals.minXDiff / xRatio; + } + + if (xDivision > gridWidth / 2) { + xDivision = xDivision / 2; + } + + barWidth = xDivision / seriesLen * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100; + + if (barWidth < 1) { + barWidth = 1; + } + + barWidth = barWidth / (seriesLen > 1 ? 1 : 1.5) + 5; + w.globals.barPadForNumericAxis = barWidth; + } + + return barWidth; + } + }, { + key: "gridPadFortitleSubtitle", + value: function gridPadFortitleSubtitle() { + var _this = this; + + var w = this.w; + var gl = w.globals; + var gridShrinkOffset = this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 10; + var titleSubtitle = ['title', 'subtitle']; + titleSubtitle.forEach(function (t) { + if (w.config[t].text !== undefined) { + gridShrinkOffset += w.config[t].margin; + } else { + gridShrinkOffset += _this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 5; + } + }); + + if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && !w.globals.axisCharts) { + gridShrinkOffset += 10; + } + + var titleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('title'); + var subtitleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('subtitle'); + gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset; + gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset; + } + }, { + key: "setGridXPosForDualYAxis", + value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) { + var w = this.w; + var axesUtils = new AxesUtils(this.dCtx.ctx); + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !yaxe.floating && !axesUtils.isYAxisHidden(index)) { + if (yaxe.opposite) { + w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize, 10) / 1.2 - 12; + } // fixes apexcharts.js#1599 + + + if (w.globals.translateX < 2) { + w.globals.translateX = 2; + } + } + }); + } + }]); + + return DimGrid; + }(); + + /** + * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn. + * + * @module Dimensions + **/ + + var Dimensions = /*#__PURE__*/function () { + function Dimensions(ctx) { + _classCallCheck(this, Dimensions); + + this.ctx = ctx; + this.w = ctx.w; + this.lgRect = {}; + this.yAxisWidth = 0; + this.yAxisWidthLeft = 0; + this.yAxisWidthRight = 0; + this.xAxisHeight = 0; + this.isSparkline = this.w.config.chart.sparkline.enabled; + this.dimHelpers = new Helpers$3(this); + this.dimYAxis = new DimYAxis(this); + this.dimXAxis = new DimXAxis(this); + this.dimGrid = new DimGrid(this); + this.lgWidthForSideLegends = 0; + this.gridPad = this.w.config.grid.padding; + this.xPadRight = 0; + this.xPadLeft = 0; + } + /** + * @memberof Dimensions + * @param {object} w - chart context + **/ + + + _createClass(Dimensions, [{ + key: "plotCoords", + value: function plotCoords() { + var _this = this; + + var w = this.w; + var gl = w.globals; + this.lgRect = this.dimHelpers.getLegendsRect(); + + if (this.isSparkline && (w.config.markers.discrete.length > 0 || w.config.markers.size > 0)) { + Object.entries(this.gridPad).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + k = _ref2[0], + v = _ref2[1]; + + _this.gridPad[k] = Math.max(v, _this.w.globals.markers.largestSize / 1.5); + }); + } + + if (gl.axisCharts) { + // for line / area / scatter / column + this.setDimensionsForAxisCharts(); + } else { + // for pie / donuts / circle + this.setDimensionsForNonAxisCharts(); + } + + this.dimGrid.gridPadFortitleSubtitle(); // after calculating everything, apply padding set by user + + gl.gridHeight = gl.gridHeight - this.gridPad.top - this.gridPad.bottom; + gl.gridWidth = gl.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft; + var barWidth = this.dimGrid.gridPadForColumnsInNumericAxis(gl.gridWidth); + gl.gridWidth = gl.gridWidth - barWidth * 2; + gl.translateX = gl.translateX + this.gridPad.left + this.xPadLeft + (barWidth > 0 ? barWidth + 4 : 0); + gl.translateY = gl.translateY + this.gridPad.top; + } + }, { + key: "setDimensionsForAxisCharts", + value: function setDimensionsForAxisCharts() { + var _this2 = this; + + var w = this.w; + var gl = w.globals; + var yaxisLabelCoords = this.dimYAxis.getyAxisLabelsCoords(); + var yTitleCoords = this.dimYAxis.getyAxisTitleCoords(); + w.globals.yLabelsCoords = []; + w.globals.yTitleCoords = []; + w.config.yaxis.map(function (yaxe, index) { + // store the labels and titles coords in global vars + w.globals.yLabelsCoords.push({ + width: yaxisLabelCoords[index].width, + index: index + }); + w.globals.yTitleCoords.push({ + width: yTitleCoords[index].width, + index: index + }); + }); + this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth(); + var xaxisLabelCoords = this.dimXAxis.getxAxisLabelsCoords(); + var xaxisGroupLabelCoords = this.dimXAxis.getxAxisGroupLabelsCoords(); + var xtitleCoords = this.dimXAxis.getxAxisTitleCoords(); + this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords, xaxisGroupLabelCoords); + gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4; + gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0; + + if (w.globals.isBarHorizontal) { + gl.rotateXLabels = false; + gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize, 10) / 1.5); + } + + gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY; + gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX; + var yAxisWidth = this.yAxisWidth; + var xAxisHeight = this.xAxisHeight; + gl.xAxisLabelsHeight = this.xAxisHeight - xtitleCoords.height; + gl.xAxisGroupLabelsHeight = gl.xAxisLabelsHeight - xaxisLabelCoords.height; + gl.xAxisLabelsWidth = this.xAxisWidth; + gl.xAxisHeight = this.xAxisHeight; + var translateY = 10; + + if (w.config.chart.type === 'radar' || this.isSparkline) { + yAxisWidth = 0; + xAxisHeight = gl.goldenPadding; + } + + if (this.isSparkline) { + this.lgRect = { + height: 0, + width: 0 + }; + } + + if (this.isSparkline || w.config.chart.type === 'treemap') { + yAxisWidth = 0; + xAxisHeight = 0; + translateY = 0; + } + + if (!this.isSparkline) { + this.dimXAxis.additionalPaddingXLabels(xaxisLabelCoords); + } + + var legendTopBottom = function legendTopBottom() { + gl.translateX = yAxisWidth; + gl.gridHeight = gl.svgHeight - _this2.lgRect.height - xAxisHeight - (!_this2.isSparkline && w.config.chart.type !== 'treemap' ? w.globals.rotateXLabels ? 10 : 15 : 0); + gl.gridWidth = gl.svgWidth - yAxisWidth; + }; + + if (w.config.xaxis.position === 'top') translateY = gl.xAxisHeight - w.config.xaxis.axisTicks.height - 5; + + switch (w.config.legend.position) { + case 'bottom': + gl.translateY = translateY; + legendTopBottom(); + break; + + case 'top': + gl.translateY = this.lgRect.height + translateY; + legendTopBottom(); + break; + + case 'left': + gl.translateY = translateY; + gl.translateX = this.lgRect.width + yAxisWidth; + gl.gridHeight = gl.svgHeight - xAxisHeight - 12; + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth; + break; + + case 'right': + gl.translateY = translateY; + gl.translateX = yAxisWidth; + gl.gridHeight = gl.svgHeight - xAxisHeight - 12; + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth - 5; + break; + + default: + throw new Error('Legend position not supported'); + } + + this.dimGrid.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions + + var objyAxis = new YAxis(this.ctx); + objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords); + } + }, { + key: "setDimensionsForNonAxisCharts", + value: function setDimensionsForNonAxisCharts() { + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var xPad = 0; + + if (w.config.legend.show && !w.config.legend.floating) { + xPad = 20; + } + + var type = cnf.chart.type === 'pie' || cnf.chart.type === 'polarArea' || cnf.chart.type === 'donut' ? 'pie' : 'radialBar'; + var offY = cnf.plotOptions[type].offsetY; + var offX = cnf.plotOptions[type].offsetX; + + if (!cnf.legend.show || cnf.legend.floating) { + gl.gridHeight = gl.svgHeight - cnf.grid.padding.left + cnf.grid.padding.right; + gl.gridWidth = gl.gridHeight; + gl.translateY = offY; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + return; + } + + switch (cnf.legend.position) { + case 'bottom': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding; + gl.gridWidth = gl.svgWidth; + gl.translateY = offY - 10; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + break; + + case 'top': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding; + gl.gridWidth = gl.svgWidth; + gl.translateY = this.lgRect.height + offY + 10; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + break; + + case 'left': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad; + gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth; + gl.translateY = offY; + gl.translateX = offX + this.lgRect.width + xPad; + break; + + case 'right': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad - 5; + gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth; + gl.translateY = offY; + gl.translateX = offX + 10; + break; + + default: + throw new Error('Legend position not supported'); + } + } + }, { + key: "conditionalChecksForAxisCoords", + value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords, xaxisGroupLabelCoords) { + var w = this.w; + var xAxisNum = w.globals.hasXaxisGroups ? 2 : 1; + var baseXAxisHeight = xaxisGroupLabelCoords.height + xaxisLabelCoords.height + xtitleCoords.height; + var xAxisHeightMultiplicate = w.globals.isMultiLineX ? 1.2 : w.globals.LINE_HEIGHT_RATIO; + var rotatedXAxisOffset = w.globals.rotateXLabels ? 22 : 10; + var rotatedXAxisLegendOffset = w.globals.rotateXLabels && w.config.legend.position === 'bottom'; + var additionalOffset = rotatedXAxisLegendOffset ? 10 : 0; + this.xAxisHeight = baseXAxisHeight * xAxisHeightMultiplicate + xAxisNum * rotatedXAxisOffset + additionalOffset; + this.xAxisWidth = xaxisLabelCoords.width; + + if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) { + this.xAxisHeight = w.config.xaxis.labels.maxHeight; + } + + if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) { + this.xAxisHeight = w.config.xaxis.labels.minHeight; + } + + if (w.config.xaxis.floating) { + this.xAxisHeight = 0; + } + + var minYAxisWidth = 0; + var maxYAxisWidth = 0; + w.config.yaxis.forEach(function (y) { + minYAxisWidth += y.labels.minWidth; + maxYAxisWidth += y.labels.maxWidth; + }); + + if (this.yAxisWidth < minYAxisWidth) { + this.yAxisWidth = minYAxisWidth; + } + + if (this.yAxisWidth > maxYAxisWidth) { + this.yAxisWidth = maxYAxisWidth; + } + } + }]); + + return Dimensions; + }(); + + var Helpers$2 = /*#__PURE__*/function () { + function Helpers(lgCtx) { + _classCallCheck(this, Helpers); + + this.w = lgCtx.w; + this.lgCtx = lgCtx; + } + + _createClass(Helpers, [{ + key: "getLegendStyles", + value: function getLegendStyles() { + var stylesheet = document.createElement('style'); + stylesheet.setAttribute('type', 'text/css'); + var text = "\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }"; + var rules = document.createTextNode(text); + stylesheet.appendChild(rules); + return stylesheet; + } + }, { + key: "getLegendBBox", + value: function getLegendBBox() { + var w = this.w; + var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend'); + var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect(); + var currLegendsWrapWidth = currLegendsWrapRect.width; + var currLegendsWrapHeight = currLegendsWrapRect.height; + return { + clwh: currLegendsWrapHeight, + clww: currLegendsWrapWidth + }; + } + }, { + key: "appendToForeignObject", + value: function appendToForeignObject() { + var gl = this.w.globals; + gl.dom.elLegendForeign.appendChild(this.getLegendStyles()); + } + }, { + key: "toggleDataSeries", + value: function toggleDataSeries(seriesCnt, isHidden) { + var _this = this; + + var w = this.w; + + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + w.globals.resized = true; // we don't want initial animations again + + var seriesEl = null; + var realIndex = null; // yes, make it null. 1 series will rise at a time + + w.globals.risingSeries = []; + + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']")); + realIndex = parseInt(seriesEl.getAttribute('data:realIndex'), 10); + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']")); + realIndex = parseInt(seriesEl.getAttribute('rel'), 10) - 1; + } + + if (isHidden) { + var seriesToMakeVisible = [{ + cs: w.globals.collapsedSeries, + csi: w.globals.collapsedSeriesIndices + }, { + cs: w.globals.ancillaryCollapsedSeries, + csi: w.globals.ancillaryCollapsedSeriesIndices + }]; + seriesToMakeVisible.forEach(function (r) { + _this.riseCollapsedSeries(r.cs, r.csi, realIndex); + }); + } else { + this.hideSeries({ + seriesEl: seriesEl, + realIndex: realIndex + }); + } + } else { + // for non-axis charts i.e pie / donuts + var _seriesEl = w.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(seriesCnt + 1, "'] path")); + + var type = w.config.chart.type; + + if (type === 'pie' || type === 'polarArea' || type === 'donut') { + var dataLabels = w.config.plotOptions.pie.donut.labels; + var graphics = new Graphics(this.lgCtx.ctx); + graphics.pathMouseDown(_seriesEl.members[0], null); + this.lgCtx.ctx.pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels); + } + + _seriesEl.fire('click'); + } + } + }, { + key: "hideSeries", + value: function hideSeries(_ref) { + var seriesEl = _ref.seriesEl, + realIndex = _ref.realIndex; + var w = this.w; + var series = Utils$1.clone(w.config.series); + + if (w.globals.axisCharts) { + var shouldNotHideYAxis = false; + + if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) { + shouldNotHideYAxis = true; + + if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) { + w.globals.ancillaryCollapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }); + w.globals.ancillaryCollapsedSeriesIndices.push(realIndex); + } + } + + if (!shouldNotHideYAxis) { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }); + w.globals.collapsedSeriesIndices.push(realIndex); + var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex); + w.globals.risingSeries.splice(removeIndexOfRising, 1); + } + } else { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex] + }); + w.globals.collapsedSeriesIndices.push(realIndex); + } + + var seriesChildren = seriesEl.childNodes; + + for (var sc = 0; sc < seriesChildren.length; sc++) { + if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) { + if (seriesChildren[sc].classList.contains('apexcharts-hide')) { + seriesChildren[sc].classList.remove('apexcharts-hide'); + } else { + seriesChildren[sc].classList.add('apexcharts-hide'); + } + } + } + + w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.config.series.length; + series = this._getSeriesBasedOnCollapsedState(series); + + this.lgCtx.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + }, { + key: "riseCollapsedSeries", + value: function riseCollapsedSeries(collapsedSeries, seriesIndices, realIndex) { + var w = this.w; + var series = Utils$1.clone(w.config.series); + + if (collapsedSeries.length > 0) { + for (var c = 0; c < collapsedSeries.length; c++) { + if (collapsedSeries[c].index === realIndex) { + if (w.globals.axisCharts) { + series[realIndex].data = collapsedSeries[c].data.slice(); + collapsedSeries.splice(c, 1); + seriesIndices.splice(c, 1); + w.globals.risingSeries.push(realIndex); + } else { + series[realIndex] = collapsedSeries[c].data; + collapsedSeries.splice(c, 1); + seriesIndices.splice(c, 1); + w.globals.risingSeries.push(realIndex); + } + } + } + + series = this._getSeriesBasedOnCollapsedState(series); + + this.lgCtx.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + } + }, { + key: "_getSeriesBasedOnCollapsedState", + value: function _getSeriesBasedOnCollapsedState(series) { + var w = this.w; + + if (w.globals.axisCharts) { + series.forEach(function (s, sI) { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI].data = []; + } + }); + } else { + series.forEach(function (s, sI) { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI] = 0; + } + }); + } + + return series; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Legend Class to draw legend. + * + * @module Legend + **/ + + var Legend = /*#__PURE__*/function () { + function Legend(ctx) { + _classCallCheck(this, Legend); + + this.ctx = ctx; + this.w = ctx.w; + this.onLegendClick = this.onLegendClick.bind(this); + this.onLegendHovered = this.onLegendHovered.bind(this); + this.isBarsDistributed = this.w.config.chart.type === 'bar' && this.w.config.plotOptions.bar.distributed && this.w.config.series.length === 1; + this.legendHelpers = new Helpers$2(this); + } + + _createClass(Legend, [{ + key: "init", + value: function init() { + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || this.isBarsDistributed || gl.series.length > 1; + + if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) { + while (gl.dom.elLegendWrap.firstChild) { + gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild); + } + + this.drawLegends(); + + if (!Utils$1.isIE11()) { + this.legendHelpers.appendToForeignObject(); + } else { + // IE11 doesn't supports foreignObject, hence append it to + document.getElementsByTagName('head')[0].appendChild(this.legendHelpers.getLegendStyles()); + } + + if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') { + this.legendAlignHorizontal(); + } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') { + this.legendAlignVertical(); + } + } + } + }, { + key: "drawLegends", + value: function drawLegends() { + var me = this; + var w = this.w; + var fontFamily = w.config.legend.fontFamily; + var legendNames = w.globals.seriesNames; + var fillcolor = w.globals.colors.slice(); + + if (w.config.chart.type === 'heatmap') { + var ranges = w.config.plotOptions.heatmap.colorScale.ranges; + legendNames = ranges.map(function (colorScale) { + return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to; + }); + fillcolor = ranges.map(function (color) { + return color.color; + }); + } else if (this.isBarsDistributed) { + legendNames = w.globals.labels.slice(); + } + + if (w.config.legend.customLegendItems.length) { + legendNames = w.config.legend.customLegendItems; + } + + var legendFormatter = w.globals.legendFormatter; + var isLegendInversed = w.config.legend.inverseOrder; + + for (var i = isLegendInversed ? legendNames.length - 1 : 0; isLegendInversed ? i >= 0 : i <= legendNames.length - 1; isLegendInversed ? i-- : i++) { + var text = legendFormatter(legendNames[i], { + seriesIndex: i, + w: w + }); + var collapsedSeries = false; + var ancillaryCollapsedSeries = false; + + if (w.globals.collapsedSeries.length > 0) { + for (var c = 0; c < w.globals.collapsedSeries.length; c++) { + if (w.globals.collapsedSeries[c].index === i) { + collapsedSeries = true; + } + } + } + + if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) { + for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) { + if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) { + ancillaryCollapsedSeries = true; + } + } + } + + var elMarker = document.createElement('span'); + elMarker.classList.add('apexcharts-legend-marker'); + var mOffsetX = w.config.legend.markers.offsetX; + var mOffsetY = w.config.legend.markers.offsetY; + var mHeight = w.config.legend.markers.height; + var mWidth = w.config.legend.markers.width; + var mBorderWidth = w.config.legend.markers.strokeWidth; + var mBorderColor = w.config.legend.markers.strokeColor; + var mBorderRadius = w.config.legend.markers.radius; + var mStyle = elMarker.style; + mStyle.background = fillcolor[i]; + mStyle.color = fillcolor[i]; + mStyle.setProperty('background', fillcolor[i], 'important'); // override fill color with custom legend.markers.fillColors + + if (w.config.legend.markers.fillColors && w.config.legend.markers.fillColors[i]) { + mStyle.background = w.config.legend.markers.fillColors[i]; + } // override with data color + + + if (w.globals.seriesColors[i] !== undefined) { + mStyle.background = w.globals.seriesColors[i]; + mStyle.color = w.globals.seriesColors[i]; + } + + mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px'; + mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px'; + mStyle.left = (Array.isArray(mOffsetX) ? parseFloat(mOffsetX[i]) : parseFloat(mOffsetX)) + 'px'; + mStyle.top = (Array.isArray(mOffsetY) ? parseFloat(mOffsetY[i]) : parseFloat(mOffsetY)) + 'px'; + mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth; + mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor; + mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px'; + + if (w.config.legend.markers.customHTML) { + if (Array.isArray(w.config.legend.markers.customHTML)) { + if (w.config.legend.markers.customHTML[i]) { + elMarker.innerHTML = w.config.legend.markers.customHTML[i](); + } + } else { + elMarker.innerHTML = w.config.legend.markers.customHTML(); + } + } + + Graphics.setAttrs(elMarker, { + rel: i + 1, + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + + if (collapsedSeries || ancillaryCollapsedSeries) { + elMarker.classList.add('apexcharts-inactive-legend'); + } + + var elLegend = document.createElement('div'); + var elLegendText = document.createElement('span'); + elLegendText.classList.add('apexcharts-legend-text'); + elLegendText.innerHTML = Array.isArray(text) ? text.join(' ') : text; + var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors; + + if (!textColor) { + textColor = w.config.chart.foreColor; + } + + elLegendText.style.color = textColor; + elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px'; + elLegendText.style.fontWeight = w.config.legend.fontWeight; + elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily; + Graphics.setAttrs(elLegendText, { + rel: i + 1, + i: i, + 'data:default-text': encodeURIComponent(text), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + elLegend.appendChild(elMarker); + elLegend.appendChild(elLegendText); + var coreUtils = new CoreUtils(this.ctx); + + if (!w.config.legend.showForZeroSeries) { + var total = coreUtils.getSeriesTotalByIndex(i); + + if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) { + elLegend.classList.add('apexcharts-hidden-zero-series'); + } + } + + if (!w.config.legend.showForNullSeries) { + if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) { + elLegend.classList.add('apexcharts-hidden-null-series'); + } + } + + w.globals.dom.elLegendWrap.appendChild(elLegend); + w.globals.dom.elLegendWrap.classList.add("apexcharts-align-".concat(w.config.legend.horizontalAlign)); + w.globals.dom.elLegendWrap.classList.add('apx-legend-position-' + w.config.legend.position); + elLegend.classList.add('apexcharts-legend-series'); + elLegend.style.margin = "".concat(w.config.legend.itemMargin.vertical, "px ").concat(w.config.legend.itemMargin.horizontal, "px"); + w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : ''; + w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : ''; + Graphics.setAttrs(elLegend, { + rel: i + 1, + seriesName: Utils$1.escapeString(legendNames[i]), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + + if (collapsedSeries || ancillaryCollapsedSeries) { + elLegend.classList.add('apexcharts-inactive-legend'); + } + + if (!w.config.legend.onItemClick.toggleDataSeries) { + elLegend.classList.add('apexcharts-no-click'); + } + } + + w.globals.dom.elWrap.addEventListener('click', me.onLegendClick, true); + + if (w.config.legend.onItemHover.highlightDataSeries && w.config.legend.customLegendItems.length === 0) { + w.globals.dom.elWrap.addEventListener('mousemove', me.onLegendHovered, true); + w.globals.dom.elWrap.addEventListener('mouseout', me.onLegendHovered, true); + } + } + }, { + key: "setLegendWrapXY", + value: function setLegendWrapXY(offsetX, offsetY) { + var w = this.w; + var elLegendWrap = w.globals.dom.elLegendWrap; + var legendRect = elLegendWrap.getBoundingClientRect(); + var x = 0; + var y = 0; + + if (w.config.legend.position === 'bottom') { + y = y + (w.globals.svgHeight - legendRect.height / 2); + } else if (w.config.legend.position === 'top') { + var dim = new Dimensions(this.ctx); + var titleH = dim.dimHelpers.getTitleSubtitleCoords('title').height; + var subtitleH = dim.dimHelpers.getTitleSubtitleCoords('subtitle').height; + y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0); + } + + elLegendWrap.style.position = 'absolute'; + x = x + offsetX + w.config.legend.offsetX; + y = y + offsetY + w.config.legend.offsetY; + elLegendWrap.style.left = x + 'px'; + elLegendWrap.style.top = y + 'px'; + + if (w.config.legend.position === 'bottom') { + elLegendWrap.style.top = 'auto'; + elLegendWrap.style.bottom = 5 - w.config.legend.offsetY + 'px'; + } else if (w.config.legend.position === 'right') { + elLegendWrap.style.left = 'auto'; + elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px'; + } + + var fixedHeigthWidth = ['width', 'height']; + fixedHeigthWidth.forEach(function (hw) { + if (elLegendWrap.style[hw]) { + elLegendWrap.style[hw] = parseInt(w.config.legend[hw], 10) + 'px'; + } + }); + } + }, { + key: "legendAlignHorizontal", + value: function legendAlignHorizontal() { + var w = this.w; + var elLegendWrap = w.globals.dom.elLegendWrap; + elLegendWrap.style.right = 0; + var lRect = this.legendHelpers.getLegendBBox(); + var dimensions = new Dimensions(this.ctx); + var titleRect = dimensions.dimHelpers.getTitleSubtitleCoords('title'); + var subtitleRect = dimensions.dimHelpers.getTitleSubtitleCoords('subtitle'); + var offsetX = 20; + var offsetY = 0; // the whole legend box is set to bottom + + if (w.config.legend.position === 'bottom') { + offsetY = -lRect.clwh / 1.8; + } else if (w.config.legend.position === 'top') { + offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 10; + } + + this.setLegendWrapXY(offsetX, offsetY); + } + }, { + key: "legendAlignVertical", + value: function legendAlignVertical() { + var w = this.w; + var lRect = this.legendHelpers.getLegendBBox(); + var offsetY = 20; + var offsetX = 0; + + if (w.config.legend.position === 'left') { + offsetX = 20; + } + + if (w.config.legend.position === 'right') { + offsetX = w.globals.svgWidth - lRect.clww - 10; + } + + this.setLegendWrapXY(offsetX, offsetY); + } + }, { + key: "onLegendHovered", + value: function onLegendHovered(e) { + var w = this.w; + var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker'); + + if (w.config.chart.type !== 'heatmap' && !this.isBarsDistributed) { + if (!e.target.classList.contains('apexcharts-inactive-legend') && hoverOverLegend) { + var series = new Series(this.ctx); + series.toggleSeriesOnHover(e, e.target); + } + } else { + // for heatmap handling + if (hoverOverLegend) { + var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1; + this.ctx.events.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]); + + var _series = new Series(this.ctx); + + _series.highlightRangeInSeries(e, e.target); + } + } + } + }, { + key: "onLegendClick", + value: function onLegendClick(e) { + var w = this.w; + if (w.config.legend.customLegendItems.length) return; + + if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) { + var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1; + var isHidden = e.target.getAttribute('data:collapsed') === 'true'; + var legendClick = this.w.config.chart.events.legendClick; + + if (typeof legendClick === 'function') { + legendClick(this.ctx, seriesCnt, this.w); + } + + this.ctx.events.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]); + var markerClick = this.w.config.legend.markers.onClick; + + if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) { + markerClick(this.ctx, seriesCnt, this.w); + this.ctx.events.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]); + } // for now - just prevent click on heatmap legend - and allow hover only + + + var clickAllowed = w.config.chart.type !== 'treemap' && w.config.chart.type !== 'heatmap' && !this.isBarsDistributed; + + if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) { + this.legendHelpers.toggleDataSeries(seriesCnt, isHidden); + } + } + } + }]); + + return Legend; + }(); + + var icoPan = "\n \n \n \n \n \n \n \n"; + + var icoZoom = "\n \n \n \n"; + + var icoReset = "\n \n \n"; + + var icoZoomIn = "\n \n \n\n"; + + var icoZoomOut = "\n \n \n\n"; + + var icoSelect = "\n \n \n"; + + var icoMenu = ""; + + /** + * ApexCharts Toolbar Class for creating toolbar in axis based charts. + * + * @module Toolbar + **/ + + var Toolbar = /*#__PURE__*/function () { + function Toolbar(ctx) { + _classCallCheck(this, Toolbar); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.ev = this.w.config.chart.events; + this.selectedClass = 'apexcharts-selected'; + this.localeValues = this.w.globals.locale.toolbar; + this.minX = w.globals.minX; + this.maxX = w.globals.maxX; + } + + _createClass(Toolbar, [{ + key: "createToolbar", + value: function createToolbar() { + var _this = this; + + var w = this.w; + + var createDiv = function createDiv() { + return document.createElement('div'); + }; + + var elToolbarWrap = createDiv(); + elToolbarWrap.setAttribute('class', 'apexcharts-toolbar'); + elToolbarWrap.style.top = w.config.chart.toolbar.offsetY + 'px'; + elToolbarWrap.style.right = -w.config.chart.toolbar.offsetX + 3 + 'px'; + w.globals.dom.elWrap.appendChild(elToolbarWrap); + this.elZoom = createDiv(); + this.elZoomIn = createDiv(); + this.elZoomOut = createDiv(); + this.elPan = createDiv(); + this.elSelection = createDiv(); + this.elZoomReset = createDiv(); + this.elMenuIcon = createDiv(); + this.elMenu = createDiv(); + this.elCustomIcons = []; + this.t = w.config.chart.toolbar.tools; + + if (Array.isArray(this.t.customIcons)) { + for (var i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons.push(createDiv()); + } + } + + var toolbarControls = []; + + var appendZoomControl = function appendZoomControl(type, el, ico) { + var tool = type.toLowerCase(); + + if (_this.t[tool] && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el: el, + icon: typeof _this.t[tool] === 'string' ? _this.t[tool] : ico, + title: _this.localeValues[type], + class: "apexcharts-".concat(tool, "-icon") + }); + } + }; + + appendZoomControl('zoomIn', this.elZoomIn, icoZoomIn); + appendZoomControl('zoomOut', this.elZoomOut, icoZoomOut); + + var zoomSelectionCtrls = function zoomSelectionCtrls(z) { + if (_this.t[z] && w.config.chart[z].enabled) { + toolbarControls.push({ + el: z === 'zoom' ? _this.elZoom : _this.elSelection, + icon: typeof _this.t[z] === 'string' ? _this.t[z] : z === 'zoom' ? icoZoom : icoSelect, + title: _this.localeValues[z === 'zoom' ? 'selectionZoom' : 'selection'], + class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : "apexcharts-".concat(z, "-icon") + }); + } + }; + + zoomSelectionCtrls('zoom'); + zoomSelectionCtrls('selection'); + + if (this.t.pan && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el: this.elPan, + icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan, + title: this.localeValues.pan, + class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : 'apexcharts-pan-icon' + }); + } + + appendZoomControl('reset', this.elZoomReset, icoReset); + + if (this.t.download) { + toolbarControls.push({ + el: this.elMenuIcon, + icon: typeof this.t.download === 'string' ? this.t.download : icoMenu, + title: this.localeValues.menu, + class: 'apexcharts-menu-icon' + }); + } + + for (var _i = 0; _i < this.elCustomIcons.length; _i++) { + toolbarControls.push({ + el: this.elCustomIcons[_i], + icon: this.t.customIcons[_i].icon, + title: this.t.customIcons[_i].title, + index: this.t.customIcons[_i].index, + class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class + }); + } + + toolbarControls.forEach(function (t, index) { + if (t.index) { + Utils$1.moveIndexInArray(toolbarControls, index, t.index); + } + }); + + for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) { + Graphics.setAttrs(toolbarControls[_i2].el, { + class: toolbarControls[_i2].class, + title: toolbarControls[_i2].title + }); + toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon; + elToolbarWrap.appendChild(toolbarControls[_i2].el); + } + + this._createHamburgerMenu(elToolbarWrap); + + if (w.globals.zoomEnabled) { + this.elZoom.classList.add(this.selectedClass); + } else if (w.globals.panEnabled) { + this.elPan.classList.add(this.selectedClass); + } else if (w.globals.selectionEnabled) { + this.elSelection.classList.add(this.selectedClass); + } + + this.addToolbarEventListeners(); + } + }, { + key: "_createHamburgerMenu", + value: function _createHamburgerMenu(parent) { + this.elMenuItems = []; + parent.appendChild(this.elMenu); + Graphics.setAttrs(this.elMenu, { + class: 'apexcharts-menu' + }); + var menuItems = [{ + name: 'exportSVG', + title: this.localeValues.exportToSVG + }, { + name: 'exportPNG', + title: this.localeValues.exportToPNG + }, { + name: 'exportCSV', + title: this.localeValues.exportToCSV + }]; + + if (!this.w.globals.allSeriesHasEqualX) { + // if it is a multi series, and all series have variable x values, export CSV won't work + menuItems.splice(2, 1); + } + + for (var i = 0; i < menuItems.length; i++) { + this.elMenuItems.push(document.createElement('div')); + this.elMenuItems[i].innerHTML = menuItems[i].title; + Graphics.setAttrs(this.elMenuItems[i], { + class: "apexcharts-menu-item ".concat(menuItems[i].name), + title: menuItems[i].title + }); + this.elMenu.appendChild(this.elMenuItems[i]); + } + } + }, { + key: "addToolbarEventListeners", + value: function addToolbarEventListeners() { + var _this2 = this; + + this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this)); + this.elSelection.addEventListener('click', this.toggleZoomSelection.bind(this, 'selection')); + this.elZoom.addEventListener('click', this.toggleZoomSelection.bind(this, 'zoom')); + this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this)); + this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this)); + this.elPan.addEventListener('click', this.togglePanning.bind(this)); + this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this)); + this.elMenuItems.forEach(function (m) { + if (m.classList.contains('exportSVG')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'svg')); + } else if (m.classList.contains('exportPNG')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'png')); + } else if (m.classList.contains('exportCSV')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'csv')); + } + }); + + for (var i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click.bind(this, this.ctx, this.ctx.w)); + } + } + }, { + key: "toggleZoomSelection", + value: function toggleZoomSelection(type) { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + ch.ctx.toolbar.toggleOtherControls(); + var el = type === 'selection' ? ch.ctx.toolbar.elSelection : ch.ctx.toolbar.elZoom; + var enabledType = type === 'selection' ? 'selectionEnabled' : 'zoomEnabled'; + ch.w.globals[enabledType] = !ch.w.globals[enabledType]; + + if (!el.classList.contains(ch.ctx.toolbar.selectedClass)) { + el.classList.add(ch.ctx.toolbar.selectedClass); + } else { + el.classList.remove(ch.ctx.toolbar.selectedClass); + } + }); + } + }, { + key: "getToolbarIconsReference", + value: function getToolbarIconsReference() { + var w = this.w; + + if (!this.elZoom) { + this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon'); + } + + if (!this.elPan) { + this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon'); + } + + if (!this.elSelection) { + this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon'); + } + } + }, { + key: "enableZoomPanFromToolbar", + value: function enableZoomPanFromToolbar(type) { + this.toggleOtherControls(); + type === 'pan' ? this.w.globals.panEnabled = true : this.w.globals.zoomEnabled = true; + var el = type === 'pan' ? this.elPan : this.elZoom; + var el2 = type === 'pan' ? this.elZoom : this.elPan; + + if (el) { + el.classList.add(this.selectedClass); + } + + if (el2) { + el2.classList.remove(this.selectedClass); + } + } + }, { + key: "togglePanning", + value: function togglePanning() { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + ch.ctx.toolbar.toggleOtherControls(); + ch.w.globals.panEnabled = !ch.w.globals.panEnabled; + + if (!ch.ctx.toolbar.elPan.classList.contains(ch.ctx.toolbar.selectedClass)) { + ch.ctx.toolbar.elPan.classList.add(ch.ctx.toolbar.selectedClass); + } else { + ch.ctx.toolbar.elPan.classList.remove(ch.ctx.toolbar.selectedClass); + } + }); + } + }, { + key: "toggleOtherControls", + value: function toggleOtherControls() { + var _this3 = this; + + var w = this.w; + w.globals.panEnabled = false; + w.globals.zoomEnabled = false; + w.globals.selectionEnabled = false; + this.getToolbarIconsReference(); + var toggleEls = [this.elPan, this.elSelection, this.elZoom]; + toggleEls.forEach(function (el) { + if (el) { + el.classList.remove(_this3.selectedClass); + } + }); + } + }, { + key: "handleZoomIn", + value: function handleZoomIn() { + var w = this.w; + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY; + this.maxX = w.globals.maxY; + } + + var centerX = (this.minX + this.maxX) / 2; + var newMinX = (this.minX + centerX) / 2; + var newMaxX = (this.maxX + centerX) / 2; + + var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX); + + if (!w.globals.disableZoomIn) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX); + } + } + }, { + key: "handleZoomOut", + value: function handleZoomOut() { + var w = this.w; + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY; + this.maxX = w.globals.maxY; + } // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis + + + if (w.config.xaxis.type === 'datetime' && new Date(this.minX).getUTCFullYear() < 1000) { + return; + } + + var centerX = (this.minX + this.maxX) / 2; + var newMinX = this.minX - (centerX - this.minX); + var newMaxX = this.maxX - (centerX - this.maxX); + + var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX); + + if (!w.globals.disableZoomOut) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX); + } + } + }, { + key: "_getNewMinXMaxX", + value: function _getNewMinXMaxX(newMinX, newMaxX) { + var shouldFloor = this.w.config.xaxis.convertedCatToNumeric; + return { + minX: shouldFloor ? Math.floor(newMinX) : newMinX, + maxX: shouldFloor ? Math.floor(newMaxX) : newMaxX + }; + } + }, { + key: "zoomUpdateOptions", + value: function zoomUpdateOptions(newMinX, newMaxX) { + var w = this.w; + + if (newMinX === undefined && newMaxX === undefined) { + this.handleZoomReset(); + return; + } + + if (w.config.xaxis.convertedCatToNumeric) { + // in category charts, avoid zooming out beyond min and max + if (newMinX < 1) { + newMinX = 1; + newMaxX = w.globals.dataPoints; + } + + if (newMaxX - newMinX < 2) { + return; + } + } + + var xaxis = { + min: newMinX, + max: newMaxX + }; + var beforeZoomRange = this.getBeforeZoomRange(xaxis); + + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis; + } + + var options = { + xaxis: xaxis + }; + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(this.ctx); + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis: xaxis + }); + } + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + this.w.globals.zoomed = true; + + this.ctx.updateHelpers._updateOptions(options, false, this.w.config.chart.animations.dynamicAnimation.enabled); + + this.zoomCallback(xaxis, yaxis); + } + }, { + key: "zoomCallback", + value: function zoomCallback(xaxis, yaxis) { + if (typeof this.ev.zoomed === 'function') { + this.ev.zoomed(this.ctx, { + xaxis: xaxis, + yaxis: yaxis + }); + } + } + }, { + key: "getBeforeZoomRange", + value: function getBeforeZoomRange(xaxis, yaxis) { + var newRange = null; + + if (typeof this.ev.beforeZoom === 'function') { + newRange = this.ev.beforeZoom(this, { + xaxis: xaxis, + yaxis: yaxis + }); + } + + return newRange; + } + }, { + key: "toggleMenu", + value: function toggleMenu() { + var _this4 = this; + + window.setTimeout(function () { + if (_this4.elMenu.classList.contains('apexcharts-menu-open')) { + _this4.elMenu.classList.remove('apexcharts-menu-open'); + } else { + _this4.elMenu.classList.add('apexcharts-menu-open'); + } + }, 0); + } + }, { + key: "handleDownload", + value: function handleDownload(type) { + var w = this.w; + var exprt = new Exports(this.ctx); + + switch (type) { + case 'svg': + exprt.exportToSVG(this.ctx); + break; + + case 'png': + exprt.exportToPng(this.ctx); + break; + + case 'csv': + exprt.exportToCSV({ + series: w.config.series, + columnDelimiter: w.config.chart.toolbar.export.csv.columnDelimiter + }); + break; + } + } + }, { + key: "handleZoomReset", + value: function handleZoomReset(e) { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + var w = ch.w; // forget lastXAxis min/max as reset button isn't resetting the x-axis completely if zoomX is called before + + w.globals.lastXAxis.min = undefined; + w.globals.lastXAxis.max = undefined; + ch.updateHelpers.revertDefaultAxisMinMax(); + + if (typeof w.config.chart.events.beforeResetZoom === 'function') { + // here, user get an option to control xaxis and yaxis when resetZoom is called + // at this point, whatever is returned from w.config.chart.events.beforeResetZoom + // is set as the new xaxis/yaxis min/max + var resetZoomRange = w.config.chart.events.beforeResetZoom(ch, w); + + if (resetZoomRange) { + ch.updateHelpers.revertDefaultAxisMinMax(resetZoomRange); + } + } + + if (typeof w.config.chart.events.zoomed === 'function') { + ch.ctx.toolbar.zoomCallback({ + min: w.config.xaxis.min, + max: w.config.xaxis.max + }); + } + + w.globals.zoomed = false; // if user has some series collapsed before hitting zoom reset button, + // those series should stay collapsed + + var series = ch.ctx.series.emptyCollapsedSeries(Utils$1.clone(w.globals.initialSeries)); + + ch.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.elZoom = null; + this.elZoomIn = null; + this.elZoomOut = null; + this.elPan = null; + this.elSelection = null; + this.elZoomReset = null; + this.elMenuIcon = null; + } + }]); + + return Toolbar; + }(); + + /** + * ApexCharts Zoom Class for handling zooming and panning on axes based charts. + * + * @module ZoomPanSelection + **/ + + var ZoomPanSelection = /*#__PURE__*/function (_Toolbar) { + _inherits(ZoomPanSelection, _Toolbar); + + var _super = _createSuper(ZoomPanSelection); + + function ZoomPanSelection(ctx) { + var _this; + + _classCallCheck(this, ZoomPanSelection); + + _this = _super.call(this, ctx); + _this.ctx = ctx; + _this.w = ctx.w; + _this.dragged = false; + _this.graphics = new Graphics(_this.ctx); + _this.eventList = ['mousedown', 'mouseleave', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend']; + _this.clientX = 0; + _this.clientY = 0; + _this.startX = 0; + _this.endX = 0; + _this.dragX = 0; + _this.startY = 0; + _this.endY = 0; + _this.dragY = 0; + _this.moveDirection = 'none'; + return _this; + } + + _createClass(ZoomPanSelection, [{ + key: "init", + value: function init(_ref) { + var _this2 = this; + + var xyRatios = _ref.xyRatios; + var w = this.w; + var me = this; + this.xyRatios = xyRatios; + this.zoomRect = this.graphics.drawRect(0, 0, 0, 0); + this.selectionRect = this.graphics.drawRect(0, 0, 0, 0); + this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid'); + this.zoomRect.node.classList.add('apexcharts-zoom-rect'); + this.selectionRect.node.classList.add('apexcharts-selection-rect'); + w.globals.dom.elGraphical.add(this.zoomRect); + w.globals.dom.elGraphical.add(this.selectionRect); + + if (w.config.chart.selection.type === 'x') { + this.slDraggableRect = this.selectionRect.draggable({ + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + }).on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } else if (w.config.chart.selection.type === 'y') { + this.slDraggableRect = this.selectionRect.draggable({ + minX: 0, + maxX: w.globals.gridWidth + }).on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } else { + this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } + + this.preselectedSelection(); + this.hoverArea = w.globals.dom.baseEl.querySelector("".concat(w.globals.chartClass, " .apexcharts-svg")); + this.hoverArea.classList.add('apexcharts-zoomable'); + this.eventList.forEach(function (event) { + _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), { + capture: false, + passive: true + }); + }); + } // remove the event listeners which were previously added on hover area + + }, { + key: "destroy", + value: function destroy() { + if (this.slDraggableRect) { + this.slDraggableRect.draggable(false); + this.slDraggableRect.off(); + this.selectionRect.off(); + } + + this.selectionRect = null; + this.zoomRect = null; + this.gridRect = null; + } + }, { + key: "svgMouseEvents", + value: function svgMouseEvents(xyRatios, e) { + var w = this.w; + var me = this; + var toolbar = this.ctx.toolbar; + var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type; + var autoSelected = w.config.chart.toolbar.autoSelected; + + if (e.shiftKey) { + this.shiftWasPressed = true; + toolbar.enableZoomPanFromToolbar(autoSelected === 'pan' ? 'zoom' : 'pan'); + } else { + if (this.shiftWasPressed) { + toolbar.enableZoomPanFromToolbar(autoSelected); + this.shiftWasPressed = false; + } + } + + if (!e.target) return; + var tc = e.target.classList; + var pc; + + if (e.target.parentNode && e.target.parentNode !== null) { + pc = e.target.parentNode.classList; + } + + var falsePositives = tc.contains('apexcharts-selection-rect') || tc.contains('apexcharts-legend-marker') || tc.contains('apexcharts-legend-text') || pc && pc.contains('apexcharts-toolbar'); + if (falsePositives) return; + me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX; + me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY; + + if (e.type === 'mousedown' && e.which === 1) { + var gridRectDim = me.gridRect.getBoundingClientRect(); + me.startX = me.clientX - gridRectDim.left; + me.startY = me.clientY - gridRectDim.top; + me.dragged = false; + me.w.globals.mousedown = true; + } + + if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') { + me.dragged = true; + + if (w.globals.panEnabled) { + w.globals.selection = null; + + if (me.w.globals.mousedown) { + me.panDragging({ + context: me, + zoomtype: zoomtype, + xyRatios: xyRatios + }); + } + } else { + if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) { + me.selection = me.selectionDrawing({ + context: me, + zoomtype: zoomtype + }); + } + } + } + + if (e.type === 'mouseup' || e.type === 'touchend' || e.type === 'mouseleave') { + // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup + var _gridRectDim = me.gridRect.getBoundingClientRect(); + + if (me.w.globals.mousedown) { + // user released the drag, now do all the calculations + me.endX = me.clientX - _gridRectDim.left; + me.endY = me.clientY - _gridRectDim.top; + me.dragX = Math.abs(me.endX - me.startX); + me.dragY = Math.abs(me.endY - me.startY); + + if (w.globals.zoomEnabled || w.globals.selectionEnabled) { + me.selectionDrawn({ + context: me, + zoomtype: zoomtype + }); + } + + if (w.globals.panEnabled && w.config.xaxis.convertedCatToNumeric) { + me.delayedPanScrolled(); + } + } + + if (w.globals.zoomEnabled) { + me.hideSelectionRect(this.selectionRect); + } + + me.dragged = false; + me.w.globals.mousedown = false; + } + + this.makeSelectionRectDraggable(); + } + }, { + key: "makeSelectionRectDraggable", + value: function makeSelectionRectDraggable() { + var w = this.w; + if (!this.selectionRect) return; + var rectDim = this.selectionRect.node.getBoundingClientRect(); + + if (rectDim.width > 0 && rectDim.height > 0) { + this.slDraggableRect.selectize({ + points: 'l, r', + pointSize: 8, + pointType: 'rect' + }).resize({ + constraint: { + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + } + }).on('resizing', this.selectionDragging.bind(this, 'resizing')); + } + } + }, { + key: "preselectedSelection", + value: function preselectedSelection() { + var w = this.w; + var xyRatios = this.xyRatios; + + if (!w.globals.zoomEnabled) { + if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) { + this.drawSelectionRect(w.globals.selection); + } else { + if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) { + var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio; + var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x; + var selectionRect = { + x: x, + y: 0, + width: width, + height: w.globals.gridHeight, + translateX: 0, + translateY: 0, + selectionEnabled: true + }; + this.drawSelectionRect(selectionRect); + this.makeSelectionRectDraggable(); + + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(this.ctx, { + xaxis: { + min: w.config.chart.selection.xaxis.min, + max: w.config.chart.selection.xaxis.max + }, + yaxis: {} + }); + } + } + } + } + } + }, { + key: "drawSelectionRect", + value: function drawSelectionRect(_ref2) { + var x = _ref2.x, + y = _ref2.y, + width = _ref2.width, + height = _ref2.height, + _ref2$translateX = _ref2.translateX, + translateX = _ref2$translateX === void 0 ? 0 : _ref2$translateX, + _ref2$translateY = _ref2.translateY, + translateY = _ref2$translateY === void 0 ? 0 : _ref2$translateY; + var w = this.w; + var zoomRect = this.zoomRect; + var selectionRect = this.selectionRect; + + if (this.dragged || w.globals.selection !== null) { + var scalingAttrs = { + transform: 'translate(' + translateX + ', ' + translateY + ')' + }; // change styles based on zoom or selection + // zoom is Enabled and user has dragged, so draw blue rect + + if (w.globals.zoomEnabled && this.dragged) { + if (width < 0) width = 1; // fixes apexcharts.js#1168 + + zoomRect.attr({ + x: x, + y: y, + width: width, + height: height, + fill: w.config.chart.zoom.zoomedArea.fill.color, + 'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity, + stroke: w.config.chart.zoom.zoomedArea.stroke.color, + 'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width, + 'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity + }); + Graphics.setAttrs(zoomRect.node, scalingAttrs); + } // selection is enabled + + + if (w.globals.selectionEnabled) { + selectionRect.attr({ + x: x, + y: y, + width: width > 0 ? width : 0, + height: height > 0 ? height : 0, + fill: w.config.chart.selection.fill.color, + 'fill-opacity': w.config.chart.selection.fill.opacity, + stroke: w.config.chart.selection.stroke.color, + 'stroke-width': w.config.chart.selection.stroke.width, + 'stroke-dasharray': w.config.chart.selection.stroke.dashArray, + 'stroke-opacity': w.config.chart.selection.stroke.opacity + }); + Graphics.setAttrs(selectionRect.node, scalingAttrs); + } + } + } + }, { + key: "hideSelectionRect", + value: function hideSelectionRect(rect) { + if (rect) { + rect.attr({ + x: 0, + y: 0, + width: 0, + height: 0 + }); + } + } + }, { + key: "selectionDrawing", + value: function selectionDrawing(_ref3) { + var context = _ref3.context, + zoomtype = _ref3.zoomtype; + var w = this.w; + var me = context; + var gridRectDim = this.gridRect.getBoundingClientRect(); + var startX = me.startX - 1; + var startY = me.startY; + var inversedX = false; + var inversedY = false; + var selectionWidth = me.clientX - gridRectDim.left - startX; + var selectionHeight = me.clientY - gridRectDim.top - startY; + var selectionRect = {}; + + if (Math.abs(selectionWidth + startX) > w.globals.gridWidth) { + // user dragged the mouse outside drawing area to the right + selectionWidth = w.globals.gridWidth - startX; + } else if (me.clientX - gridRectDim.left < 0) { + // user dragged the mouse outside drawing area to the left + selectionWidth = startX; + } // inverse selection X + + + if (startX > me.clientX - gridRectDim.left) { + inversedX = true; + selectionWidth = Math.abs(selectionWidth); + } // inverse selection Y + + + if (startY > me.clientY - gridRectDim.top) { + inversedY = true; + selectionHeight = Math.abs(selectionHeight); + } + + if (zoomtype === 'x') { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: 0, + width: selectionWidth, + height: w.globals.gridHeight + }; + } else if (zoomtype === 'y') { + selectionRect = { + x: 0, + y: inversedY ? startY - selectionHeight : startY, + width: w.globals.gridWidth, + height: selectionHeight + }; + } else { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: inversedY ? startY - selectionHeight : startY, + width: selectionWidth, + height: selectionHeight + }; + } + + me.drawSelectionRect(selectionRect); + me.selectionDragging('resizing'); + return selectionRect; + } + }, { + key: "selectionDragging", + value: function selectionDragging(type, e) { + var _this3 = this; + + var w = this.w; + var xyRatios = this.xyRatios; + var selRect = this.selectionRect; + var timerInterval = 0; + + if (type === 'resizing') { + timerInterval = 30; + } // update selection when selection rect is dragged + + + var getSelAttr = function getSelAttr(attr) { + return parseFloat(selRect.node.getAttribute(attr)); + }; + + var draggedProps = { + x: getSelAttr('x'), + y: getSelAttr('y'), + width: getSelAttr('width'), + height: getSelAttr('height') + }; + w.globals.selection = draggedProps; // update selection ends + + if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) { + // a small debouncer is required when resizing to avoid freezing the chart + clearTimeout(this.w.globals.selectionResizeTimer); + this.w.globals.selectionResizeTimer = window.setTimeout(function () { + var gridRectDim = _this3.gridRect.getBoundingClientRect(); + + var selectionRect = selRect.node.getBoundingClientRect(); + var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio; + var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio; + var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0]; + var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0]; + var xyAxis = { + xaxis: { + min: minX, + max: maxX + }, + yaxis: { + min: minY, + max: maxY + } + }; + w.config.chart.events.selection(_this3.ctx, xyAxis); + + if (w.config.chart.brush.enabled && w.config.chart.events.brushScrolled !== undefined) { + w.config.chart.events.brushScrolled(_this3.ctx, xyAxis); + } + }, timerInterval); + } + } + }, { + key: "selectionDrawn", + value: function selectionDrawn(_ref4) { + var context = _ref4.context, + zoomtype = _ref4.zoomtype; + var w = this.w; + var me = context; + var xyRatios = this.xyRatios; + var toolbar = this.ctx.toolbar; + + if (me.startX > me.endX) { + var tempX = me.startX; + me.startX = me.endX; + me.endX = tempX; + } + + if (me.startY > me.endY) { + var tempY = me.startY; + me.startY = me.endY; + me.endY = tempY; + } + + var xLowestValue = undefined; + var xHighestValue = undefined; + + if (!w.globals.isRangeBar) { + xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio; + xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; + } else { + xLowestValue = w.globals.yAxisScale[0].niceMin + me.startX * xyRatios.invertedYRatio; + xHighestValue = w.globals.yAxisScale[0].niceMin + me.endX * xyRatios.invertedYRatio; + } // TODO: we will consider the 1st y axis values here for getting highest and lowest y + + + var yHighestValue = []; + var yLowestValue = []; + w.config.yaxis.forEach(function (yaxe, index) { + yHighestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY); + yLowestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY); + }); + + if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) { + if (w.globals.zoomEnabled) { + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + var xaxis = Utils$1.clone(w.globals.initialConfig.xaxis); + w.globals.zoomed = true; + + if (w.config.xaxis.convertedCatToNumeric) { + xLowestValue = Math.floor(xLowestValue); + xHighestValue = Math.floor(xHighestValue); + + if (xLowestValue < 1) { + xLowestValue = 1; + xHighestValue = w.globals.dataPoints; + } + + if (xHighestValue - xLowestValue < 2) { + xHighestValue = xLowestValue + 1; + } + } + + if (zoomtype === 'xy' || zoomtype === 'x') { + xaxis = { + min: xLowestValue, + max: xHighestValue + }; + } + + if (zoomtype === 'xy' || zoomtype === 'y') { + yaxis.forEach(function (yaxe, index) { + yaxis[index].min = yLowestValue[index]; + yaxis[index].max = yHighestValue[index]; + }); + } + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(me.ctx); + yaxis = scale.autoScaleY(me.ctx, yaxis, { + xaxis: xaxis + }); + } + + if (toolbar) { + var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis); + + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis; + yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxis : yaxis; + } + } + + var options = { + xaxis: xaxis + }; + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + me.ctx.updateHelpers._updateOptions(options, false, me.w.config.chart.animations.dynamicAnimation.enabled); + + if (typeof w.config.chart.events.zoomed === 'function') { + toolbar.zoomCallback(xaxis, yaxis); + } + } else if (w.globals.selectionEnabled) { + var _yaxis = null; + var _xaxis = null; + _xaxis = { + min: xLowestValue, + max: xHighestValue + }; + + if (zoomtype === 'xy' || zoomtype === 'y') { + _yaxis = Utils$1.clone(w.config.yaxis); + + _yaxis.forEach(function (yaxe, index) { + _yaxis[index].min = yLowestValue[index]; + _yaxis[index].max = yHighestValue[index]; + }); + } + + w.globals.selection = me.selection; + + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(me.ctx, { + xaxis: _xaxis, + yaxis: _yaxis + }); + } + } + } + } + }, { + key: "panDragging", + value: function panDragging(_ref5) { + var context = _ref5.context; + var w = this.w; + var me = context; // check to make sure there is data to compare against + + if (typeof w.globals.lastClientPosition.x !== 'undefined') { + // get the change from last position to this position + var deltaX = w.globals.lastClientPosition.x - me.clientX; + var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero + + if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) { + this.moveDirection = 'left'; + } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) { + this.moveDirection = 'right'; + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) { + this.moveDirection = 'up'; + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) { + this.moveDirection = 'down'; + } + } // set the new last position to the current for next time (to get the position of drag) + + + w.globals.lastClientPosition = { + x: me.clientX, + y: me.clientY + }; + var xLowestValue = w.globals.isRangeBar ? w.globals.minY : w.globals.minX; + var xHighestValue = w.globals.isRangeBar ? w.globals.maxY : w.globals.maxX; // on a category, we don't pan continuosly as it causes bugs + + if (!w.config.xaxis.convertedCatToNumeric) { + me.panScrolled(xLowestValue, xHighestValue); + } + } + }, { + key: "delayedPanScrolled", + value: function delayedPanScrolled() { + var w = this.w; + var newMinX = w.globals.minX; + var newMaxX = w.globals.maxX; + var centerX = (w.globals.maxX - w.globals.minX) / 2; + + if (this.moveDirection === 'left') { + newMinX = w.globals.minX + centerX; + newMaxX = w.globals.maxX + centerX; + } else if (this.moveDirection === 'right') { + newMinX = w.globals.minX - centerX; + newMaxX = w.globals.maxX - centerX; + } + + newMinX = Math.floor(newMinX); + newMaxX = Math.floor(newMaxX); + this.updateScrolledChart({ + xaxis: { + min: newMinX, + max: newMaxX + } + }, newMinX, newMaxX); + } + }, { + key: "panScrolled", + value: function panScrolled(xLowestValue, xHighestValue) { + var w = this.w; + var xyRatios = this.xyRatios; + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + var xRatio = xyRatios.xRatio; + var minX = w.globals.minX; + var maxX = w.globals.maxX; + + if (w.globals.isRangeBar) { + xRatio = xyRatios.invertedYRatio; + minX = w.globals.minY; + maxX = w.globals.maxY; + } + + if (this.moveDirection === 'left') { + xLowestValue = minX + w.globals.gridWidth / 15 * xRatio; + xHighestValue = maxX + w.globals.gridWidth / 15 * xRatio; + } else if (this.moveDirection === 'right') { + xLowestValue = minX - w.globals.gridWidth / 15 * xRatio; + xHighestValue = maxX - w.globals.gridWidth / 15 * xRatio; + } + + if (!w.globals.isRangeBar) { + if (xLowestValue < w.globals.initialMinX || xHighestValue > w.globals.initialMaxX) { + xLowestValue = minX; + xHighestValue = maxX; + } + } + + var xaxis = { + min: xLowestValue, + max: xHighestValue + }; + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(this.ctx); + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis: xaxis + }); + } + + var options = { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + }; + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + this.updateScrolledChart(options, xLowestValue, xHighestValue); + } + }, { + key: "updateScrolledChart", + value: function updateScrolledChart(options, xLowestValue, xHighestValue) { + var w = this.w; + + this.ctx.updateHelpers._updateOptions(options, false, false); + + if (typeof w.config.chart.events.scrolled === 'function') { + w.config.chart.events.scrolled(this.ctx, { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + }); + } + } + }]); + + return ZoomPanSelection; + }(Toolbar); + + /** + * ApexCharts Tooltip.Utils Class to support Tooltip functionality. + * + * @module Tooltip.Utils + **/ + + var Utils = /*#__PURE__*/function () { + function Utils(tooltipContext) { + _classCallCheck(this, Utils); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + } + /** + ** When hovering over series, you need to capture which series is being hovered on. + ** This function will return both capturedseries index as well as inner index of that series + * @memberof Utils + * @param {object} + * - hoverArea = the rect on which user hovers + * - elGrid = dimensions of the hover rect (it can be different than hoverarea) + */ + + + _createClass(Utils, [{ + key: "getNearestValues", + value: function getNearestValues(_ref) { + var hoverArea = _ref.hoverArea, + elGrid = _ref.elGrid, + clientX = _ref.clientX, + clientY = _ref.clientY; + var w = this.w; + var seriesBound = elGrid.getBoundingClientRect(); + var hoverWidth = seriesBound.width; + var hoverHeight = seriesBound.height; + var xDivisor = hoverWidth / (w.globals.dataPoints - 1); + var yDivisor = hoverHeight / w.globals.dataPoints; + var hasBars = this.hasBars(); + + if ((w.globals.comboCharts || hasBars) && !w.config.xaxis.convertedCatToNumeric) { + xDivisor = hoverWidth / w.globals.dataPoints; + } + + var hoverX = clientX - seriesBound.left - w.globals.barPadForNumericAxis; + var hoverY = clientY - seriesBound.top; + var notInRect = hoverX < 0 || hoverY < 0 || hoverX > hoverWidth || hoverY > hoverHeight; + + if (notInRect) { + hoverArea.classList.remove('hovering-zoom'); + hoverArea.classList.remove('hovering-pan'); + } else { + if (w.globals.zoomEnabled) { + hoverArea.classList.remove('hovering-pan'); + hoverArea.classList.add('hovering-zoom'); + } else if (w.globals.panEnabled) { + hoverArea.classList.remove('hovering-zoom'); + hoverArea.classList.add('hovering-pan'); + } + } + + var j = Math.round(hoverX / xDivisor); + var jHorz = Math.floor(hoverY / yDivisor); + + if (hasBars && !w.config.xaxis.convertedCatToNumeric) { + j = Math.ceil(hoverX / xDivisor); + j = j - 1; + } + + var capturedSeries = null; + var closest = null; + var seriesXValArr = []; + var seriesYValArr = []; //add extra values to show markers for the first points. Included both axes to avoid incorrect positioning of the marker + + w.globals.seriesXvalues.forEach(function (value) { + seriesXValArr.push([value[0] + 0.000001].concat(value)); + }); + w.globals.seriesYvalues.forEach(function (value) { + seriesYValArr.push([value[0] + 0.000001].concat(value)); + }); + seriesXValArr = seriesXValArr.map(function (seriesXVal) { + return seriesXVal.filter(function (s) { + return Utils$1.isNumber(s); + }); + }); + seriesYValArr = seriesYValArr.map(function (seriesYVal) { + return seriesYVal.filter(function (s) { + return Utils$1.isNumber(s); + }); + }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value + + if (w.globals.isXNumeric) { + // Change origin of cursor position so that we can compute the relative nearest point to the cursor on our chart + // we only need to scale because all points are relative to the bounds.left and bounds.top => origin is virtually (0, 0) + var chartGridEl = this.ttCtx.getElGrid(); + var chartGridElBoundingRect = chartGridEl.getBoundingClientRect(); + var transformedHoverX = hoverX * (chartGridElBoundingRect.width / hoverWidth); + var transformedHoverY = hoverY * (chartGridElBoundingRect.height / hoverHeight); + closest = this.closestInMultiArray(transformedHoverX, transformedHoverY, seriesXValArr, seriesYValArr); + capturedSeries = closest.index; + j = closest.j; + + if (capturedSeries !== null) { + // initial push, it should be a little smaller than the 1st val + seriesXValArr = w.globals.seriesXvalues[capturedSeries]; + closest = this.closestInArray(transformedHoverX, seriesXValArr); + j = closest.index; + } + } + + w.globals.capturedSeriesIndex = capturedSeries === null ? -1 : capturedSeries; + if (!j || j < 1) j = 0; + + if (w.globals.isBarHorizontal) { + w.globals.capturedDataPointIndex = jHorz; + } else { + w.globals.capturedDataPointIndex = j; + } + + return { + capturedSeries: capturedSeries, + j: w.globals.isBarHorizontal ? jHorz : j, + hoverX: hoverX, + hoverY: hoverY + }; + } + }, { + key: "closestInMultiArray", + value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) { + var w = this.w; + var activeIndex = 0; + var currIndex = null; + var j = -1; + + if (w.globals.series.length > 1) { + activeIndex = this.getFirstActiveXArray(Xarrays); + } else { + currIndex = 0; + } + + var currX = Xarrays[activeIndex][0]; + var diffX = Math.abs(hoverX - currX); // find nearest point on x-axis + + Xarrays.forEach(function (arrX) { + arrX.forEach(function (x, iX) { + var newDiff = Math.abs(hoverX - x); + + if (newDiff < diffX) { + diffX = newDiff; + j = iX; + } + }); + }); + + if (j !== -1) { + // find nearest graph on y-axis relevanted to nearest point on x-axis + var currY = Yarrays[activeIndex][j]; + var diffY = Math.abs(hoverY - currY); + currIndex = activeIndex; + Yarrays.forEach(function (arrY, iAY) { + var newDiff = Math.abs(hoverY - arrY[j]); + + if (newDiff < diffY) { + diffY = newDiff; + currIndex = iAY; + } + }); + } + + return { + index: currIndex, + j: j + }; + } + }, { + key: "getFirstActiveXArray", + value: function getFirstActiveXArray(Xarrays) { + var w = this.w; + var activeIndex = 0; + var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) { + return xarr.length > 0 ? index : -1; + }); + + for (var a = 0; a < firstActiveSeriesIndex.length; a++) { + if (firstActiveSeriesIndex[a] !== -1 && w.globals.collapsedSeriesIndices.indexOf(a) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(a) === -1) { + activeIndex = firstActiveSeriesIndex[a]; + break; + } + } + + return activeIndex; + } + }, { + key: "closestInArray", + value: function closestInArray(val, arr) { + var curr = arr[0]; + var currIndex = null; + var diff = Math.abs(val - curr); + + for (var i = 0; i < arr.length; i++) { + var newdiff = Math.abs(val - arr[i]); + + if (newdiff < diff) { + diff = newdiff; + currIndex = i; + } + } + + return { + index: currIndex + }; + } + /** + * When there are multiple series, it is possible to have different x values for each series. + * But it may be possible in those multiple series, that there is same x value for 2 or more + * series. + * @memberof Utils + * @param {int} + * - j = is the inner index of series -> (series[i][j]) + * @return {bool} + */ + + }, { + key: "isXoverlap", + value: function isXoverlap(j) { + var w = this.w; + var xSameForAllSeriesJArr = []; + var seriesX = w.globals.seriesX.filter(function (s) { + return typeof s[0] !== 'undefined'; + }); + + if (seriesX.length > 0) { + for (var i = 0; i < seriesX.length - 1; i++) { + if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') { + if (seriesX[i][j] !== seriesX[i + 1][j]) { + xSameForAllSeriesJArr.push('unEqual'); + } + } + } + } + + if (xSameForAllSeriesJArr.length === 0) { + return true; + } + + return false; + } + }, { + key: "isInitialSeriesSameLen", + value: function isInitialSeriesSameLen() { + var sameLen = true; + var initialSeries = this.w.globals.initialSeries; + + for (var i = 0; i < initialSeries.length - 1; i++) { + if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) { + sameLen = false; + break; + } + } + + return sameLen; + } + }, { + key: "getBarsHeight", + value: function getBarsHeight(allbars) { + var bars = _toConsumableArray(allbars); + + var totalHeight = bars.reduce(function (acc, bar) { + return acc + bar.getBBox().height; + }, 0); + return totalHeight; + } + }, { + key: "getElMarkers", + value: function getElMarkers(capturedSeries) { + // The selector .apexcharts-series-markers-wrap > * includes marker groups for which the + // .apexcharts-series-markers class is not added due to null values or discrete markers + if (typeof capturedSeries == 'number') { + return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers-wrap > *")); + } + + return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers-wrap > *'); + } + }, { + key: "getAllMarkers", + value: function getAllMarkers() { + // first get all marker parents. This parent class contains series-index + // which helps to sort the markers as they are dynamic + var markersWraps = this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers-wrap'); + markersWraps = _toConsumableArray(markersWraps); + markersWraps.sort(function (a, b) { + var indexA = Number(a.getAttribute('data:realIndex')); + var indexB = Number(b.getAttribute('data:realIndex')); + return indexB < indexA ? 1 : indexB > indexA ? -1 : 0; + }); + var markers = []; + markersWraps.forEach(function (m) { + markers.push(m.querySelector('.apexcharts-marker')); + }); + return markers; + } + }, { + key: "hasMarkers", + value: function hasMarkers(capturedSeries) { + var markers = this.getElMarkers(capturedSeries); + return markers.length > 0; + } + }, { + key: "getElBars", + value: function getElBars() { + return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series'); + } + }, { + key: "hasBars", + value: function hasBars() { + var bars = this.getElBars(); + return bars.length > 0; + } + }, { + key: "getHoverMarkerSize", + value: function getHoverMarkerSize(index) { + var w = this.w; + var hoverSize = w.config.markers.hover.size; + + if (hoverSize === undefined) { + hoverSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + return hoverSize; + } + }, { + key: "toggleAllTooltipSeriesGroups", + value: function toggleAllTooltipSeriesGroups(state) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.allTooltipSeriesGroups.length === 0) { + ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group'); + } + + var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups; + + for (var i = 0; i < allTooltipSeriesGroups.length; i++) { + if (state === 'enable') { + allTooltipSeriesGroups[i].classList.add('apexcharts-active'); + allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display; + } else { + allTooltipSeriesGroups[i].classList.remove('apexcharts-active'); + allTooltipSeriesGroups[i].style.display = 'none'; + } + } + } + }]); + + return Utils; + }(); + + /** + * ApexCharts Tooltip.Labels Class to draw texts on the tooltip. + * This file deals with printing actual text on the tooltip. + * + * @module Tooltip.Labels + **/ + + var Labels = /*#__PURE__*/function () { + function Labels(tooltipContext) { + _classCallCheck(this, Labels); + + this.w = tooltipContext.w; + this.ctx = tooltipContext.ctx; + this.ttCtx = tooltipContext; + this.tooltipUtil = new Utils(tooltipContext); + } + + _createClass(Labels, [{ + key: "drawSeriesTexts", + value: function drawSeriesTexts(_ref) { + var _ref$shared = _ref.shared, + shared = _ref$shared === void 0 ? true : _ref$shared, + ttItems = _ref.ttItems, + _ref$i = _ref.i, + i = _ref$i === void 0 ? 0 : _ref$i, + _ref$j = _ref.j, + j = _ref$j === void 0 ? null : _ref$j, + y1 = _ref.y1, + y2 = _ref.y2, + e = _ref.e; + var w = this.w; + + if (w.config.tooltip.custom !== undefined) { + this.handleCustomTooltip({ + i: i, + j: j, + y1: y1, + y2: y2, + w: w + }); + } else { + this.toggleActiveInactiveSeries(shared); + } + + var values = this.getValuesToPrint({ + i: i, + j: j + }); + this.printLabels({ + i: i, + j: j, + values: values, + ttItems: ttItems, + shared: shared, + e: e + }); // Re-calculate tooltip dimensions now that we have drawn the text + + var tooltipEl = this.ttCtx.getElTooltip(); + this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width; + this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height; + } + }, { + key: "printLabels", + value: function printLabels(_ref2) { + var _this = this; + + var i = _ref2.i, + j = _ref2.j, + values = _ref2.values, + ttItems = _ref2.ttItems, + shared = _ref2.shared, + e = _ref2.e; + var w = this.w; + var val; + var goalVals = []; + + var hasGoalValues = function hasGoalValues(gi) { + return w.globals.seriesGoals[gi] && w.globals.seriesGoals[gi][j] && Array.isArray(w.globals.seriesGoals[gi][j]); + }; + + var xVal = values.xVal, + zVal = values.zVal, + xAxisTTVal = values.xAxisTTVal; + var seriesName = ''; + var pColor = w.globals.colors[i]; // The pColor here is for the markers inside tooltip + + if (j !== null && w.config.plotOptions.bar.distributed) { + pColor = w.globals.colors[j]; + } + + var _loop = function _loop(t, inverset) { + var f = _this.getFormatters(i); + + seriesName = _this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: i, + seriesIndex: i, + j: j + }); + + if (w.config.chart.type === 'treemap') { + seriesName = f.yLbTitleFormatter(String(w.config.series[i].data[j].x), { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + var tIndex = w.config.tooltip.inverseOrder ? inverset : t; + + if (w.globals.axisCharts) { + var getValBySeriesIndex = function getValBySeriesIndex(index) { + if (w.globals.isRangeData) { + var _w$globals$seriesRang, _w$globals$seriesRang2, _w$globals$seriesRang3, _w$globals$seriesRang4; + + return f.yLbFormatter((_w$globals$seriesRang = w.globals.seriesRangeStart) === null || _w$globals$seriesRang === void 0 ? void 0 : (_w$globals$seriesRang2 = _w$globals$seriesRang[index]) === null || _w$globals$seriesRang2 === void 0 ? void 0 : _w$globals$seriesRang2[j], { + series: w.globals.seriesRangeStart, + seriesIndex: index, + dataPointIndex: j, + w: w + }) + ' - ' + f.yLbFormatter((_w$globals$seriesRang3 = w.globals.seriesRangeEnd) === null || _w$globals$seriesRang3 === void 0 ? void 0 : (_w$globals$seriesRang4 = _w$globals$seriesRang3[index]) === null || _w$globals$seriesRang4 === void 0 ? void 0 : _w$globals$seriesRang4[j], { + series: w.globals.seriesRangeEnd, + seriesIndex: index, + dataPointIndex: j, + w: w + }); + } + + return f.yLbFormatter(w.globals.series[index][j], { + series: w.globals.series, + seriesIndex: index, + dataPointIndex: j, + w: w + }); + }; + + if (shared) { + f = _this.getFormatters(tIndex); + seriesName = _this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: tIndex, + seriesIndex: i, + j: j + }); + pColor = w.globals.colors[tIndex]; + val = getValBySeriesIndex(tIndex); + + if (hasGoalValues(tIndex)) { + goalVals = w.globals.seriesGoals[tIndex][j].map(function (goal) { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: tIndex, + dataPointIndex: j, + w: w + }) + }; + }); + } + } else { + var _e$target; + + // get a color from a hover area (if it's a line pattern then get from a first line) + var targetFill = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.getAttribute('fill'); + + if (targetFill) { + pColor = targetFill.indexOf('url') !== -1 ? document.querySelector(targetFill.substr(4).slice(0, -1)).childNodes[0].getAttribute('stroke') : targetFill; + } + + val = getValBySeriesIndex(i); + + if (hasGoalValues(i) && Array.isArray(w.globals.seriesGoals[i][j])) { + goalVals = w.globals.seriesGoals[i][j].map(function (goal) { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: i, + dataPointIndex: j, + w: w + }) + }; + }); + } + } + } // for pie / donuts + + + if (j === null) { + val = f.yLbFormatter(w.globals.series[i], _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: i, + dataPointIndex: i + })); + } + + _this.DOMHandling({ + i: i, + t: tIndex, + j: j, + ttItems: ttItems, + values: { + val: val, + goalVals: goalVals, + xVal: xVal, + xAxisTTVal: xAxisTTVal, + zVal: zVal + }, + seriesName: seriesName, + shared: shared, + pColor: pColor + }); + }; + + for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) { + _loop(t, inverset); + } + } + }, { + key: "getFormatters", + value: function getFormatters(i) { + var w = this.w; + var yLbFormatter = w.globals.yLabelFormatters[i]; + var yLbTitleFormatter; + + if (w.globals.ttVal !== undefined) { + if (Array.isArray(w.globals.ttVal)) { + yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter; + yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter; + } else { + yLbFormatter = w.globals.ttVal.formatter; + + if (typeof w.globals.ttVal.title.formatter === 'function') { + yLbTitleFormatter = w.globals.ttVal.title.formatter; + } + } + } else { + yLbTitleFormatter = w.config.tooltip.y.title.formatter; + } + + if (typeof yLbFormatter !== 'function') { + if (w.globals.yLabelFormatters[0]) { + yLbFormatter = w.globals.yLabelFormatters[0]; + } else { + yLbFormatter = function yLbFormatter(label) { + return label; + }; + } + } + + if (typeof yLbTitleFormatter !== 'function') { + yLbTitleFormatter = function yLbTitleFormatter(label) { + return label; + }; + } + + return { + yLbFormatter: yLbFormatter, + yLbTitleFormatter: yLbTitleFormatter + }; + } + }, { + key: "getSeriesName", + value: function getSeriesName(_ref3) { + var fn = _ref3.fn, + index = _ref3.index, + seriesIndex = _ref3.seriesIndex, + j = _ref3.j; + var w = this.w; + return fn(String(w.globals.seriesNames[index]), { + series: w.globals.series, + seriesIndex: seriesIndex, + dataPointIndex: j, + w: w + }); + } + }, { + key: "DOMHandling", + value: function DOMHandling(_ref4) { + _ref4.i; + var t = _ref4.t, + j = _ref4.j, + ttItems = _ref4.ttItems, + values = _ref4.values, + seriesName = _ref4.seriesName, + shared = _ref4.shared, + pColor = _ref4.pColor; + var w = this.w; + var ttCtx = this.ttCtx; + var val = values.val, + goalVals = values.goalVals, + xVal = values.xVal, + xAxisTTVal = values.xAxisTTVal, + zVal = values.zVal; + var ttItemsChildren = null; + ttItemsChildren = ttItems[t].children; + + if (w.config.tooltip.fillSeriesColor) { + ttItems[t].style.backgroundColor = pColor; + ttItemsChildren[0].style.display = 'none'; + } + + if (ttCtx.showTooltipTitle) { + if (ttCtx.tooltipTitle === null) { + // get it once if null, and store it in class property + ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title'); + } + + ttCtx.tooltipTitle.innerHTML = xVal; + } // if xaxis tooltip is constructed, we need to replace the innerHTML + + + if (ttCtx.isXAxisTooltipEnabled) { + ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal; + } + + var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-y-label'); + + if (ttYLabel) { + ttYLabel.innerHTML = seriesName ? seriesName : ''; + } + + var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-y-value'); + + if (ttYVal) { + ttYVal.innerHTML = typeof val !== 'undefined' ? val : ''; + } + + if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) { + if (w.config.tooltip.marker.fillColors && Array.isArray(w.config.tooltip.marker.fillColors)) { + pColor = w.config.tooltip.marker.fillColors[t]; + } + + ttItemsChildren[0].style.backgroundColor = pColor; + } + + if (!w.config.tooltip.marker.show) { + ttItemsChildren[0].style.display = 'none'; + } + + var ttGLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-goals-label'); + var ttGVal = ttItems[t].querySelector('.apexcharts-tooltip-text-goals-value'); + + if (goalVals.length && w.globals.seriesGoals[t]) { + var createGoalsHtml = function createGoalsHtml() { + var gLabels = '
    '; + var gVals = '
    '; + goalVals.forEach(function (goal, gi) { + gLabels += "
    ").concat(goal.attrs.name, "
    "); + gVals += "
    ".concat(goal.val, "
    "); + }); + ttGLabel.innerHTML = gLabels + "
    "; + ttGVal.innerHTML = gVals + "
    "; + }; + + if (shared) { + if (w.globals.seriesGoals[t][j] && Array.isArray(w.globals.seriesGoals[t][j])) { + createGoalsHtml(); + } else { + ttGLabel.innerHTML = ''; + ttGVal.innerHTML = ''; + } + } else { + createGoalsHtml(); + } + } else { + ttGLabel.innerHTML = ''; + ttGVal.innerHTML = ''; + } + + if (zVal !== null) { + var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label'); + ttZLabel.innerHTML = w.config.tooltip.z.title; + var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value'); + ttZVal.innerHTML = typeof zVal !== 'undefined' ? zVal : ''; + } + + if (shared && ttItemsChildren[0]) { + // hide when no Val or series collapsed + if (typeof val === 'undefined' || val === null || w.globals.ancillaryCollapsedSeriesIndices.indexOf(t) > -1 || w.globals.collapsedSeriesIndices.indexOf(t) > -1) { + ttItemsChildren[0].parentNode.style.display = 'none'; + } else { + ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display; + } + } + } + }, { + key: "toggleActiveInactiveSeries", + value: function toggleActiveInactiveSeries(shared) { + var w = this.w; + + if (shared) { + // make all tooltips active + this.tooltipUtil.toggleAllTooltipSeriesGroups('enable'); + } else { + // disable all tooltip text groups + this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group + + var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group'); + + if (firstTooltipSeriesGroup) { + firstTooltipSeriesGroup.classList.add('apexcharts-active'); + firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display; + } + } + } + }, { + key: "getValuesToPrint", + value: function getValuesToPrint(_ref5) { + var i = _ref5.i, + j = _ref5.j; + var w = this.w; + var filteredSeriesX = this.ctx.series.filteredSeriesX(); + var xVal = ''; + var xAxisTTVal = ''; + var zVal = null; + var val = null; + var customFormatterOpts = { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }; + var zFormatter = w.globals.ttZFormatter; + + if (j === null) { + val = w.globals.series[i]; + } else { + if (w.globals.isXNumeric && w.config.chart.type !== 'treemap') { + xVal = filteredSeriesX[i][j]; + + if (filteredSeriesX[i].length === 0) { + // a series (possibly the first one) might be collapsed, so get the next active index + var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX); + xVal = filteredSeriesX[firstActiveSeriesIndex][j]; + } + } else { + xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : ''; + } + } + + var bufferXVal = xVal; + + if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') { + var xFormat = new Formatters(this.ctx); + xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal, bufferXVal, { + i: undefined, + dateFormatter: new DateTime(this.ctx).formatDate, + w: this.w + }); + } else { + if (w.globals.isBarHorizontal) { + xVal = w.globals.yLabelFormatters[0](bufferXVal, customFormatterOpts); + } else { + xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts); + } + } // override default x-axis formatter with tooltip formatter + + + if (w.config.tooltip.x.formatter !== undefined) { + xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts); + } + + if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[i].length > 0) { + zVal = zFormatter(w.globals.seriesZ[i][j], w); + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts); + } else { + xAxisTTVal = xVal; + } + + return { + val: Array.isArray(val) ? val.join(' ') : val, + xVal: Array.isArray(xVal) ? xVal.join(' ') : xVal, + xAxisTTVal: Array.isArray(xAxisTTVal) ? xAxisTTVal.join(' ') : xAxisTTVal, + zVal: zVal + }; + } + }, { + key: "handleCustomTooltip", + value: function handleCustomTooltip(_ref6) { + var i = _ref6.i, + j = _ref6.j, + y1 = _ref6.y1, + y2 = _ref6.y2, + w = _ref6.w; + var tooltipEl = this.ttCtx.getElTooltip(); + var fn = w.config.tooltip.custom; + + if (Array.isArray(fn) && fn[i]) { + fn = fn[i]; + } // override everything with a custom html tooltip and replace it + + + tooltipEl.innerHTML = fn({ + ctx: this.ctx, + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + y1: y1, + y2: y2, + w: w + }); + } + }]); + + return Labels; + }(); + + /** + * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position. + * + * @module Tooltip.Position + **/ + + var Position = /*#__PURE__*/function () { + function Position(tooltipContext) { + _classCallCheck(this, Position); + + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + this.w = tooltipContext.w; + } + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + + + _createClass(Position, [{ + key: "moveXCrosshairs", + value: function moveXCrosshairs(cx) { + var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var ttCtx = this.ttCtx; + var w = this.w; + var xcrosshairs = ttCtx.getElXCrosshairs(); + var x = cx - ttCtx.xcrosshairsWidth / 2; + var tickAmount = w.globals.labels.slice().length; + + if (j !== null) { + x = w.globals.gridWidth / tickAmount * j; + } + + if (xcrosshairs !== null && !w.globals.isBarHorizontal) { + xcrosshairs.setAttribute('x', x); + xcrosshairs.setAttribute('x1', x); + xcrosshairs.setAttribute('x2', x); + xcrosshairs.setAttribute('y2', w.globals.gridHeight); + xcrosshairs.classList.add('apexcharts-active'); + } + + if (x < 0) { + x = 0; + } + + if (x > w.globals.gridWidth) { + x = w.globals.gridWidth; + } + + if (ttCtx.isXAxisTooltipEnabled) { + var tx = x; + + if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') { + tx = x + ttCtx.xcrosshairsWidth / 2; + } + + this.moveXAxisTooltip(tx); + } + } + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + + }, { + key: "moveYCrosshairs", + value: function moveYCrosshairs(cy) { + var ttCtx = this.ttCtx; + + if (ttCtx.ycrosshairs !== null) { + Graphics.setAttrs(ttCtx.ycrosshairs, { + y1: cy, + y2: cy + }); + } + + if (ttCtx.ycrosshairsHidden !== null) { + Graphics.setAttrs(ttCtx.ycrosshairsHidden, { + y1: cy, + y2: cy + }); + } + } + /** + ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move + */ + + }, { + key: "moveXAxisTooltip", + value: function moveXAxisTooltip(cx) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.xaxisTooltip !== null && ttCtx.xcrosshairsWidth !== 0) { + ttCtx.xaxisTooltip.classList.add('apexcharts-active'); + var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY; + var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect(); + var xaxisTTTextWidth = xaxisTTText.width; + cx = cx - xaxisTTTextWidth / 2; + + if (!isNaN(cx)) { + cx = cx + w.globals.translateX; + var textRect = 0; + var graphics = new Graphics(this.ctx); + textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML); + ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px'; + ttCtx.xaxisTooltip.style.left = cx + 'px'; + ttCtx.xaxisTooltip.style.top = cy + 'px'; + } + } + } + }, { + key: "moveYAxisTooltip", + value: function moveYAxisTooltip(index) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.yaxisTTEls === null) { + ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip'); + } + + var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'), 10); + var cy = w.globals.translateY + ycrosshairsHiddenRectY1; + var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect(); + var yAxisTTHeight = yAxisTTRect.height; + var cx = w.globals.translateYAxisX[index] - 2; + + if (w.config.yaxis[index].opposite) { + cx = cx - 26; + } + + cy = cy - yAxisTTHeight / 2; + + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + ttCtx.yaxisTTEls[index].classList.add('apexcharts-active'); + ttCtx.yaxisTTEls[index].style.top = cy + 'px'; + ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px'; + } else { + ttCtx.yaxisTTEls[index].classList.remove('apexcharts-active'); + } + } + /** + ** moves the whole tooltip by changing x, y attrs + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip + * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip + * @param {int} - r = point's radius + */ + + }, { + key: "moveTooltip", + value: function moveTooltip(cx, cy) { + var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var w = this.w; + var ttCtx = this.ttCtx; + var tooltipEl = ttCtx.getElTooltip(); + var tooltipRect = ttCtx.tooltipRect; + var pointR = r !== null ? parseFloat(r) : 1; + var x = parseFloat(cx) + pointR + 5; + var y = parseFloat(cy) + pointR / 2; // - tooltipRect.ttHeight / 2 + + if (x > w.globals.gridWidth / 2) { + x = x - tooltipRect.ttWidth - pointR - 10; + } + + if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) { + x = w.globals.gridWidth - tooltipRect.ttWidth; + } + + if (x < -20) { + x = -20; + } + + if (w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + x = ttCtx.e.clientX - seriesBound.left; + + if (x > w.globals.gridWidth / 2) { + x = x - ttCtx.tooltipRect.ttWidth; + } + + y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top; + + if (y > w.globals.gridHeight / 2) { + y = y - ttCtx.tooltipRect.ttHeight; + } + } else { + if (!w.globals.isBarHorizontal) { + if (tooltipRect.ttHeight / 2 + y > w.globals.gridHeight) { + y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY; + } + } + } + + if (!isNaN(x)) { + x = x + w.globals.translateX; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + } + } + }, { + key: "moveMarkers", + value: function moveMarkers(i, j) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (w.globals.markers.size[i] > 0) { + var allPoints = w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(i, "'] .apexcharts-marker")); + + for (var p = 0; p < allPoints.length; p++) { + if (parseInt(allPoints[p].getAttribute('rel'), 10) === j) { + ttCtx.marker.resetPointsSize(); + ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]); + } + } + } else { + ttCtx.marker.resetPointsSize(); + this.moveDynamicPointOnHover(j, i); + } + } // This function is used when you need to show markers/points only on hover - + // DIFFERENT X VALUES in multiple series + + }, { + key: "moveDynamicPointOnHover", + value: function moveDynamicPointOnHover(j, capturedSeries) { + var w = this.w; + var ttCtx = this.ttCtx; + var cx = 0; + var cy = 0; + var pointsArr = w.globals.pointsArray; + var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(capturedSeries); + var serType = w.config.series[capturedSeries].type; + + if (serType && (serType === 'column' || serType === 'candlestick' || serType === 'boxPlot')) { + // fix error mentioned in #811 + return; + } + + cx = pointsArr[capturedSeries][j][0]; + cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0; + var point = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers circle")); + + if (point && cy < w.globals.gridHeight && cy > 0) { + point.setAttribute('r', hoverSize); + point.setAttribute('cx', cx); + point.setAttribute('cy', cy); + } // point.style.opacity = w.config.markers.hover.opacity + + + this.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + this.moveTooltip(cx, cy, hoverSize); + } + } // This function is used when you need to show markers/points only on hover - + // SAME X VALUES in multiple series + + }, { + key: "moveDynamicPointsOnHover", + value: function moveDynamicPointsOnHover(j) { + var ttCtx = this.ttCtx; + var w = ttCtx.w; + var cx = 0; + var cy = 0; + var activeSeries = 0; + var pointsArr = w.globals.pointsArray; + var series = new Series(this.ctx); + activeSeries = series.getActiveConfigSeriesIndex('asc', ['line', 'area', 'scatter', 'bubble']); + var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(activeSeries); + + if (pointsArr[activeSeries]) { + cx = pointsArr[activeSeries][j][0]; + cy = pointsArr[activeSeries][j][1]; + } + + var points = ttCtx.tooltipUtil.getAllMarkers(); + + if (points !== null) { + for (var p = 0; p < w.globals.series.length; p++) { + var pointArr = pointsArr[p]; + + if (w.globals.comboCharts) { + // in a combo chart, if column charts are present, markers will not match with the number of series, hence this patch to push a null value in points array + if (typeof pointArr === 'undefined') { + // nodelist to array + points.splice(p, 0, null); + } + } + + if (pointArr && pointArr.length) { + var pcy = pointsArr[p][j][1]; + var pcy2 = void 0; + points[p].setAttribute('cx', cx); + + if (w.config.chart.type === 'rangeArea' && !w.globals.comboCharts) { + var rangeStartIndex = j + w.globals.series[p].length; + pcy2 = pointsArr[p][rangeStartIndex][1]; + var pcyDiff = Math.abs(pcy - pcy2) / 2; + pcy = pcy - pcyDiff; + } + + if (pcy !== null && !isNaN(pcy) && pcy < w.globals.gridHeight + hoverSize && pcy + hoverSize > 0) { + points[p] && points[p].setAttribute('r', hoverSize); + points[p] && points[p].setAttribute('cy', pcy); + } else { + points[p] && points[p].setAttribute('r', 0); + } + } + } + } + + this.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + this.moveTooltip(cx, cy || w.globals.gridHeight, hoverSize); + } + } + }, { + key: "moveStickyTooltipOverBars", + value: function moveStickyTooltipOverBars(j, capturedSeries) { + var w = this.w; + var ttCtx = this.ttCtx; + var barLen = w.globals.columnSeries ? w.globals.columnSeries.length : w.globals.series.length; + var i = barLen >= 2 && barLen % 2 === 0 ? Math.floor(barLen / 2) : Math.floor(barLen / 2) + 1; + + if (w.globals.isBarHorizontal) { + var series = new Series(this.ctx); + i = series.getActiveConfigSeriesIndex('desc') + 1; + } + + var jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(i, "'] path[j='").concat(j, "'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "']")); + + if (!jBar && typeof capturedSeries === 'number') { + // Try with captured series index + jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] path[j='").concat(j, "'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(capturedSeries, "'] path[j='").concat(j, "'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(capturedSeries, "'] path[j='").concat(j, "'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(capturedSeries, "'] path[j='").concat(j, "']")); + } + + var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0; + var bcy = jBar ? parseFloat(jBar.getAttribute('cy')) : 0; + var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0; + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + var isBoxOrCandle = jBar && (jBar.classList.contains('apexcharts-candlestick-area') || jBar.classList.contains('apexcharts-boxPlot-area')); + + if (w.globals.isXNumeric) { + if (jBar && !isBoxOrCandle) { + bcx = bcx - (barLen % 2 !== 0 ? bw / 2 : 0); + } + + if (jBar && // fixes apexcharts.js#2354 + isBoxOrCandle && w.globals.comboCharts) { + bcx = bcx - bw / 2; + } + } else { + if (!w.globals.isBarHorizontal) { + bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2; + + if (isNaN(bcx)) { + bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2; + } + } + } + + if (!w.globals.isBarHorizontal) { + if (w.config.tooltip.followCursor) { + bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2; + } else { + if (bcy + ttCtx.tooltipRect.ttHeight + 15 > w.globals.gridHeight) { + bcy = w.globals.gridHeight; + } + } + } else { + bcy = bcy - ttCtx.tooltipRect.ttHeight; + } + + if (!w.globals.isBarHorizontal) { + this.moveXCrosshairs(bcx); + } + + if (!ttCtx.fixedTooltip) { + this.moveTooltip(bcx, bcy || w.globals.gridHeight); + } + } + }]); + + return Position; + }(); + + /** + * ApexCharts Tooltip.Marker Class to draw texts on the tooltip. + * This file deals with the markers that appear near tooltip in line/area charts. + * These markers helps the user to associate the data-points and the values + * that are shown in the tooltip + * + * @module Tooltip.Marker + **/ + + var Marker = /*#__PURE__*/function () { + function Marker(tooltipContext) { + _classCallCheck(this, Marker); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + this.tooltipPosition = new Position(tooltipContext); + } + + _createClass(Marker, [{ + key: "drawDynamicPoints", + value: function drawDynamicPoints() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var marker = new Markers(this.ctx); + var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series'); + elsSeries = _toConsumableArray(elsSeries); + + if (w.config.chart.stacked) { + elsSeries.sort(function (a, b) { + return parseFloat(a.getAttribute('data:realIndex')) - parseFloat(b.getAttribute('data:realIndex')); + }); + } + + for (var i = 0; i < elsSeries.length; i++) { + var pointsMain = elsSeries[i].querySelector(".apexcharts-series-markers-wrap"); + + if (pointsMain !== null) { + // it can be null as we have tooltips in donut/bar charts + var point = void 0; + var PointClasses = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4)); + + if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) { + PointClasses += ' no-pointer-events'; + } + + var elPointOptions = marker.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex: Number(pointsMain.getAttribute('data:realIndex')) // fixes apexcharts/apexcharts.js #1427 + + }); + point = graphics.drawMarker(0, 0, elPointOptions); + point.node.setAttribute('default-marker-size', 0); + var elPointsG = document.createElementNS(w.globals.SVGNS, 'g'); + elPointsG.classList.add('apexcharts-series-markers'); + elPointsG.appendChild(point.node); + pointsMain.appendChild(elPointsG); + } + } + } + }, { + key: "enlargeCurrentPoint", + value: function enlargeCurrentPoint(rel, point) { + var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var w = this.w; + + if (w.config.chart.type !== 'bubble') { + this.newPointSize(rel, point); + } + + var cx = point.getAttribute('cx'); + var cy = point.getAttribute('cy'); + + if (x !== null && y !== null) { + cx = x; + cy = y; + } + + this.tooltipPosition.moveXCrosshairs(cx); + + if (!this.fixedTooltip) { + if (w.config.chart.type === 'radar') { + var elGrid = this.ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + cx = this.ttCtx.e.clientX - seriesBound.left; + } + + this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size); + } + } + }, { + key: "enlargePoints", + value: function enlargePoints(j) { + var w = this.w; + var me = this; + var ttCtx = this.ttCtx; + var col = j; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker'); + var newSize = w.config.markers.hover.size; + + for (var p = 0; p < points.length; p++) { + var rel = points[p].getAttribute('rel'); + var index = points[p].getAttribute('index'); + + if (newSize === undefined) { + newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + if (col === parseInt(rel, 10)) { + me.newPointSize(col, points[p]); + var cx = points[p].getAttribute('cx'); + var cy = points[p].getAttribute('cy'); + me.tooltipPosition.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + me.tooltipPosition.moveTooltip(cx, cy, newSize); + } + } else { + me.oldPointSize(points[p]); + } + } + } + }, { + key: "newPointSize", + value: function newPointSize(rel, point) { + var w = this.w; + var newSize = w.config.markers.hover.size; + var elPoint = rel === 0 ? point.parentNode.firstChild : point.parentNode.lastChild; + + if (elPoint.getAttribute('default-marker-size') !== '0') { + var index = parseInt(elPoint.getAttribute('index'), 10); + + if (newSize === undefined) { + newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + if (newSize < 0) newSize = 0; + elPoint.setAttribute('r', newSize); + } + } + }, { + key: "oldPointSize", + value: function oldPointSize(point) { + var size = parseFloat(point.getAttribute('default-marker-size')); + point.setAttribute('r', size); + } + }, { + key: "resetPointsSize", + value: function resetPointsSize() { + var w = this.w; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker'); + + for (var p = 0; p < points.length; p++) { + var size = parseFloat(points[p].getAttribute('default-marker-size')); + + if (Utils$1.isNumber(size) && size >= 0) { + points[p].setAttribute('r', size); + } else { + points[p].setAttribute('r', 0); + } + } + } + }]); + + return Marker; + }(); + + /** + * ApexCharts Tooltip.Intersect Class. + * This file deals with functions related to intersecting tooltips + * (tooltips that appear when user hovers directly over a data-point whether) + * + * @module Tooltip.Intersect + **/ + + var Intersect = /*#__PURE__*/function () { + function Intersect(tooltipContext) { + _classCallCheck(this, Intersect); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + } // a helper function to get an element's attribute value + + + _createClass(Intersect, [{ + key: "getAttr", + value: function getAttr(e, attr) { + return parseFloat(e.target.getAttribute(attr)); + } // handle tooltip for heatmaps and treemaps + + }, { + key: "handleHeatTreeTooltip", + value: function handleHeatTreeTooltip(_ref) { + var e = _ref.e, + opt = _ref.opt, + x = _ref.x, + y = _ref.y, + type = _ref.type; + var ttCtx = this.ttCtx; + var w = this.w; + + if (e.target.classList.contains("apexcharts-".concat(type, "-rect"))) { + var i = this.getAttr(e, 'i'); + var j = this.getAttr(e, 'j'); + var cx = this.getAttr(e, 'cx'); + var cy = this.getAttr(e, 'cy'); + var width = this.getAttr(e, 'width'); + var height = this.getAttr(e, 'height'); + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + shared: false, + e: e + }); + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + x = cx + ttCtx.tooltipRect.ttWidth / 2 + width; + y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2; + ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2); + + if (x > w.globals.gridWidth / 2) { + x = cx - ttCtx.tooltipRect.ttWidth / 2 + width; + } + + if (ttCtx.w.config.tooltip.followCursor) { + var seriesBound = w.globals.dom.elWrap.getBoundingClientRect(); + x = w.globals.clientX - seriesBound.left - (x > w.globals.gridWidth / 2 ? ttCtx.tooltipRect.ttWidth : 0); + y = w.globals.clientY - seriesBound.top - (y > w.globals.gridHeight / 2 ? ttCtx.tooltipRect.ttHeight : 0); + } + } + + return { + x: x, + y: y + }; + } + /** + * handle tooltips for line/area/scatter charts where tooltip.intersect is true + * when user hovers over the marker directly, this function is executed + */ + + }, { + key: "handleMarkerTooltip", + value: function handleMarkerTooltip(_ref2) { + var e = _ref2.e, + opt = _ref2.opt, + x = _ref2.x, + y = _ref2.y; + var w = this.w; + var ttCtx = this.ttCtx; + var i; + var j; + + if (e.target.classList.contains('apexcharts-marker')) { + var cx = parseInt(opt.paths.getAttribute('cx'), 10); + var cy = parseInt(opt.paths.getAttribute('cy'), 10); + var val = parseFloat(opt.paths.getAttribute('val')); + j = parseInt(opt.paths.getAttribute('rel'), 10); + i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel'), 10) - 1; + + if (ttCtx.intersect) { + var el = Utils$1.findAncestor(opt.paths, 'apexcharts-series'); + + if (el) { + i = parseInt(el.getAttribute('data:realIndex'), 10); + } + } + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e: e + }); + + if (e.type === 'mouseup') { + ttCtx.markerClick(e, i, j); + } + + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + x = cx; + y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4; + + if (ttCtx.w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top; + } + + if (val < 0) { + y = cy; + } + + ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y); + } + + return { + x: x, + y: y + }; + } + /** + * handle tooltips for bar/column charts + */ + + }, { + key: "handleBarTooltip", + value: function handleBarTooltip(_ref3) { + var e = _ref3.e, + opt = _ref3.opt; + var w = this.w; + var ttCtx = this.ttCtx; + var tooltipEl = ttCtx.getElTooltip(); + var bx = 0; + var x = 0; + var y = 0; + var i = 0; + var strokeWidth; + var barXY = this.getBarTooltipXY({ + e: e, + opt: opt + }); + i = barXY.i; + var barHeight = barXY.barHeight; + var j = barXY.j; + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + + if (w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars() || !w.config.tooltip.shared) { + x = barXY.x; + y = barXY.y; + strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width; + bx = x; + } else { + if (!w.globals.comboCharts && !w.config.tooltip.shared) { + // todo: re-check this condition as it's always 0 + bx = bx / 2; + } + } // y is NaN, make it touch the bottom of grid area + + + if (isNaN(y)) { + y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight; + } + + var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'), 10); + var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed; + + if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth && !isReversed) { + x = x - ttCtx.tooltipRect.ttWidth; + } else if (x < 0) { + x = 0; + } + + if (ttCtx.w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + y = ttCtx.e.clientY - seriesBound.top; + } // if tooltip is still null, querySelector + + + if (ttCtx.tooltip === null) { + ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip'); + } + + if (!w.config.tooltip.shared) { + if (w.globals.comboBarCount > 0) { + ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2); + } else { + ttCtx.tooltipPosition.moveXCrosshairs(bx); + } + } // move tooltip here + + + if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) { + if (isReversed) { + x = x - ttCtx.tooltipRect.ttWidth; + + if (x < 0) { + x = 0; + } + } + + if (isReversed && !(w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) { + y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2; + } + + y = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2; + tooltipEl.style.left = x + w.globals.translateX + 'px'; + tooltipEl.style.top = y + 'px'; + } + } + }, { + key: "getBarTooltipXY", + value: function getBarTooltipXY(_ref4) { + var e = _ref4.e, + opt = _ref4.opt; + var w = this.w; + var j = null; + var ttCtx = this.ttCtx; + var i = 0; + var x = 0; + var y = 0; + var barWidth = 0; + var barHeight = 0; + var cl = e.target.classList; + + if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-boxPlot-area') || cl.contains('apexcharts-rangebar-area')) { + var bar = e.target; + var barRect = bar.getBoundingClientRect(); + var seriesBound = opt.elGrid.getBoundingClientRect(); + var bh = barRect.height; + barHeight = barRect.height; + var bw = barRect.width; + var cx = parseInt(bar.getAttribute('cx'), 10); + var cy = parseInt(bar.getAttribute('cy'), 10); + barWidth = parseFloat(bar.getAttribute('barWidth')); + var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + j = parseInt(bar.getAttribute('j'), 10); + i = parseInt(bar.parentNode.getAttribute('rel'), 10) - 1; + var y1 = bar.getAttribute('data-range-y1'); + var y2 = bar.getAttribute('data-range-y2'); + + if (w.globals.comboCharts) { + i = parseInt(bar.parentNode.getAttribute('data:realIndex'), 10); + } // if (w.config.tooltip.shared) { + // this check not needed at the moment + // const yDivisor = w.globals.gridHeight / (w.globals.series.length) + // const hoverY = ttCtx.clientY - ttCtx.seriesBound.top + // j = Math.ceil(hoverY / yDivisor) + // } + + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + y1: y1 ? parseInt(y1, 10) : null, + y2: y2 ? parseInt(y2, 10) : null, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e: e + }); + + if (w.config.tooltip.followCursor) { + if (w.globals.isBarHorizontal) { + x = clientX - seriesBound.left + 15; + y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2; + } else { + if (w.globals.isXNumeric) { + x = cx - bw / 2; + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2; + } + + y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15; + } + } else { + if (w.globals.isBarHorizontal) { + x = cx; + + if (x < ttCtx.xyRatios.baseLineInvertedY) { + x = cx - ttCtx.tooltipRect.ttWidth; + } + + y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2; + } else { + // if columns + if (w.globals.isXNumeric) { + x = cx - bw / 2; + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2; + } + + y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10 + } + } + } + + return { + x: x, + y: y, + barHeight: barHeight, + barWidth: barWidth, + i: i, + j: j + }; + } + }]); + + return Intersect; + }(); + + /** + * ApexCharts Tooltip.AxesTooltip Class. + * This file deals with the x-axis and y-axis tooltips. + * + * @module Tooltip.AxesTooltip + **/ + var AxesTooltip = /*#__PURE__*/function () { + function AxesTooltip(tooltipContext) { + _classCallCheck(this, AxesTooltip); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + } + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + + + _createClass(AxesTooltip, [{ + key: "drawXaxisTooltip", + value: function drawXaxisTooltip() { + var w = this.w; + var ttCtx = this.ttCtx; + var isBottom = w.config.xaxis.position === 'bottom'; + ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : -w.globals.xAxisHeight - w.config.xaxis.axisTicks.height + 3; + var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top'; + var renderTo = w.globals.dom.elWrap; + + if (ttCtx.isXAxisTooltipEnabled) { + var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip'); + + if (xaxisTooltip === null) { + ttCtx.xaxisTooltip = document.createElement('div'); + ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme); + renderTo.appendChild(ttCtx.xaxisTooltip); + ttCtx.xaxisTooltipText = document.createElement('div'); + ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text'); + ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily; + ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize; + ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText); + } + } + } + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + + }, { + key: "drawYaxisTooltip", + value: function drawYaxisTooltip() { + var w = this.w; + var ttCtx = this.ttCtx; + + var _loop = function _loop(i) { + var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite; + ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1; + var tooltipCssClass = isRight ? "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-right") : "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-left"); + w.globals.yAxisSameScaleIndices.map(function (samescales, ssi) { + samescales.map(function (s, si) { + if (si === i) { + tooltipCssClass += w.config.yaxis[si].show ? " " : " apexcharts-yaxistooltip-hidden"; + } + }); + }); + var renderTo = w.globals.dom.elWrap; + var yaxisTooltip = w.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i)); + + if (yaxisTooltip === null) { + ttCtx.yaxisTooltip = document.createElement('div'); + ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme); + renderTo.appendChild(ttCtx.yaxisTooltip); + if (i === 0) ttCtx.yaxisTooltipText = []; + ttCtx.yaxisTooltipText[i] = document.createElement('div'); + ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text'); + ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]); + } + }; + + for (var i = 0; i < w.config.yaxis.length; i++) { + _loop(i); + } + } + /** + * @memberof Tooltip + **/ + + }, { + key: "setXCrosshairWidth", + value: function setXCrosshairWidth() { + var w = this.w; + var ttCtx = this.ttCtx; // set xcrosshairs width + + var xcrosshairs = ttCtx.getElXCrosshairs(); + ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width, 10); + + if (!w.globals.comboCharts) { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + var count = w.globals.labels.length; + ttCtx.xcrosshairsWidth = w.globals.gridWidth / count; + } else if (w.config.xaxis.crosshairs.width === 'barWidth') { + var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area'); + + if (bar !== null) { + var barWidth = parseFloat(bar.getAttribute('barWidth')); + ttCtx.xcrosshairsWidth = barWidth; + } else { + ttCtx.xcrosshairsWidth = 1; + } + } + } else { + var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area'); + + if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') { + var _barWidth = parseFloat(_bar.getAttribute('barWidth')); + + ttCtx.xcrosshairsWidth = _barWidth; + } else { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + var _count = w.globals.labels.length; + ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count; + } + } + } + + if (w.globals.isBarHorizontal) { + ttCtx.xcrosshairsWidth = 0; + } + + if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) { + xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth); + } + } + }, { + key: "handleYCrosshair", + value: function handleYCrosshair() { + var w = this.w; + var ttCtx = this.ttCtx; // set ycrosshairs height + + ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs'); + ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden'); + } + }, { + key: "drawYaxisTooltipText", + value: function drawYaxisTooltipText(index, clientY, xyRatios) { + var ttCtx = this.ttCtx; + var w = this.w; + var lbFormatter = w.globals.yLabelFormatters[index]; + + if (ttCtx.yaxisTooltips[index]) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index]; + var height = w.globals.maxYArr[index] - w.globals.minYArr[index]; + var val = w.globals.minYArr[index] + (height - hoverY); + ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top); + ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val); + ttCtx.tooltipPosition.moveYAxisTooltip(index); + } + } + }]); + + return AxesTooltip; + }(); + + /** + * ApexCharts Core Tooltip Class to handle the tooltip generation. + * + * @module Tooltip + **/ + + var Tooltip = /*#__PURE__*/function () { + function Tooltip(ctx) { + _classCallCheck(this, Tooltip); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.tConfig = w.config.tooltip; + this.tooltipUtil = new Utils(this); + this.tooltipLabels = new Labels(this); + this.tooltipPosition = new Position(this); + this.marker = new Marker(this); + this.intersect = new Intersect(this); + this.axesTooltip = new AxesTooltip(this); + this.showOnIntersect = this.tConfig.intersect; + this.showTooltipTitle = this.tConfig.x.show; + this.fixedTooltip = this.tConfig.fixed.enabled; + this.xaxisTooltip = null; + this.yaxisTTEls = null; + this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared; + this.lastHoverTime = Date.now(); + } + + _createClass(Tooltip, [{ + key: "getElTooltip", + value: function getElTooltip(ctx) { + if (!ctx) ctx = this; + if (!ctx.w.globals.dom.baseEl) return null; + return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip'); + } + }, { + key: "getElXCrosshairs", + value: function getElXCrosshairs() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs'); + } + }, { + key: "getElGrid", + value: function getElGrid() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid'); + } + }, { + key: "drawTooltip", + value: function drawTooltip(xyRatios) { + var w = this.w; + this.xyRatios = xyRatios; + this.isXAxisTooltipEnabled = w.config.xaxis.tooltip.enabled && w.globals.axisCharts; + this.yaxisTooltips = w.config.yaxis.map(function (y, i) { + return y.show && y.tooltip.enabled && w.globals.axisCharts ? true : false; + }); + this.allTooltipSeriesGroups = []; + + if (!w.globals.axisCharts) { + this.showTooltipTitle = false; + } + + var tooltipEl = document.createElement('div'); + tooltipEl.classList.add('apexcharts-tooltip'); + + if (w.config.tooltip.cssClass) { + tooltipEl.classList.add(w.config.tooltip.cssClass); + } + + tooltipEl.classList.add("apexcharts-theme-".concat(this.tConfig.theme)); + w.globals.dom.elWrap.appendChild(tooltipEl); + + if (w.globals.axisCharts) { + this.axesTooltip.drawXaxisTooltip(); + this.axesTooltip.drawYaxisTooltip(); + this.axesTooltip.setXCrosshairWidth(); + this.axesTooltip.handleYCrosshair(); + var xAxis = new XAxis(this.ctx); + this.xAxisTicksPositions = xAxis.getXAxisTicksPositions(); + } // we forcefully set intersect true for these conditions + + + if ((w.globals.comboCharts || this.tConfig.intersect || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) { + this.showOnIntersect = true; + } + + if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) { + // when user don't want to show points all the time, but only on when hovering on series + this.marker.drawDynamicPoints(this); + } // no visible series, exit + + + if (w.globals.collapsedSeries.length === w.globals.series.length) return; + this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints; + this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints; + + if (this.showTooltipTitle) { + this.tooltipTitle = document.createElement('div'); + this.tooltipTitle.classList.add('apexcharts-tooltip-title'); + this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily; + this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize; + tooltipEl.appendChild(this.tooltipTitle); + } + + var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared + + if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) { + if (!this.showOnIntersect) { + ttItemsCnt = w.globals.series.length; + } else { + ttItemsCnt = 1; + } + } + + this.legendLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-legend-text'); + this.ttItems = this.createTTElements(ttItemsCnt); + this.addSVGEvents(); + } + }, { + key: "createTTElements", + value: function createTTElements(ttItemsCnt) { + var _this = this; + + var w = this.w; + var ttItems = []; + var tooltipEl = this.getElTooltip(); + + var _loop = function _loop(i) { + var gTxt = document.createElement('div'); + gTxt.classList.add('apexcharts-tooltip-series-group'); + gTxt.style.order = w.config.tooltip.inverseOrder ? ttItemsCnt - i : i + 1; + + if (_this.tConfig.shared && _this.tConfig.enabledOnSeries && Array.isArray(_this.tConfig.enabledOnSeries)) { + if (_this.tConfig.enabledOnSeries.indexOf(i) < 0) { + gTxt.classList.add('apexcharts-tooltip-series-group-hidden'); + } + } + + var point = document.createElement('span'); + point.classList.add('apexcharts-tooltip-marker'); + point.style.backgroundColor = w.globals.colors[i]; + gTxt.appendChild(point); + var gYZ = document.createElement('div'); + gYZ.classList.add('apexcharts-tooltip-text'); + gYZ.style.fontFamily = _this.tConfig.style.fontFamily || w.config.chart.fontFamily; + gYZ.style.fontSize = _this.tConfig.style.fontSize; + ['y', 'goals', 'z'].forEach(function (g) { + var gValText = document.createElement('div'); + gValText.classList.add("apexcharts-tooltip-".concat(g, "-group")); + var txtLabel = document.createElement('span'); + txtLabel.classList.add("apexcharts-tooltip-text-".concat(g, "-label")); + gValText.appendChild(txtLabel); + var txtValue = document.createElement('span'); + txtValue.classList.add("apexcharts-tooltip-text-".concat(g, "-value")); + gValText.appendChild(txtValue); + gYZ.appendChild(gValText); + }); + gTxt.appendChild(gYZ); + tooltipEl.appendChild(gTxt); + ttItems.push(gTxt); + }; + + for (var i = 0; i < ttItemsCnt; i++) { + _loop(i); + } + + return ttItems; + } + }, { + key: "addSVGEvents", + value: function addSVGEvents() { + var w = this.w; + var type = w.config.chart.type; + var tooltipEl = this.getElTooltip(); + var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'boxPlot' || type === 'rangeBar'); + var chartWithmarkers = type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble' || type === 'radar'; + var hoverArea = w.globals.dom.Paper.node; + var elGrid = this.getElGrid(); + + if (elGrid) { + this.seriesBound = elGrid.getBoundingClientRect(); + } + + var tooltipY = []; + var tooltipX = []; + var seriesHoverParams = { + hoverArea: hoverArea, + elGrid: elGrid, + tooltipEl: tooltipEl, + tooltipY: tooltipY, + tooltipX: tooltipX, + ttItems: this.ttItems + }; + var points; + + if (w.globals.axisCharts) { + if (chartWithmarkers) { + points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker"); + } else if (commonBar) { + points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area'); + } else if (type === 'heatmap' || type === 'treemap') { + points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap'); + } + + if (points && points.length) { + for (var p = 0; p < points.length; p++) { + tooltipY.push(points[p].getAttribute('cy')); + tooltipX.push(points[p].getAttribute('cx')); + } + } + } + + var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.tooltipUtil.hasBars() && this.tConfig.shared; + + if (validSharedChartTypes) { + this.addPathsEventListeners([hoverArea], seriesHoverParams); + } else if (commonBar && !w.globals.comboCharts || chartWithmarkers && this.showOnIntersect) { + this.addDatapointEventsListeners(seriesHoverParams); + } else if (!w.globals.axisCharts || type === 'heatmap' || type === 'treemap') { + var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series'); + this.addPathsEventListeners(seriesAll, seriesHoverParams); + } + + if (this.showOnIntersect) { + var lineAreaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker'); + + if (lineAreaPoints.length > 0) { + // if we find any lineSeries, addEventListeners for them + this.addPathsEventListeners(lineAreaPoints, seriesHoverParams); + } // combo charts may have bars, so add event listeners here too + + + if (this.tooltipUtil.hasBars() && !this.tConfig.shared) { + this.addDatapointEventsListeners(seriesHoverParams); + } + } + } + }, { + key: "drawFixedTooltipRect", + value: function drawFixedTooltipRect() { + var w = this.w; + var tooltipEl = this.getElTooltip(); + var tooltipRect = tooltipEl.getBoundingClientRect(); + var ttWidth = tooltipRect.width + 10; + var ttHeight = tooltipRect.height + 10; + var x = this.tConfig.fixed.offsetX; + var y = this.tConfig.fixed.offsetY; + var fixed = this.tConfig.fixed.position.toLowerCase(); + + if (fixed.indexOf('right') > -1) { + x = x + w.globals.svgWidth - ttWidth + 10; + } + + if (fixed.indexOf('bottom') > -1) { + y = y + w.globals.svgHeight - ttHeight - 10; + } + + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + return { + x: x, + y: y, + ttWidth: ttWidth, + ttHeight: ttHeight + }; + } + }, { + key: "addDatapointEventsListeners", + value: function addDatapointEventsListeners(seriesHoverParams) { + var w = this.w; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area'); + this.addPathsEventListeners(points, seriesHoverParams); + } + }, { + key: "addPathsEventListeners", + value: function addPathsEventListeners(paths, opts) { + var self = this; + + var _loop2 = function _loop2(p) { + var extendedOpts = { + paths: paths[p], + tooltipEl: opts.tooltipEl, + tooltipY: opts.tooltipY, + tooltipX: opts.tooltipX, + elGrid: opts.elGrid, + hoverArea: opts.hoverArea, + ttItems: opts.ttItems + }; + var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend']; + events.map(function (ev) { + return paths[p].addEventListener(ev, self.onSeriesHover.bind(self, extendedOpts), { + capture: false, + passive: true + }); + }); + }; + + for (var p = 0; p < paths.length; p++) { + _loop2(p); + } + } + /* + ** Check to see if the tooltips should be updated based on a mouse / touch event + */ + + }, { + key: "onSeriesHover", + value: function onSeriesHover(opt, e) { + var _this2 = this; + + // If a user is moving their mouse quickly, don't bother updating the tooltip every single frame + var targetDelay = 100; + var timeSinceLastUpdate = Date.now() - this.lastHoverTime; + + if (timeSinceLastUpdate >= targetDelay) { + // The tooltip was last updated over 100ms ago - redraw it even if the user is still moving their + // mouse so they get some feedback that their moves are being registered + this.seriesHover(opt, e); + } else { + // The tooltip was last updated less than 100ms ago + // Cancel any other delayed draw, so we don't show stale data + clearTimeout(this.seriesHoverTimeout); // Schedule the next draw so that it happens about 100ms after the last update + + this.seriesHoverTimeout = setTimeout(function () { + _this2.seriesHover(opt, e); + }, targetDelay - timeSinceLastUpdate); + } + } + /* + ** The actual series hover function + */ + + }, { + key: "seriesHover", + value: function seriesHover(opt, e) { + var _this3 = this; + + this.lastHoverTime = Date.now(); + var chartGroups = []; + var w = this.w; // if user has more than one charts in group, we need to sync + + if (w.config.chart.group) { + chartGroups = this.ctx.getGroupedCharts(); + } + + if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) { + return; + } + + if (chartGroups.length) { + chartGroups.forEach(function (ch) { + var tooltipEl = _this3.getElTooltip(ch); + + var newOpts = { + paths: opt.paths, + tooltipEl: tooltipEl, + tooltipY: opt.tooltipY, + tooltipX: opt.tooltipX, + elGrid: opt.elGrid, + hoverArea: opt.hoverArea, + ttItems: ch.w.globals.tooltip.ttItems + }; // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly + + if (ch.w.globals.minX === _this3.w.globals.minX && ch.w.globals.maxX === _this3.w.globals.maxX) { + ch.w.globals.tooltip.seriesHoverByContext({ + chartCtx: ch, + ttCtx: ch.w.globals.tooltip, + opt: newOpts, + e: e + }); + } + }); + } else { + this.seriesHoverByContext({ + chartCtx: this.ctx, + ttCtx: this.w.globals.tooltip, + opt: opt, + e: e + }); + } + } + }, { + key: "seriesHoverByContext", + value: function seriesHoverByContext(_ref) { + var chartCtx = _ref.chartCtx, + ttCtx = _ref.ttCtx, + opt = _ref.opt, + e = _ref.e; + var w = chartCtx.w; + var tooltipEl = this.getElTooltip(); + if (!tooltipEl) return; // tooltipRect is calculated on every mousemove, because the text is dynamic + + ttCtx.tooltipRect = { + x: 0, + y: 0, + ttWidth: tooltipEl.getBoundingClientRect().width, + ttHeight: tooltipEl.getBoundingClientRect().height + }; + ttCtx.e = e; // highlight the current hovered bars + + if (ttCtx.tooltipUtil.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) { + if (this.tConfig.onDatasetHover.highlightDataSeries) { + var series = new Series(chartCtx); + series.toggleSeriesOnHover(e, e.target.parentNode); + } + } + + if (ttCtx.fixedTooltip) { + ttCtx.drawFixedTooltipRect(); + } + + if (w.globals.axisCharts) { + ttCtx.axisChartsTooltips({ + e: e, + opt: opt, + tooltipRect: ttCtx.tooltipRect + }); + } else { + // non-plot charts i.e pie/donut/circle + ttCtx.nonAxisChartsTooltips({ + e: e, + opt: opt, + tooltipRect: ttCtx.tooltipRect + }); + } + } // tooltip handling for line/area/bar/columns/scatter + + }, { + key: "axisChartsTooltips", + value: function axisChartsTooltips(_ref2) { + var e = _ref2.e, + opt = _ref2.opt; + var w = this.w; + var x, y; + var seriesBound = opt.elGrid.getBoundingClientRect(); + var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; + this.clientY = clientY; + this.clientX = clientX; + w.globals.capturedSeriesIndex = -1; + w.globals.capturedDataPointIndex = -1; + + if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) { + this.handleMouseOut(opt); + return; + } + + if (Array.isArray(this.tConfig.enabledOnSeries) && !w.config.tooltip.shared) { + var index = parseInt(opt.paths.getAttribute('index'), 10); + + if (this.tConfig.enabledOnSeries.indexOf(index) < 0) { + this.handleMouseOut(opt); + return; + } + } + + var tooltipEl = this.getElTooltip(); + var xcrosshairs = this.getElXCrosshairs(); + var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.tooltipUtil.hasBars(); + + if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') { + // there is no series to hover over + if (w.globals.collapsedSeries.length + w.globals.ancillaryCollapsedSeries.length === w.globals.series.length) { + return; + } + + if (xcrosshairs !== null) { + xcrosshairs.classList.add('apexcharts-active'); + } + + var hasYAxisTooltip = this.yaxisTooltips.filter(function (b) { + return b === true; + }); + + if (this.ycrosshairs !== null && hasYAxisTooltip.length) { + this.ycrosshairs.classList.add('apexcharts-active'); + } + + if (isStickyTooltip && !this.showOnIntersect) { + this.handleStickyTooltip(e, clientX, clientY, opt); + } else { + if (w.config.chart.type === 'heatmap' || w.config.chart.type === 'treemap') { + var markerXY = this.intersect.handleHeatTreeTooltip({ + e: e, + opt: opt, + x: x, + y: y, + type: w.config.chart.type + }); + x = markerXY.x; + y = markerXY.y; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + } else { + if (this.tooltipUtil.hasBars()) { + this.intersect.handleBarTooltip({ + e: e, + opt: opt + }); + } + + if (this.tooltipUtil.hasMarkers()) { + // intersect - line/area/scatter/bubble + this.intersect.handleMarkerTooltip({ + e: e, + opt: opt, + x: x, + y: y + }); + } + } + } + + if (this.yaxisTooltips.length) { + for (var yt = 0; yt < w.config.yaxis.length; yt++) { + this.axesTooltip.drawYaxisTooltipText(yt, clientY, this.xyRatios); + } + } + + opt.tooltipEl.classList.add('apexcharts-active'); + } else if (e.type === 'mouseout' || e.type === 'touchend') { + this.handleMouseOut(opt); + } + } // tooltip handling for pie/donuts + + }, { + key: "nonAxisChartsTooltips", + value: function nonAxisChartsTooltips(_ref3) { + var e = _ref3.e, + opt = _ref3.opt, + tooltipRect = _ref3.tooltipRect; + var w = this.w; + var rel = opt.paths.getAttribute('rel'); + var tooltipEl = this.getElTooltip(); + var seriesBound = w.globals.dom.elWrap.getBoundingClientRect(); + + if (e.type === 'mousemove' || e.type === 'touchmove') { + tooltipEl.classList.add('apexcharts-active'); + this.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: parseInt(rel, 10) - 1, + shared: false + }); + var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2; + var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + + if (w.config.legend.tooltipHoverFormatter) { + var legendFormatter = w.config.legend.tooltipHoverFormatter; + var i = rel - 1; + var legendName = this.legendLabels[i].getAttribute('data:default-text'); + var text = legendFormatter(legendName, { + seriesIndex: i, + dataPointIndex: i, + w: w + }); + this.legendLabels[i].innerHTML = text; + } + } else if (e.type === 'mouseout' || e.type === 'touchend') { + tooltipEl.classList.remove('apexcharts-active'); + + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach(function (l) { + var defaultText = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(defaultText); + }); + } + } + } + }, { + key: "handleStickyTooltip", + value: function handleStickyTooltip(e, clientX, clientY, opt) { + var w = this.w; + var capj = this.tooltipUtil.getNearestValues({ + context: this, + hoverArea: opt.hoverArea, + elGrid: opt.elGrid, + clientX: clientX, + clientY: clientY + }); + var j = capj.j; + var capturedSeries = capj.capturedSeries; + if (w.globals.collapsedSeriesIndices.includes(capturedSeries)) capturedSeries = null; + var bounds = opt.elGrid.getBoundingClientRect(); + + if (capj.hoverX < 0 || capj.hoverX > bounds.width) { + this.handleMouseOut(opt); + return; + } + + if (capturedSeries !== null) { + this.handleStickyCapturedSeries(e, capturedSeries, opt, j); + } else { + // couldn't capture any series. check if shared X is same, + // if yes, draw a grouped tooltip + if (this.tooltipUtil.isXoverlap(j) || w.globals.isBarHorizontal) { + var firstVisibleSeries = w.globals.series.findIndex(function (s, i) { + return !w.globals.collapsedSeriesIndices.includes(i); + }); + this.create(e, this, firstVisibleSeries, j, opt.ttItems); + } + } + } + }, { + key: "handleStickyCapturedSeries", + value: function handleStickyCapturedSeries(e, capturedSeries, opt, j) { + var w = this.w; + + if (!this.tConfig.shared) { + var ignoreNull = w.globals.series[capturedSeries][j] === null; + + if (ignoreNull) { + this.handleMouseOut(opt); + return; + } + } + + if (typeof w.globals.series[capturedSeries][j] !== 'undefined') { + if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isInitialSeriesSameLen()) { + this.create(e, this, capturedSeries, j, opt.ttItems); + } else { + this.create(e, this, capturedSeries, j, opt.ttItems, false); + } + } else { + if (this.tooltipUtil.isXoverlap(j)) { + var firstVisibleSeries = w.globals.series.findIndex(function (s, i) { + return !w.globals.collapsedSeriesIndices.includes(i); + }); + this.create(e, this, firstVisibleSeries, j, opt.ttItems); + } + } + } + }, { + key: "deactivateHoverFilter", + value: function deactivateHoverFilter() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var allPaths = w.globals.dom.Paper.select(".apexcharts-bar-area"); + + for (var b = 0; b < allPaths.length; b++) { + graphics.pathMouseLeave(allPaths[b]); + } + } + }, { + key: "handleMouseOut", + value: function handleMouseOut(opt) { + var w = this.w; + var xcrosshairs = this.getElXCrosshairs(); + opt.tooltipEl.classList.remove('apexcharts-active'); + this.deactivateHoverFilter(); + + if (w.config.chart.type !== 'bubble') { + this.marker.resetPointsSize(); + } + + if (xcrosshairs !== null) { + xcrosshairs.classList.remove('apexcharts-active'); + } + + if (this.ycrosshairs !== null) { + this.ycrosshairs.classList.remove('apexcharts-active'); + } + + if (this.isXAxisTooltipEnabled) { + this.xaxisTooltip.classList.remove('apexcharts-active'); + } + + if (this.yaxisTooltips.length) { + if (this.yaxisTTEls === null) { + this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip'); + } + + for (var i = 0; i < this.yaxisTTEls.length; i++) { + this.yaxisTTEls[i].classList.remove('apexcharts-active'); + } + } + + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach(function (l) { + var defaultText = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(defaultText); + }); + } + } + }, { + key: "markerClick", + value: function markerClick(e, seriesIndex, dataPointIndex) { + var w = this.w; + + if (typeof w.config.chart.events.markerClick === 'function') { + w.config.chart.events.markerClick(e, this.ctx, { + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + w: w + }); + } + + this.ctx.events.fireEvent('markerClick', [e, this.ctx, { + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + w: w + }]); + } + }, { + key: "create", + value: function create(e, context, capturedSeries, j, ttItems) { + var _w$globals$seriesRang, _w$globals$seriesRang2, _w$globals$seriesRang3, _w$globals$seriesRang4, _w$globals$seriesRang5, _w$globals$seriesRang6, _w$globals$seriesRang7, _w$globals$seriesRang8, _w$globals$seriesRang9, _w$globals$seriesRang10, _w$globals$seriesRang11, _w$globals$seriesRang12, _w$globals$seriesRang13, _w$globals$seriesRang14, _w$globals$seriesRang15, _w$globals$seriesRang16; + + var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var w = this.w; + var ttCtx = context; + + if (e.type === 'mouseup') { + this.markerClick(e, capturedSeries, j); + } + + if (shared === null) shared = this.tConfig.shared; + var hasMarkers = this.tooltipUtil.hasMarkers(capturedSeries); + var bars = this.tooltipUtil.getElBars(); + + if (w.config.legend.tooltipHoverFormatter) { + var legendFormatter = w.config.legend.tooltipHoverFormatter; + var els = Array.from(this.legendLabels); // reset all legend values first + + els.forEach(function (l) { + var legendName = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(legendName); + }); // for irregular time series + + for (var i = 0; i < els.length; i++) { + var l = els[i]; + var lsIndex = parseInt(l.getAttribute('i'), 10); + var legendName = decodeURIComponent(l.getAttribute('data:default-text')); + var text = legendFormatter(legendName, { + seriesIndex: shared ? lsIndex : capturedSeries, + dataPointIndex: j, + w: w + }); + + if (!shared) { + l.innerHTML = lsIndex === capturedSeries ? text : legendName; + + if (capturedSeries === lsIndex) { + break; + } + } else { + l.innerHTML = w.globals.collapsedSeriesIndices.indexOf(lsIndex) < 0 ? text : legendName; + } + } + } + + var commonSeriesTextsParams = _objectSpread2(_objectSpread2({ + ttItems: ttItems, + i: capturedSeries, + j: j + }, typeof ((_w$globals$seriesRang = w.globals.seriesRange) === null || _w$globals$seriesRang === void 0 ? void 0 : (_w$globals$seriesRang2 = _w$globals$seriesRang[capturedSeries]) === null || _w$globals$seriesRang2 === void 0 ? void 0 : (_w$globals$seriesRang3 = _w$globals$seriesRang2[j]) === null || _w$globals$seriesRang3 === void 0 ? void 0 : (_w$globals$seriesRang4 = _w$globals$seriesRang3.y[0]) === null || _w$globals$seriesRang4 === void 0 ? void 0 : _w$globals$seriesRang4.y1) !== 'undefined' && { + y1: (_w$globals$seriesRang5 = w.globals.seriesRange) === null || _w$globals$seriesRang5 === void 0 ? void 0 : (_w$globals$seriesRang6 = _w$globals$seriesRang5[capturedSeries]) === null || _w$globals$seriesRang6 === void 0 ? void 0 : (_w$globals$seriesRang7 = _w$globals$seriesRang6[j]) === null || _w$globals$seriesRang7 === void 0 ? void 0 : (_w$globals$seriesRang8 = _w$globals$seriesRang7.y[0]) === null || _w$globals$seriesRang8 === void 0 ? void 0 : _w$globals$seriesRang8.y1 + }), typeof ((_w$globals$seriesRang9 = w.globals.seriesRange) === null || _w$globals$seriesRang9 === void 0 ? void 0 : (_w$globals$seriesRang10 = _w$globals$seriesRang9[capturedSeries]) === null || _w$globals$seriesRang10 === void 0 ? void 0 : (_w$globals$seriesRang11 = _w$globals$seriesRang10[j]) === null || _w$globals$seriesRang11 === void 0 ? void 0 : (_w$globals$seriesRang12 = _w$globals$seriesRang11.y[0]) === null || _w$globals$seriesRang12 === void 0 ? void 0 : _w$globals$seriesRang12.y2) !== 'undefined' && { + y2: (_w$globals$seriesRang13 = w.globals.seriesRange) === null || _w$globals$seriesRang13 === void 0 ? void 0 : (_w$globals$seriesRang14 = _w$globals$seriesRang13[capturedSeries]) === null || _w$globals$seriesRang14 === void 0 ? void 0 : (_w$globals$seriesRang15 = _w$globals$seriesRang14[j]) === null || _w$globals$seriesRang15 === void 0 ? void 0 : (_w$globals$seriesRang16 = _w$globals$seriesRang15.y[0]) === null || _w$globals$seriesRang16 === void 0 ? void 0 : _w$globals$seriesRang16.y2 + }); + + if (shared) { + ttCtx.tooltipLabels.drawSeriesTexts(_objectSpread2(_objectSpread2({}, commonSeriesTextsParams), {}, { + shared: this.showOnIntersect ? false : this.tConfig.shared + })); + + if (hasMarkers) { + if (w.globals.markers.largestSize > 0) { + ttCtx.marker.enlargePoints(j); + } else { + ttCtx.tooltipPosition.moveDynamicPointsOnHover(j); + } + } else if (this.tooltipUtil.hasBars()) { + this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars); + + if (this.barSeriesHeight > 0) { + // hover state, activate snap filter + var graphics = new Graphics(this.ctx); + var paths = w.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(j, "']")); // de-activate first + + this.deactivateHoverFilter(); + this.tooltipPosition.moveStickyTooltipOverBars(j, capturedSeries); + + for (var b = 0; b < paths.length; b++) { + graphics.pathMouseEnter(paths[b]); + } + } + } + } else { + ttCtx.tooltipLabels.drawSeriesTexts(_objectSpread2({ + shared: false + }, commonSeriesTextsParams)); + + if (this.tooltipUtil.hasBars()) { + ttCtx.tooltipPosition.moveStickyTooltipOverBars(j, capturedSeries); + } + + if (hasMarkers) { + ttCtx.tooltipPosition.moveMarkers(capturedSeries, j); + } + } + } + }]); + + return Tooltip; + }(); + + var BarDataLabels = /*#__PURE__*/function () { + function BarDataLabels(barCtx) { + _classCallCheck(this, BarDataLabels); + + this.w = barCtx.w; + this.barCtx = barCtx; + this.totalFormatter = this.w.config.plotOptions.bar.dataLabels.total.formatter; + + if (!this.totalFormatter) { + this.totalFormatter = this.w.config.dataLabels.formatter; + } + } + /** handleBarDataLabels is used to calculate the positions for the data-labels + * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels() + * After calculating, it also calls the function to draw data labels + * @memberof Bar + * @param {object} {barProps} most of the bar properties used throughout the bar + * drawing function + * @return {object} dataLabels node-element which you can append later + **/ + + + _createClass(BarDataLabels, [{ + key: "handleBarDataLabels", + value: function handleBarDataLabels(opts) { + var x = opts.x, + y = opts.y, + y1 = opts.y1, + y2 = opts.y2, + i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + groupIndex = opts.groupIndex, + series = opts.series, + barHeight = opts.barHeight, + barWidth = opts.barWidth, + barYPosition = opts.barYPosition, + visibleSeries = opts.visibleSeries, + renderedPath = opts.renderedPath; + var w = this.w; + var graphics = new Graphics(this.barCtx.ctx); + var strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth; + var bcx = x + parseFloat(barWidth * visibleSeries); + var bcy = y + parseFloat(barHeight * visibleSeries); + + if (w.globals.isXNumeric && !w.globals.isBarHorizontal) { + bcx = x + parseFloat(barWidth * (visibleSeries + 1)); + bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth; + } + + var dataLabels = null; + var totalDataLabels = null; + var dataLabelsX = x; + var dataLabelsY = y; + var dataLabelsPos = {}; + var dataLabelsConfig = w.config.dataLabels; + var barDataLabelsConfig = this.barCtx.barOptions.dataLabels; + var barTotalDataLabelsConfig = this.barCtx.barOptions.dataLabels.total; + + if (typeof barYPosition !== 'undefined' && this.barCtx.isRangeBar) { + bcy = barYPosition; + dataLabelsY = barYPosition; + } + + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + var textRects = { + width: 0, + height: 0 + }; + + if (w.config.dataLabels.enabled) { + var yLabel = this.barCtx.series[i][j]; + textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](yLabel), parseFloat(dataLabelsConfig.style.fontSize)); + } + + var params = { + x: x, + y: y, + i: i, + j: j, + realIndex: realIndex, + groupIndex: !!groupIndex ? groupIndex : -1, + renderedPath: renderedPath, + bcx: bcx, + bcy: bcy, + barHeight: barHeight, + barWidth: barWidth, + textRects: textRects, + strokeWidth: strokeWidth, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + dataLabelsConfig: dataLabelsConfig, + barDataLabelsConfig: barDataLabelsConfig, + barTotalDataLabelsConfig: barTotalDataLabelsConfig, + offX: offX, + offY: offY + }; + + if (this.barCtx.isHorizontal) { + dataLabelsPos = this.calculateBarsDataLabelsPosition(params); + } else { + dataLabelsPos = this.calculateColumnsDataLabelsPosition(params); + } + + renderedPath.attr({ + cy: dataLabelsPos.bcy, + cx: dataLabelsPos.bcx, + j: j, + val: series[i][j], + barHeight: barHeight, + barWidth: barWidth + }); + dataLabels = this.drawCalculatedDataLabels({ + x: dataLabelsPos.dataLabelsX, + y: dataLabelsPos.dataLabelsY, + val: this.barCtx.isRangeBar ? [y1, y2] : series[i][j], + i: realIndex, + j: j, + barWidth: barWidth, + barHeight: barHeight, + textRects: textRects, + dataLabelsConfig: dataLabelsConfig + }); + + if (w.config.chart.stacked && barTotalDataLabelsConfig.enabled) { + totalDataLabels = this.drawTotalDataLabels({ + x: dataLabelsPos.totalDataLabelsX, + y: dataLabelsPos.totalDataLabelsY, + realIndex: realIndex, + textAnchor: dataLabelsPos.totalDataLabelsAnchor, + val: this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), + dataLabelsConfig: dataLabelsConfig, + barTotalDataLabelsConfig: barTotalDataLabelsConfig + }); + } + + return { + dataLabels: dataLabels, + totalDataLabels: totalDataLabels + }; + } + }, { + key: "getStackedTotalDataLabel", + value: function getStackedTotalDataLabel(_ref) { + var realIndex = _ref.realIndex, + j = _ref.j; + var w = this.w; + var val = this.barCtx.stackedSeriesTotals[j]; + + if (this.totalFormatter) { + val = this.totalFormatter(val, _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: realIndex, + dataPointIndex: j, + w: w + })); + } + + return val; + } + }, { + key: "calculateColumnsDataLabelsPosition", + value: function calculateColumnsDataLabelsPosition(opts) { + var w = this.w; + var i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + groupIndex = opts.groupIndex, + y = opts.y, + bcx = opts.bcx, + barWidth = opts.barWidth, + barHeight = opts.barHeight, + textRects = opts.textRects, + dataLabelsY = opts.dataLabelsY, + dataLabelsConfig = opts.dataLabelsConfig, + barDataLabelsConfig = opts.barDataLabelsConfig, + barTotalDataLabelsConfig = opts.barTotalDataLabelsConfig, + strokeWidth = opts.strokeWidth, + offX = opts.offX, + offY = opts.offY; + var dataLabelsX; + var totalDataLabelsY; + var totalDataLabelsX; + var totalDataLabelsAnchor = 'middle'; + barHeight = Math.abs(barHeight); + var vertical = w.config.plotOptions.bar.dataLabels.orientation === 'vertical'; + bcx = bcx - strokeWidth / 2 + (groupIndex !== -1 ? groupIndex * barWidth : 0); + var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints; + + if (w.globals.isXNumeric) { + dataLabelsX = bcx - barWidth / 2 + offX; + } else { + dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX; + } + + if (vertical) { + var offsetDLX = 2; + dataLabelsX = dataLabelsX + textRects.height / 2 - strokeWidth / 2 - offsetDLX; + } + + var valIsNegative = this.barCtx.series[i][j] < 0; + var newY = y; + + if (this.barCtx.isReversed) { + newY = y - barHeight + (valIsNegative ? barHeight * 2 : 0); + y = y - barHeight; + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight / 2 + offY; + } else { + dataLabelsY = newY + barHeight / 2 - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - barHeight / 2 + textRects.height / 2 + offY; + } else { + dataLabelsY = newY + barHeight / 2 + textRects.height / 2 - offY; + } + } + + break; + + case 'bottom': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight + offY; + } else { + dataLabelsY = newY + barHeight - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - barHeight + textRects.height + strokeWidth + offY; + } else { + dataLabelsY = newY + barHeight - textRects.height / 2 + strokeWidth - offY; + } + } + + break; + + case 'top': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + offY; + } else { + dataLabelsY = newY - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - textRects.height / 2 - offY; + } else { + dataLabelsY = newY + textRects.height + offY; + } + } + + break; + } + + if (this.barCtx.lastActiveBarSerieIndex === realIndex && barTotalDataLabelsConfig.enabled) { + var ADDITIONAL_OFFX = 18; + var graphics = new Graphics(this.barCtx.ctx); + var totalLabeltextRects = graphics.getTextRects(this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), dataLabelsConfig.fontSize); + + if (valIsNegative) { + totalDataLabelsY = newY - totalLabeltextRects.height / 2 - offY - barTotalDataLabelsConfig.offsetY + ADDITIONAL_OFFX; + } else { + totalDataLabelsY = newY + totalLabeltextRects.height + offY + barTotalDataLabelsConfig.offsetY - ADDITIONAL_OFFX; + } + + totalDataLabelsX = dataLabelsX + barTotalDataLabelsConfig.offsetX; + } + + if (!w.config.chart.stacked) { + if (dataLabelsY < 0) { + dataLabelsY = 0 + strokeWidth; + } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) { + dataLabelsY = w.globals.gridHeight - strokeWidth; + } + } + + return { + bcx: bcx, + bcy: y, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + totalDataLabelsX: totalDataLabelsX, + totalDataLabelsY: totalDataLabelsY, + totalDataLabelsAnchor: totalDataLabelsAnchor + }; + } + }, { + key: "calculateBarsDataLabelsPosition", + value: function calculateBarsDataLabelsPosition(opts) { + var w = this.w; + var x = opts.x, + i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + groupIndex = opts.groupIndex, + bcy = opts.bcy, + barHeight = opts.barHeight, + barWidth = opts.barWidth, + textRects = opts.textRects, + dataLabelsX = opts.dataLabelsX, + strokeWidth = opts.strokeWidth, + dataLabelsConfig = opts.dataLabelsConfig, + barDataLabelsConfig = opts.barDataLabelsConfig, + barTotalDataLabelsConfig = opts.barTotalDataLabelsConfig, + offX = opts.offX, + offY = opts.offY; + var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints; + barWidth = Math.abs(barWidth); + bcy = bcy + (groupIndex !== -1 ? groupIndex * barHeight : 0); + var dataLabelsY = bcy - (this.barCtx.isRangeBar ? 0 : dataPointsDividedHeight) + barHeight / 2 + textRects.height / 2 + offY - 3; + var totalDataLabelsX; + var totalDataLabelsY; + var totalDataLabelsAnchor = 'start'; + var valIsNegative = this.barCtx.series[i][j] < 0; + var newX = x; + + if (this.barCtx.isReversed) { + newX = x + barWidth - (valIsNegative ? barWidth * 2 : 0); + x = w.globals.gridWidth - barWidth; + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (valIsNegative) { + dataLabelsX = newX + barWidth / 2 - offX; + } else { + dataLabelsX = Math.max(textRects.width / 2, newX - barWidth / 2) + offX; + } + + break; + + case 'bottom': + if (valIsNegative) { + dataLabelsX = newX + barWidth - strokeWidth - Math.round(textRects.width / 2) - offX; + } else { + dataLabelsX = newX - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX; + } + + break; + + case 'top': + if (valIsNegative) { + dataLabelsX = newX - strokeWidth + Math.round(textRects.width / 2) - offX; + } else { + dataLabelsX = newX - strokeWidth - Math.round(textRects.width / 2) + offX; + } + + break; + } + + if (this.barCtx.lastActiveBarSerieIndex === realIndex && barTotalDataLabelsConfig.enabled) { + var ADDITIONAL_OFFX = 15; + var graphics = new Graphics(this.barCtx.ctx); + var totalLabeltextRects = graphics.getTextRects(this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), dataLabelsConfig.fontSize); + + if (valIsNegative) { + totalDataLabelsX = newX - strokeWidth + Math.round(totalLabeltextRects.width / 2) - offX - barTotalDataLabelsConfig.offsetX - ADDITIONAL_OFFX; + totalDataLabelsAnchor = 'end'; + } else { + totalDataLabelsX = newX - strokeWidth - Math.round(totalLabeltextRects.width / 2) + offX + barTotalDataLabelsConfig.offsetX + ADDITIONAL_OFFX; + } + + totalDataLabelsY = dataLabelsY + barTotalDataLabelsConfig.offsetY; + } + + if (!w.config.chart.stacked) { + if (dataLabelsX < 0) { + dataLabelsX = dataLabelsX + textRects.width + strokeWidth; + } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) { + dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth; + } + } + + return { + bcx: x, + bcy: bcy, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + totalDataLabelsX: totalDataLabelsX, + totalDataLabelsY: totalDataLabelsY, + totalDataLabelsAnchor: totalDataLabelsAnchor + }; + } + }, { + key: "drawCalculatedDataLabels", + value: function drawCalculatedDataLabels(_ref2) { + var x = _ref2.x, + y = _ref2.y, + val = _ref2.val, + i = _ref2.i, + j = _ref2.j, + textRects = _ref2.textRects, + barHeight = _ref2.barHeight, + barWidth = _ref2.barWidth, + dataLabelsConfig = _ref2.dataLabelsConfig; + var w = this.w; + var rotate = 'rotate(0)'; + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') rotate = "rotate(-90, ".concat(x, ", ").concat(y, ")"); + var dataLabels = new DataLabels(this.barCtx.ctx); + var graphics = new Graphics(this.barCtx.ctx); + var formatter = dataLabelsConfig.formatter; + var elDataLabelsWrap = null; + var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1; + + if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels', + transform: rotate + }); + var text = ''; + + if (typeof val !== 'undefined') { + text = formatter(val, _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: i, + dataPointIndex: j, + w: w + })); + } + + if (!val && w.config.plotOptions.bar.hideZeroBarsWhenGrouped) { + text = ''; + } + + var valIsNegative = w.globals.series[i][j] < 0; + var position = w.config.plotOptions.bar.dataLabels.position; + + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') { + if (position === 'top') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start'; + } + + if (position === 'center') { + dataLabelsConfig.textAnchor = 'middle'; + } + + if (position === 'bottom') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start'; + } + } + + if (this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) { + // hide the datalabel if it cannot fit into the rect + var txRect = graphics.getTextRects(text, parseFloat(dataLabelsConfig.style.fontSize)); + + if (barWidth < txRect.width) { + text = ''; + } + } + + if (w.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) { + // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect + // Note: This issue is only seen in stacked charts + if (this.barCtx.isHorizontal) { + if (textRects.width / 1.6 > Math.abs(barWidth)) { + text = ''; + } + } else { + if (textRects.height / 1.6 > Math.abs(barHeight)) { + text = ''; + } + } + } + + var modifiedDataLabelsConfig = _objectSpread2({}, dataLabelsConfig); + + if (this.barCtx.isHorizontal) { + if (val < 0) { + if (dataLabelsConfig.textAnchor === 'start') { + modifiedDataLabelsConfig.textAnchor = 'end'; + } else if (dataLabelsConfig.textAnchor === 'end') { + modifiedDataLabelsConfig.textAnchor = 'start'; + } + } + } + + dataLabels.plotDataLabelsText({ + x: x, + y: y, + text: text, + i: i, + j: j, + parent: elDataLabelsWrap, + dataLabelsConfig: modifiedDataLabelsConfig, + alwaysDrawDataLabel: true, + offsetCorrection: true + }); + } + + return elDataLabelsWrap; + } + }, { + key: "drawTotalDataLabels", + value: function drawTotalDataLabels(_ref3) { + var x = _ref3.x, + y = _ref3.y, + val = _ref3.val, + realIndex = _ref3.realIndex, + textAnchor = _ref3.textAnchor, + barTotalDataLabelsConfig = _ref3.barTotalDataLabelsConfig; + var graphics = new Graphics(this.barCtx.ctx); + var totalDataLabelText; + + if (barTotalDataLabelsConfig.enabled && typeof x !== 'undefined' && typeof y !== 'undefined' && this.barCtx.lastActiveBarSerieIndex === realIndex) { + totalDataLabelText = graphics.drawText({ + x: x, + y: y, + foreColor: barTotalDataLabelsConfig.style.color, + text: val, + textAnchor: textAnchor, + fontFamily: barTotalDataLabelsConfig.style.fontFamily, + fontSize: barTotalDataLabelsConfig.style.fontSize, + fontWeight: barTotalDataLabelsConfig.style.fontWeight + }); + } + + return totalDataLabelText; + } + }]); + + return BarDataLabels; + }(); + + var Helpers$1 = /*#__PURE__*/function () { + function Helpers(barCtx) { + _classCallCheck(this, Helpers); + + this.w = barCtx.w; + this.barCtx = barCtx; + } + + _createClass(Helpers, [{ + key: "initVariables", + value: function initVariables(series) { + var w = this.w; + this.barCtx.series = series; + this.barCtx.totalItems = 0; + this.barCtx.seriesLen = 0; + this.barCtx.visibleI = -1; // visible Series + + this.barCtx.visibleItems = 1; // number of visible bars after user zoomed in/out + + for (var sl = 0; sl < series.length; sl++) { + if (series[sl].length > 0) { + this.barCtx.seriesLen = this.barCtx.seriesLen + 1; + this.barCtx.totalItems += series[sl].length; + } + + if (w.globals.isXNumeric) { + // get max visible items + for (var j = 0; j < series[sl].length; j++) { + if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) { + this.barCtx.visibleItems++; + } + } + } else { + this.barCtx.visibleItems = w.globals.dataPoints; + } + } + + if (this.barCtx.seriesLen === 0) { + // A small adjustment when combo charts are used + this.barCtx.seriesLen = 1; + } + + this.barCtx.zeroSerieses = []; + + if (!w.globals.comboCharts) { + this.checkZeroSeries({ + series: series + }); + } + } + }, { + key: "initialPositions", + value: function initialPositions() { + var w = this.w; + var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW; + var dataPoints = w.globals.dataPoints; + + if (this.barCtx.isRangeBar) { + // timeline rangebar chart + dataPoints = w.globals.labels.length; + } + + var seriesLen = this.barCtx.seriesLen; + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1; + } + + if (this.barCtx.isHorizontal) { + // height divided into equal parts + yDivision = w.globals.gridHeight / dataPoints; + barHeight = yDivision / seriesLen; + + if (w.globals.isXNumeric) { + yDivision = w.globals.gridHeight / this.barCtx.totalItems; + barHeight = yDivision / this.barCtx.seriesLen; + } + + barHeight = barHeight * parseInt(this.barCtx.barOptions.barHeight, 10) / 100; + + if (String(this.barCtx.barOptions.barHeight).indexOf('%') === -1) { + barHeight = parseInt(this.barCtx.barOptions.barHeight, 10); + } + + zeroW = this.barCtx.baseLineInvertedY + w.globals.padHorizontal + (this.barCtx.isReversed ? w.globals.gridWidth : 0) - (this.barCtx.isReversed ? this.barCtx.baseLineInvertedY * 2 : 0); + y = (yDivision - barHeight * this.barCtx.seriesLen) / 2; + } else { + // width divided into equal parts + xDivision = w.globals.gridWidth / this.barCtx.visibleItems; + + if (w.config.xaxis.convertedCatToNumeric) { + xDivision = w.globals.gridWidth / w.globals.dataPoints; + } + + barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100; + + if (w.globals.isXNumeric) { + // max barwidth should be equal to minXDiff to avoid overlap + var xRatio = this.barCtx.xRatio; + + if (w.config.xaxis.convertedCatToNumeric) { + xRatio = this.barCtx.initialXRatio; + } + + if (w.globals.minXDiff && w.globals.minXDiff !== 0.5 && w.globals.minXDiff / xRatio > 0) { + xDivision = w.globals.minXDiff / xRatio; + } + + barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100; + + if (barWidth < 1) { + barWidth = 1; + } + } + + if (String(this.barCtx.barOptions.columnWidth).indexOf('%') === -1) { + barWidth = parseInt(this.barCtx.barOptions.columnWidth, 10); + } + + zeroH = w.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? w.globals.gridHeight : 0) + (this.barCtx.isReversed ? this.barCtx.baseLineY[this.barCtx.yaxisIndex] * 2 : 0); + x = w.globals.padHorizontal + (xDivision - barWidth * this.barCtx.seriesLen) / 2; + } + + return { + x: x, + y: y, + yDivision: yDivision, + xDivision: xDivision, + barHeight: barHeight, + barWidth: barWidth, + zeroH: zeroH, + zeroW: zeroW + }; + } + }, { + key: "initializeStackedPrevVars", + value: function initializeStackedPrevVars(ctx) { + var w = ctx.w; + + if (w.globals.hasSeriesGroups) { + w.globals.seriesGroups.forEach(function (group) { + if (!ctx[group]) ctx[group] = {}; + ctx[group].prevY = []; + ctx[group].prevX = []; + ctx[group].prevYF = []; + ctx[group].prevXF = []; + ctx[group].prevYVal = []; + ctx[group].prevXVal = []; + }); + } else { + ctx.prevY = []; // y position on chart (in columns) + + ctx.prevX = []; // x position on chart (in horz bars) + + ctx.prevYF = []; // starting y and ending y (height) in columns + + ctx.prevXF = []; // starting x and ending x (width) in bars + + ctx.prevYVal = []; // y values (series[i][j]) in columns + + ctx.prevXVal = []; // x values (series[i][j]) in bars + } + } + }, { + key: "initializeStackedXYVars", + value: function initializeStackedXYVars(ctx) { + var w = ctx.w; + + if (w.globals.hasSeriesGroups) { + w.globals.seriesGroups.forEach(function (group) { + if (!ctx[group]) ctx[group] = {}; + ctx[group].xArrj = []; + ctx[group].xArrjF = []; + ctx[group].xArrjVal = []; + ctx[group].yArrj = []; + ctx[group].yArrjF = []; + ctx[group].yArrjVal = []; + }); + } else { + ctx.xArrj = []; // xj indicates x position on graph in bars + + ctx.xArrjF = []; // xjF indicates bar's x position + x2 positions in bars + + ctx.xArrjVal = []; // x val means the actual series's y values in horizontal/bars + + ctx.yArrj = []; // yj indicates y position on graph in columns + + ctx.yArrjF = []; // yjF indicates bar's y position + y2 positions in columns + + ctx.yArrjVal = []; // y val means the actual series's y values in columns + } + } + }, { + key: "getPathFillColor", + value: function getPathFillColor(series, i, j, realIndex) { + var _w$config$series$i$da, _w$config$series$i$da2, _w$config$series$i$da3, _w$config$series$i$da4; + + var w = this.w; + var fill = new Fill(this.barCtx.ctx); + var fillColor = null; + var seriesNumber = this.barCtx.barOptions.distributed ? j : i; + + if (this.barCtx.barOptions.colors.ranges.length > 0) { + var colorRange = this.barCtx.barOptions.colors.ranges; + colorRange.map(function (range) { + if (series[i][j] >= range.from && series[i][j] <= range.to) { + fillColor = range.color; + } + }); + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) { + fillColor = w.config.series[i].data[j].fillColor; + } + + var pathFill = fill.fillPath({ + seriesNumber: this.barCtx.barOptions.distributed ? seriesNumber : realIndex, + dataPointIndex: j, + color: fillColor, + value: series[i][j], + fillConfig: (_w$config$series$i$da = w.config.series[i].data[j]) === null || _w$config$series$i$da === void 0 ? void 0 : _w$config$series$i$da.fill, + fillType: (_w$config$series$i$da2 = w.config.series[i].data[j]) !== null && _w$config$series$i$da2 !== void 0 && (_w$config$series$i$da3 = _w$config$series$i$da2.fill) !== null && _w$config$series$i$da3 !== void 0 && _w$config$series$i$da3.type ? (_w$config$series$i$da4 = w.config.series[i].data[j]) === null || _w$config$series$i$da4 === void 0 ? void 0 : _w$config$series$i$da4.fill.type : w.config.fill.type + }); + return pathFill; + } + }, { + key: "getStrokeWidth", + value: function getStrokeWidth(i, j, realIndex) { + var strokeWidth = 0; + var w = this.w; + + if (!this.barCtx.series[i][j]) { + this.barCtx.isNullValue = true; + } else { + this.barCtx.isNullValue = false; + } + + if (w.config.stroke.show) { + if (!this.barCtx.isNullValue) { + strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth; + } + } + + return strokeWidth; + } + }, { + key: "shouldApplyRadius", + value: function shouldApplyRadius(realIndex) { + var w = this.w; + var applyRadius = false; + + if (w.config.plotOptions.bar.borderRadius > 0) { + if (w.config.chart.stacked) { + if (w.config.plotOptions.bar.borderRadiusWhenStacked === 'last') { + if (this.barCtx.lastActiveBarSerieIndex === realIndex) { + applyRadius = true; + } + } else { + applyRadius = true; + } + } else { + applyRadius = true; + } + } + + return applyRadius; + } + }, { + key: "barBackground", + value: function barBackground(_ref) { + var j = _ref.j, + i = _ref.i, + x1 = _ref.x1, + x2 = _ref.x2, + y1 = _ref.y1, + y2 = _ref.y2, + elSeries = _ref.elSeries; + var w = this.w; + var graphics = new Graphics(this.barCtx.ctx); + var sr = new Series(this.barCtx.ctx); + var activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && activeSeriesIndex === i) { + if (j >= this.barCtx.barOptions.colors.backgroundBarColors.length) { + j %= this.barCtx.barOptions.colors.backgroundBarColors.length; + } + + var bcolor = this.barCtx.barOptions.colors.backgroundBarColors[j]; + var rect = graphics.drawRect(typeof x1 !== 'undefined' ? x1 : 0, typeof y1 !== 'undefined' ? y1 : 0, typeof x2 !== 'undefined' ? x2 : w.globals.gridWidth, typeof y2 !== 'undefined' ? y2 : w.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, bcolor, this.barCtx.barOptions.colors.backgroundBarOpacity); + elSeries.add(rect); + rect.node.classList.add('apexcharts-backgroundBar'); + } + } + }, { + key: "getColumnPaths", + value: function getColumnPaths(_ref2) { + var _w$config$series$real; + + var barWidth = _ref2.barWidth, + barXPosition = _ref2.barXPosition, + y1 = _ref2.y1, + y2 = _ref2.y2, + strokeWidth = _ref2.strokeWidth, + seriesGroup = _ref2.seriesGroup, + realIndex = _ref2.realIndex, + i = _ref2.i, + j = _ref2.j, + w = _ref2.w; + var graphics = new Graphics(this.barCtx.ctx); + strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth; + if (!strokeWidth) strokeWidth = 0; + var bW = barWidth; + var bXP = barXPosition; + + if ((_w$config$series$real = w.config.series[realIndex].data[j]) !== null && _w$config$series$real !== void 0 && _w$config$series$real.columnWidthOffset) { + bXP = barXPosition - w.config.series[realIndex].data[j].columnWidthOffset / 2; + bW = barWidth + w.config.series[realIndex].data[j].columnWidthOffset; + } + + var x1 = bXP; + var x2 = bXP + bW; // append tiny pixels to avoid exponentials (which cause issues in border-radius) + + y1 += 0.001; + y2 += 0.001; + var pathTo = graphics.move(x1, y1); + var pathFrom = graphics.move(x1, y1); + var sl = graphics.line(x2 - strokeWidth, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false); + } + + pathTo = pathTo + graphics.line(x1, y2) + graphics.line(x2 - strokeWidth, y2) + graphics.line(x2 - strokeWidth, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); // the lines in pathFrom are repeated to equal it to the points of pathTo + // this is to avoid weird animation (bug in svg.js) + + pathFrom = pathFrom + graphics.line(x1, y1) + sl + sl + sl + sl + sl + graphics.line(x1, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + + if (this.shouldApplyRadius(realIndex)) { + pathTo = graphics.roundPathCorners(pathTo, w.config.plotOptions.bar.borderRadius); + } + + if (w.config.chart.stacked) { + var _ctx = this.barCtx; + + if (w.globals.hasSeriesGroups && seriesGroup) { + _ctx = this.barCtx[seriesGroup]; + } + + _ctx.yArrj.push(y2); + + _ctx.yArrjF.push(Math.abs(y1 - y2)); + + _ctx.yArrjVal.push(this.barCtx.series[i][j]); + } + + return { + pathTo: pathTo, + pathFrom: pathFrom + }; + } + }, { + key: "getBarpaths", + value: function getBarpaths(_ref3) { + var _w$config$series$real2; + + var barYPosition = _ref3.barYPosition, + barHeight = _ref3.barHeight, + x1 = _ref3.x1, + x2 = _ref3.x2, + strokeWidth = _ref3.strokeWidth, + seriesGroup = _ref3.seriesGroup, + realIndex = _ref3.realIndex, + i = _ref3.i, + j = _ref3.j, + w = _ref3.w; + var graphics = new Graphics(this.barCtx.ctx); + strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth; + if (!strokeWidth) strokeWidth = 0; + var bYP = barYPosition; + var bH = barHeight; + + if ((_w$config$series$real2 = w.config.series[realIndex].data[j]) !== null && _w$config$series$real2 !== void 0 && _w$config$series$real2.barHeightOffset) { + bYP = barYPosition - w.config.series[realIndex].data[j].barHeightOffset / 2; + bH = barHeight + w.config.series[realIndex].data[j].barHeightOffset; + } + + var y1 = bYP; + var y2 = bYP + bH; // append tiny pixels to avoid exponentials (which cause issues in border-radius) + + x1 += 0.001; + x2 += 0.001; + var pathTo = graphics.move(x1, y1); + var pathFrom = graphics.move(x1, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false); + } + + var sl = graphics.line(x1, y2 - strokeWidth); + pathTo = pathTo + graphics.line(x2, y1) + graphics.line(x2, y2 - strokeWidth) + sl + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + pathFrom = pathFrom + graphics.line(x1, y1) + sl + sl + sl + sl + sl + graphics.line(x1, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + + if (this.shouldApplyRadius(realIndex)) { + pathTo = graphics.roundPathCorners(pathTo, w.config.plotOptions.bar.borderRadius); + } + + if (w.config.chart.stacked) { + var _ctx = this.barCtx; + + if (w.globals.hasSeriesGroups && seriesGroup) { + _ctx = this.barCtx[seriesGroup]; + } + + _ctx.xArrj.push(x2); + + _ctx.xArrjF.push(Math.abs(x1 - x2)); + + _ctx.xArrjVal.push(this.barCtx.series[i][j]); + } + + return { + pathTo: pathTo, + pathFrom: pathFrom + }; + } + }, { + key: "checkZeroSeries", + value: function checkZeroSeries(_ref4) { + var series = _ref4.series; + var w = this.w; + + for (var zs = 0; zs < series.length; zs++) { + var total = 0; + + for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) { + total += series[zs][zsj]; + } + + if (total === 0) { + this.barCtx.zeroSerieses.push(zs); + } + } + } + }, { + key: "getXForValue", + value: function getXForValue(value, zeroW) { + var zeroPositionForNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var xForVal = zeroPositionForNull ? zeroW : null; + + if (typeof value !== 'undefined' && value !== null) { + xForVal = zeroW + value / this.barCtx.invertedYRatio - (this.barCtx.isReversed ? value / this.barCtx.invertedYRatio : 0) * 2; + } + + return xForVal; + } + }, { + key: "getYForValue", + value: function getYForValue(value, zeroH) { + var zeroPositionForNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var yForVal = zeroPositionForNull ? zeroH : null; + + if (typeof value !== 'undefined' && value !== null) { + yForVal = zeroH - value / this.barCtx.yRatio[this.barCtx.yaxisIndex] + (this.barCtx.isReversed ? value / this.barCtx.yRatio[this.barCtx.yaxisIndex] : 0) * 2; + } + + return yForVal; + } + }, { + key: "getGoalValues", + value: function getGoalValues(type, zeroW, zeroH, i, j) { + var _this = this; + + var w = this.w; + var goals = []; + + var pushGoal = function pushGoal(value, attrs) { + var _goals$push; + + goals.push((_goals$push = {}, _defineProperty(_goals$push, type, type === 'x' ? _this.getXForValue(value, zeroW, false) : _this.getYForValue(value, zeroH, false)), _defineProperty(_goals$push, "attrs", attrs), _goals$push)); + }; + + if (w.globals.seriesGoals[i] && w.globals.seriesGoals[i][j] && Array.isArray(w.globals.seriesGoals[i][j])) { + w.globals.seriesGoals[i][j].forEach(function (goal) { + pushGoal(goal.value, goal); + }); + } + + if (this.barCtx.barOptions.isDumbbell && w.globals.seriesRange.length) { + var colors = this.barCtx.barOptions.dumbbellColors ? this.barCtx.barOptions.dumbbellColors : w.globals.colors; + var commonAttrs = { + strokeHeight: type === 'x' ? 0 : w.globals.markers.size[i], + strokeWidth: type === 'x' ? w.globals.markers.size[i] : 0, + strokeDashArray: 0, + strokeLineCap: 'round', + strokeColor: Array.isArray(colors[i]) ? colors[i][0] : colors[i] + }; + pushGoal(w.globals.seriesRangeStart[i][j], commonAttrs); + pushGoal(w.globals.seriesRangeEnd[i][j], _objectSpread2(_objectSpread2({}, commonAttrs), {}, { + strokeColor: Array.isArray(colors[i]) ? colors[i][1] : colors[i] + })); + } + + return goals; + } + }, { + key: "drawGoalLine", + value: function drawGoalLine(_ref5) { + var barXPosition = _ref5.barXPosition, + barYPosition = _ref5.barYPosition, + goalX = _ref5.goalX, + goalY = _ref5.goalY, + barWidth = _ref5.barWidth, + barHeight = _ref5.barHeight; + var graphics = new Graphics(this.barCtx.ctx); + var lineGroup = graphics.group({ + className: 'apexcharts-bar-goals-groups' + }); + lineGroup.node.classList.add('apexcharts-element-hidden'); + this.barCtx.w.globals.delayedElements.push({ + el: lineGroup.node + }); + lineGroup.attr('clip-path', "url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid, ")")); + var line = null; + + if (this.barCtx.isHorizontal) { + if (Array.isArray(goalX)) { + goalX.forEach(function (goal) { + var sHeight = typeof goal.attrs.strokeHeight !== 'undefined' ? goal.attrs.strokeHeight : barHeight / 2; + var y = barYPosition + sHeight + barHeight / 2; + line = graphics.drawLine(goal.x, y - sHeight * 2, goal.x, y, goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, goal.attrs.strokeDashArray, goal.attrs.strokeWidth ? goal.attrs.strokeWidth : 2, goal.attrs.strokeLineCap); + lineGroup.add(line); + }); + } + } else { + if (Array.isArray(goalY)) { + goalY.forEach(function (goal) { + var sWidth = typeof goal.attrs.strokeWidth !== 'undefined' ? goal.attrs.strokeWidth : barWidth / 2; + var x = barXPosition + sWidth + barWidth / 2; + line = graphics.drawLine(x - sWidth * 2, goal.y, x, goal.y, goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, goal.attrs.strokeDashArray, goal.attrs.strokeHeight ? goal.attrs.strokeHeight : 2, goal.attrs.strokeLineCap); + lineGroup.add(line); + }); + } + } + + return lineGroup; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Bar Class responsible for drawing both Columns and Bars. + * + * @module Bar + **/ + + var Bar = /*#__PURE__*/function () { + function Bar(ctx, xyRatios) { + _classCallCheck(this, Bar); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.barOptions = w.config.plotOptions.bar; + this.isHorizontal = this.barOptions.horizontal; + this.strokeWidth = w.config.stroke.width; + this.isNullValue = false; + this.isRangeBar = w.globals.seriesRange.length && this.isHorizontal; + this.xyRatios = xyRatios; + + if (this.xyRatios !== null) { + this.xRatio = xyRatios.xRatio; + this.initialXRatio = xyRatios.initialXRatio; + this.yRatio = xyRatios.yRatio; + this.invertedXRatio = xyRatios.invertedXRatio; + this.invertedYRatio = xyRatios.invertedYRatio; + this.baseLineY = xyRatios.baseLineY; + this.baseLineInvertedY = xyRatios.baseLineInvertedY; + } + + this.yaxisIndex = 0; + this.seriesLen = 0; + var ser = new Series(this.ctx); + this.lastActiveBarSerieIndex = ser.getActiveConfigSeriesIndex('desc', ['bar', 'column']); + var barSeriesIndices = ser.getBarSeriesIndices(); + var coreUtils = new CoreUtils(this.ctx); + this.stackedSeriesTotals = coreUtils.getStackedSeriesTotals(this.w.config.series.map(function (s, i) { + return barSeriesIndices.indexOf(i) === -1 ? i : -1; + }).filter(function (s) { + return s !== -1; + })); + this.barHelpers = new Helpers$1(this); + } + /** primary draw method which is called on bar object + * @memberof Bar + * @param {array} series - user supplied series values + * @param {int} seriesIndex - the index by which series will be drawn on the svg + * @return {node} element which is supplied to parent chart draw method for appending + **/ + + + _createClass(Bar, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.series = series; + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }); + + if (w.config.dataLabels.enabled) { + if (this.totalItems > this.barOptions.dataLabels.maxItems) { + console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.'); + } + } + + for (var i = 0, bc = 0; i < series.length; i++, bc++) { + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + rel: i + 1, + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + 'data:realIndex': realIndex + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; + var initPositions = this.barHelpers.initialPositions(); + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + + if (!this.horizontal) { + xArrj.push(x + barWidth / 2); + } // eldatalabels + + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var elGoalsMarkers = graphics.group({ + class: 'apexcharts-bar-goals-markers', + style: "pointer-events: none" + }); + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex); + var paths = null; + var pathsParams = { + indexes: { + i: i, + j: j, + realIndex: realIndex, + bc: bc + }, + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + + if (this.isHorizontal) { + paths = this.drawBarPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + barHeight: barHeight, + zeroW: zeroW, + yDivision: yDivision + })); + barWidth = this.series[i][j] / this.invertedYRatio; + } else { + paths = this.drawColumnPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex]; + } + + var barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: paths.barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; // push current X + + if (j > 0) { + xArrj.push(x + barWidth / 2); + } + + yArrj.push(y); + var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex); + this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + j: j, + i: i, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: paths.barHeight ? paths.barHeight : barHeight, + barWidth: paths.barWidth ? paths.barWidth : barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'bar' + }); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrj; + w.globals.seriesYvalues[realIndex] = yArrj; + ret.add(elSeries); + } + + return ret; + } + }, { + key: "renderSeries", + value: function renderSeries(_ref) { + var realIndex = _ref.realIndex, + pathFill = _ref.pathFill, + lineFill = _ref.lineFill, + j = _ref.j, + i = _ref.i, + groupIndex = _ref.groupIndex, + pathFrom = _ref.pathFrom, + pathTo = _ref.pathTo, + strokeWidth = _ref.strokeWidth, + elSeries = _ref.elSeries, + x = _ref.x, + y = _ref.y, + y1 = _ref.y1, + y2 = _ref.y2, + series = _ref.series, + barHeight = _ref.barHeight, + barWidth = _ref.barWidth, + barYPosition = _ref.barYPosition, + elDataLabelsWrap = _ref.elDataLabelsWrap, + elGoalsMarkers = _ref.elGoalsMarkers, + visibleSeries = _ref.visibleSeries, + type = _ref.type; + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (!lineFill) { + /* fix apexcharts#341 */ + lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex]; + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) { + lineFill = w.config.series[i].data[j].strokeColor; + } + + if (this.isNullValue) { + pathFill = 'none'; + } + + var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4; + var renderedPath = graphics.renderPaths({ + i: i, + j: j, + realIndex: realIndex, + pathFrom: pathFrom, + pathTo: pathTo, + stroke: lineFill, + strokeWidth: strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: pathFill, + animationDelay: delay, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-".concat(type, "-area") + }); + renderedPath.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + var forecast = w.config.forecastDataPoints; + + if (forecast.count > 0) { + if (j >= w.globals.dataPoints - forecast.count) { + renderedPath.node.setAttribute('stroke-dasharray', forecast.dashArray); + renderedPath.node.setAttribute('stroke-width', forecast.strokeWidth); + renderedPath.node.setAttribute('fill-opacity', forecast.fillOpacity); + } + } + + if (typeof y1 !== 'undefined' && typeof y2 !== 'undefined') { + renderedPath.attr('data-range-y1', y1); + renderedPath.attr('data-range-y2', y2); + } + + var filters = new Filters(this.ctx); + filters.setSelectionFilter(renderedPath, realIndex, j); + elSeries.add(renderedPath); + var barDataLabels = new BarDataLabels(this); + var dataLabelsObj = barDataLabels.handleBarDataLabels({ + x: x, + y: y, + y1: y1, + y2: y2, + i: i, + j: j, + series: series, + realIndex: realIndex, + groupIndex: groupIndex, + barHeight: barHeight, + barWidth: barWidth, + barYPosition: barYPosition, + renderedPath: renderedPath, + visibleSeries: visibleSeries + }); + + if (dataLabelsObj.dataLabels !== null) { + elDataLabelsWrap.add(dataLabelsObj.dataLabels); + } + + if (dataLabelsObj.totalDataLabels) { + elDataLabelsWrap.add(dataLabelsObj.totalDataLabels); + } + + elSeries.add(elDataLabelsWrap); + + if (elGoalsMarkers) { + elSeries.add(elGoalsMarkers); + } + + return elSeries; + } + }, { + key: "drawBarPaths", + value: function drawBarPaths(_ref2) { + var indexes = _ref2.indexes, + barHeight = _ref2.barHeight, + strokeWidth = _ref2.strokeWidth, + zeroW = _ref2.zeroW, + x = _ref2.x, + y = _ref2.y, + yDivision = _ref2.yDivision, + elSeries = _ref2.elSeries; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + var barYPosition; + + if (w.globals.isXNumeric) { + y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight; + barYPosition = y + barHeight * this.visibleI; + } else { + if (w.config.plotOptions.bar.hideZeroBarsWhenGrouped) { + var nonZeroColumns = 0; + var zeroEncounters = 0; + w.globals.seriesPercent.forEach(function (_s, _si) { + if (_s[j]) { + nonZeroColumns++; + } + + if (_si < i && _s[j] === 0) { + zeroEncounters++; + } + }); + + if (nonZeroColumns > 0) { + barHeight = this.seriesLen * barHeight / nonZeroColumns; + } + + barYPosition = y + barHeight * this.visibleI; + barYPosition -= barHeight * zeroEncounters; + } else { + barYPosition = y + barHeight * this.visibleI; + } + } + + x = this.barHelpers.getXForValue(this.series[i][j], zeroW); + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: zeroW, + x2: x, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + this.barHelpers.barBackground({ + j: j, + i: i, + y1: barYPosition - barHeight * this.visibleI, + y2: barHeight * this.seriesLen, + elSeries: elSeries + }); + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x: x, + y: y, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, i, j), + barYPosition: barYPosition, + barHeight: barHeight + }; + } + }, { + key: "drawColumnPaths", + value: function drawColumnPaths(_ref3) { + var indexes = _ref3.indexes, + x = _ref3.x, + y = _ref3.y, + xDivision = _ref3.xDivision, + barWidth = _ref3.barWidth, + zeroH = _ref3.zeroH, + strokeWidth = _ref3.strokeWidth, + elSeries = _ref3.elSeries; + var w = this.w; + var realIndex = indexes.realIndex; + var i = indexes.i; + var j = indexes.j; + var bc = indexes.bc; + var barXPosition; + + if (w.globals.isXNumeric) { + var sxI = realIndex; + + if (!w.globals.seriesX[realIndex].length) { + sxI = w.globals.maxValsInArrayIndex; + } + + if (w.globals.seriesX[sxI][j]) { + x = (w.globals.seriesX[sxI][j] - w.globals.minX) / this.xRatio - barWidth * this.seriesLen / 2; + } // re-calc barXPosition as x changed + + + barXPosition = x + barWidth * this.visibleI; + } else { + if (w.config.plotOptions.bar.hideZeroBarsWhenGrouped) { + var nonZeroColumns = 0; + var zeroEncounters = 0; + w.globals.seriesPercent.forEach(function (_s, _si) { + if (_s[j]) { + nonZeroColumns++; + } + + if (_si < i && _s[j] === 0) { + zeroEncounters++; + } + }); + + if (nonZeroColumns > 0) { + barWidth = this.seriesLen * barWidth / nonZeroColumns; + } + + barXPosition = x + barWidth * this.visibleI; + barXPosition -= barWidth * zeroEncounters; + } else { + barXPosition = x + barWidth * this.visibleI; + } + } + + y = this.barHelpers.getYForValue(this.series[i][j], zeroH); + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: zeroH, + y2: y, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + this.barHelpers.barBackground({ + bc: bc, + j: j, + i: i, + x1: barXPosition - strokeWidth / 2 - barWidth * this.visibleI, + x2: barWidth * this.seriesLen + strokeWidth / 2, + elSeries: elSeries + }); + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x: x, + y: y, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition, + barWidth: barWidth + }; + } + /** getPreviousPath is a common function for bars/columns which is used to get previous paths when data changes. + * @memberof Bar + * @param {int} realIndex - current iterating i + * @param {int} j - current iterating series's j index + * @return {string} pathFrom is the string which will be appended in animations + **/ + + }, { + key: "getPreviousPath", + value: function getPreviousPath(realIndex, j) { + var w = this.w; + var pathFrom; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if (gpp.paths && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[j].d; + } + } + } + + return pathFrom; + } + }]); + + return Bar; + }(); + + /** + * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars. + * + * @module BarStacked + * The whole calculation for stacked bar/column is different from normal bar/column, + * hence it makes sense to derive a new class for it extending most of the props of Parent Bar + **/ + + var BarStacked = /*#__PURE__*/function (_Bar) { + _inherits(BarStacked, _Bar); + + var _super = _createSuper(BarStacked); + + function BarStacked() { + _classCallCheck(this, BarStacked); + + return _super.apply(this, arguments); + } + + _createClass(BarStacked, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var _this = this; + + var w = this.w; + this.graphics = new Graphics(this.ctx); + this.bar = new Bar(this.ctx, this.xyRatios); + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + + if (w.config.chart.stackType === '100%') { + series = w.globals.seriesPercent.slice(); + } + + this.series = series; + this.barHelpers.initializeStackedPrevVars(this); + var ret = this.graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }); + var x = 0; + var y = 0; + + var _loop = function _loop(i, bc) { + var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + + var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + + var zeroH = void 0; // zeroH is the baseline where 0 meets y axis + + var zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var groupIndex = -1; // groupIndex is the index of group buckets (group1, group2, ...) + + _this.groupCtx = _this; + w.globals.seriesGroups.forEach(function (group, gIndex) { + if (group.indexOf(w.config.series[i].name) > -1) { + groupIndex = gIndex; + } + }); + + if (groupIndex !== -1) { + _this.groupCtx = _this[w.globals.seriesGroups[groupIndex]]; + } + + var xArrValues = []; + var yArrValues = []; + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; + + if (_this.yRatio.length > 1) { + _this.yaxisIndex = realIndex; + } + + _this.isReversed = w.config.yaxis[_this.yaxisIndex] && w.config.yaxis[_this.yaxisIndex].reversed; // el to which series will be drawn + + var elSeries = _this.graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + + _this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); // eldatalabels + + + var elDataLabelsWrap = _this.graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + + var elGoalsMarkers = _this.graphics.group({ + class: 'apexcharts-bar-goals-markers', + style: "pointer-events: none" + }); + + var barHeight = 0; + var barWidth = 0; + + var initPositions = _this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW); + + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + + _this.barHelpers.initializeStackedXYVars(_this); // where all stack bar disappear after collapsing the first series + + + if (_this.groupCtx.prevY.length === 1 && _this.groupCtx.prevY[0].every(function (val) { + return isNaN(val); + })) { + _this.groupCtx.prevY[0] = _this.groupCtx.prevY[0].map(function (val) { + return zeroH; + }); + _this.groupCtx.prevYF[0] = _this.groupCtx.prevYF[0].map(function (val) { + return 0; + }); + } + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = _this.barHelpers.getStrokeWidth(i, j, realIndex); + + var commonPathOpts = { + indexes: { + i: i, + j: j, + realIndex: realIndex, + bc: bc + }, + strokeWidth: strokeWidth, + x: x, + y: y, + elSeries: elSeries, + groupIndex: groupIndex, + seriesGroup: w.globals.seriesGroups[groupIndex] + }; + var paths = null; + + if (_this.isHorizontal) { + paths = _this.drawStackedBarPaths(_objectSpread2(_objectSpread2({}, commonPathOpts), {}, { + zeroW: zeroW, + barHeight: barHeight, + yDivision: yDivision + })); + barWidth = _this.series[i][j] / _this.invertedYRatio; + } else { + paths = _this.drawStackedColumnPaths(_objectSpread2(_objectSpread2({}, commonPathOpts), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + barHeight = _this.series[i][j] / _this.yRatio[_this.yaxisIndex]; + } + + var barGoalLine = _this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: paths.barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; + xArrValues.push(x); + yArrValues.push(y); + + var pathFill = _this.barHelpers.getPathFillColor(series, i, j, realIndex); + + elSeries = _this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + j: j, + i: i, + groupIndex: groupIndex, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: barHeight, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + type: 'bar', + visibleSeries: 0 + }); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrValues; + w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array + + _this.groupCtx.prevY.push(_this.groupCtx.yArrj); + + _this.groupCtx.prevYF.push(_this.groupCtx.yArrjF); + + _this.groupCtx.prevYVal.push(_this.groupCtx.yArrjVal); + + _this.groupCtx.prevX.push(_this.groupCtx.xArrj); + + _this.groupCtx.prevXF.push(_this.groupCtx.xArrjF); + + _this.groupCtx.prevXVal.push(_this.groupCtx.xArrjVal); + + ret.add(elSeries); + }; + + for (var i = 0, bc = 0; i < series.length; i++, bc++) { + _loop(i, bc); + } + + return ret; + } + }, { + key: "initialPositions", + value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) { + var w = this.w; + var barHeight, barWidth; + + if (this.isHorizontal) { + var _w$globals$seriesGrou; + + // height divided into equal parts + yDivision = w.globals.gridHeight / w.globals.dataPoints; + barHeight = yDivision; + barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight, 10) / 100; + + if ((_w$globals$seriesGrou = w.globals.seriesGroups) !== null && _w$globals$seriesGrou !== void 0 && _w$globals$seriesGrou.length) { + barHeight = barHeight / w.globals.seriesGroups.length; + } + + if (String(w.config.plotOptions.bar.barHeight).indexOf('%') === -1) { + barHeight = parseInt(w.config.plotOptions.bar.barHeight, 10); + } + + zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars + + y = (yDivision - barHeight) / 2; + } else { + var _w$globals$seriesGrou2; + + // width divided into equal parts + xDivision = w.globals.gridWidth / w.globals.dataPoints; + barWidth = xDivision; + + if (w.globals.isXNumeric && w.globals.dataPoints > 1) { + // the check (w.globals.dataPoints > 1) fixes apexcharts.js #1617 + xDivision = w.globals.minXDiff / this.xRatio; + barWidth = xDivision * parseInt(this.barOptions.columnWidth, 10) / 100; + } else { + barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100; + } + + if ((_w$globals$seriesGrou2 = w.globals.seriesGroups) !== null && _w$globals$seriesGrou2 !== void 0 && _w$globals$seriesGrou2.length) { + barWidth = barWidth / w.globals.seriesGroups.length; + } + + if (String(w.config.plotOptions.bar.columnWidth).indexOf('%') === -1) { + barWidth = parseInt(w.config.plotOptions.bar.columnWidth, 10); + } + + zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth + + x = w.globals.padHorizontal + (xDivision - barWidth) / 2; + } + + return { + x: x, + y: y, + yDivision: yDivision, + xDivision: xDivision, + barHeight: barHeight, + barWidth: barWidth, + zeroH: zeroH, + zeroW: zeroW + }; + } + }, { + key: "drawStackedBarPaths", + value: function drawStackedBarPaths(_ref) { + var indexes = _ref.indexes, + barHeight = _ref.barHeight, + strokeWidth = _ref.strokeWidth, + zeroW = _ref.zeroW, + x = _ref.x, + y = _ref.y, + groupIndex = _ref.groupIndex, + seriesGroup = _ref.seriesGroup, + yDivision = _ref.yDivision, + elSeries = _ref.elSeries; + var w = this.w; + var barYPosition = y + (groupIndex !== -1 ? groupIndex * barHeight : 0); + var barXPosition; + var i = indexes.i; + var j = indexes.j; + var prevBarW = 0; + + for (var k = 0; k < this.groupCtx.prevXF.length; k++) { + prevBarW = prevBarW + this.groupCtx.prevXF[k][j]; + } + + var gsi = i; // an index to keep track of the series inside a group + + if (seriesGroup) { + gsi = seriesGroup.indexOf(w.config.series[i].name); + } + + if (gsi > 0) { + var bXP = zeroW; + + if (this.groupCtx.prevXVal[gsi - 1][j] < 0) { + bXP = this.series[i][j] >= 0 ? this.groupCtx.prevX[gsi - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2 : this.groupCtx.prevX[gsi - 1][j]; + } else if (this.groupCtx.prevXVal[gsi - 1][j] >= 0) { + bXP = this.series[i][j] >= 0 ? this.groupCtx.prevX[gsi - 1][j] : this.groupCtx.prevX[gsi - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2; + } + + barXPosition = bXP; + } else { + // the first series will not have prevX values + barXPosition = zeroW; + } + + if (this.series[i][j] === null) { + x = barXPosition; + } else { + x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2; + } + + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: barXPosition, + x2: x, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + seriesGroup: seriesGroup, + i: i, + j: j, + w: w + }); + this.barHelpers.barBackground({ + j: j, + i: i, + y1: barYPosition, + y2: barHeight, + elSeries: elSeries + }); + y = y + yDivision; + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, i, j), + barYPosition: barYPosition, + x: x, + y: y + }; + } + }, { + key: "drawStackedColumnPaths", + value: function drawStackedColumnPaths(_ref2) { + var indexes = _ref2.indexes, + x = _ref2.x, + y = _ref2.y, + xDivision = _ref2.xDivision, + barWidth = _ref2.barWidth, + zeroH = _ref2.zeroH, + groupIndex = _ref2.groupIndex, + seriesGroup = _ref2.seriesGroup, + elSeries = _ref2.elSeries; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + var bc = indexes.bc; + + if (w.globals.isXNumeric) { + var seriesVal = w.globals.seriesX[i][j]; + if (!seriesVal) seriesVal = 0; + x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2; + + if (w.globals.seriesGroups.length) { + x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2 * w.globals.seriesGroups.length; + } + } + + var barXPosition = x + (groupIndex !== -1 ? groupIndex * barWidth : 0); + var barYPosition; + var prevBarH = 0; + + for (var k = 0; k < this.groupCtx.prevYF.length; k++) { + // fix issue #1215 + // in case where this.groupCtx.prevYF[k][j] is NaN, use 0 instead + prevBarH = prevBarH + (!isNaN(this.groupCtx.prevYF[k][j]) ? this.groupCtx.prevYF[k][j] : 0); + } + + var gsi = i; // an index to keep track of the series inside a group + + if (seriesGroup) { + gsi = seriesGroup.indexOf(w.config.series[i].name); + } + + if (gsi > 0 && !w.globals.isXNumeric || gsi > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) { + var _this$groupCtx$prevYF; + + var bYP; + var prevYValue; + var p = Math.min(this.yRatio.length + 1, i + 1); + + if (this.groupCtx.prevY[gsi - 1] !== undefined && this.groupCtx.prevY[gsi - 1].length) { + for (var ii = 1; ii < p; ii++) { + var _this$groupCtx$prevY; + + if (!isNaN((_this$groupCtx$prevY = this.groupCtx.prevY[gsi - ii]) === null || _this$groupCtx$prevY === void 0 ? void 0 : _this$groupCtx$prevY[j])) { + // find the previous available value to give prevYValue + prevYValue = this.groupCtx.prevY[gsi - ii][j]; // if found it, break the loop + + break; + } + } + } + + for (var _ii = 1; _ii < p; _ii++) { + var _this$groupCtx$prevYV, _this$groupCtx$prevYV2; + + // find the previous available value(non-NaN) to give bYP + if (((_this$groupCtx$prevYV = this.groupCtx.prevYVal[gsi - _ii]) === null || _this$groupCtx$prevYV === void 0 ? void 0 : _this$groupCtx$prevYV[j]) < 0) { + bYP = this.series[i][j] >= 0 ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 : prevYValue; // found it? break the loop + + break; + } else if (((_this$groupCtx$prevYV2 = this.groupCtx.prevYVal[gsi - _ii]) === null || _this$groupCtx$prevYV2 === void 0 ? void 0 : _this$groupCtx$prevYV2[j]) >= 0) { + bYP = this.series[i][j] >= 0 ? prevYValue : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2; // found it? break the loop + + break; + } + } + + if (typeof bYP === 'undefined') bYP = w.globals.gridHeight; // if this.prevYF[0] is all 0 resulted from line #486 + // AND every arr starting from the second only contains NaN + + if ((_this$groupCtx$prevYF = this.groupCtx.prevYF[0]) !== null && _this$groupCtx$prevYF !== void 0 && _this$groupCtx$prevYF.every(function (val) { + return val === 0; + }) && this.groupCtx.prevYF.slice(1, gsi).every(function (arr) { + return arr.every(function (val) { + return isNaN(val); + }); + })) { + barYPosition = zeroH; + } else { + // Nothing special + barYPosition = bYP; + } + } else { + // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero + barYPosition = zeroH; + } + + if (this.series[i][j]) { + y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2; + } else { + // fixes #3610 + y = barYPosition; + } + + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: barYPosition, + y2: y, + yRatio: this.yRatio[this.yaxisIndex], + strokeWidth: this.strokeWidth, + series: this.series, + seriesGroup: seriesGroup, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + this.barHelpers.barBackground({ + bc: bc, + j: j, + i: i, + x1: barXPosition, + x2: barWidth, + elSeries: elSeries + }); + x = x + xDivision; + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition, + x: w.globals.isXNumeric ? x - xDivision : x, + y: y + }; + } + }]); + + return BarStacked; + }(Bar); + + /** + * ApexCharts BoxCandleStick Class responsible for drawing both Stacked Columns and Bars. + * + * @module BoxCandleStick + **/ + + var BoxCandleStick = /*#__PURE__*/function (_Bar) { + _inherits(BoxCandleStick, _Bar); + + var _super = _createSuper(BoxCandleStick); + + function BoxCandleStick() { + _classCallCheck(this, BoxCandleStick); + + return _super.apply(this, arguments); + } + + _createClass(BoxCandleStick, [{ + key: "draw", + value: function draw(series, ctype, seriesIndex) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var type = w.globals.comboCharts ? ctype : w.config.chart.type; + var fill = new Fill(this.ctx); + this.candlestickOptions = this.w.config.plotOptions.candlestick; + this.boxOptions = this.w.config.plotOptions.boxPlot; + this.isHorizontal = w.config.plotOptions.bar.horizontal; + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.series = series; + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: "apexcharts-".concat(type, "-series apexcharts-plot-series") + }); + + var _loop = function _loop(i) { + _this.isBoxPlot = w.config.chart.type === 'boxPlot' || w.config.series[i].type === 'boxPlot'; + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + + _this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + _this.visibleI = _this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (_this.yRatio.length > 1) { + _this.yaxisIndex = realIndex; + } + + var initPositions = _this.barHelpers.initialPositions(); + + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + xArrj.push(x + barWidth / 2); // eldatalabels + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + + var _loop2 = function _loop2(j) { + var strokeWidth = _this.barHelpers.getStrokeWidth(i, j, realIndex); + + var paths = null; + var pathsParams = { + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + + if (_this.isHorizontal) { + paths = _this.drawHorizontalBoxPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + yDivision: yDivision, + barHeight: barHeight, + zeroW: zeroW + })); + } else { + paths = _this.drawVerticalBoxPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + } + + y = paths.y; + x = paths.x; // push current X + + if (j > 0) { + xArrj.push(x + barWidth / 2); + } + + yArrj.push(y); + paths.pathTo.forEach(function (pathTo, pi) { + var lineFill = !_this.isBoxPlot && _this.candlestickOptions.wick.useFillColor ? paths.color[pi] : w.globals.stroke.colors[i]; + var pathFill = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex: j, + color: paths.color[pi], + value: series[i][j] + }); + + _this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + lineFill: lineFill, + j: j, + i: i, + pathFrom: paths.pathFrom, + pathTo: pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: barHeight, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + visibleSeries: _this.visibleI, + type: w.config.chart.type + }); + }); + }; + + for (var j = 0; j < w.globals.dataPoints; j++) { + _loop2(j); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrj; + w.globals.seriesYvalues[realIndex] = yArrj; + ret.add(elSeries); + }; + + for (var i = 0; i < series.length; i++) { + _loop(i); + } + + return ret; + } + }, { + key: "drawVerticalBoxPaths", + value: function drawVerticalBoxPaths(_ref) { + var indexes = _ref.indexes, + x = _ref.x; + _ref.y; + var xDivision = _ref.xDivision, + barWidth = _ref.barWidth, + zeroH = _ref.zeroH, + strokeWidth = _ref.strokeWidth; + var w = this.w; + var graphics = new Graphics(this.ctx); + var i = indexes.i; + var j = indexes.j; + var isPositive = true; + var colorPos = w.config.plotOptions.candlestick.colors.upward; + var colorNeg = w.config.plotOptions.candlestick.colors.downward; + var color = ''; + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]; + } + + var yRatio = this.yRatio[this.yaxisIndex]; + var realIndex = indexes.realIndex; + var ohlc = this.getOHLCValue(realIndex, j); + var l1 = zeroH; + var l2 = zeroH; + + if (ohlc.o > ohlc.c) { + isPositive = false; + } + + var y1 = Math.min(ohlc.o, ohlc.c); + var y2 = Math.max(ohlc.o, ohlc.c); + var m = ohlc.m; + + if (w.globals.isXNumeric) { + x = (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio - barWidth / 2; + } + + var barXPosition = x + barWidth * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + y1 = zeroH; + y2 = zeroH; + } else { + y1 = zeroH - y1 / yRatio; + y2 = zeroH - y2 / yRatio; + l1 = zeroH - ohlc.h / yRatio; + l2 = zeroH - ohlc.l / yRatio; + m = zeroH - ohlc.m / yRatio; + } + + var pathTo = graphics.move(barXPosition, zeroH); + var pathFrom = graphics.move(barXPosition + barWidth / 2, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true); + } + + if (this.isBoxPlot) { + pathTo = [graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 4, l1) + graphics.line(barXPosition + barWidth - barWidth / 4, l1) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, m) + graphics.line(barXPosition, m) + graphics.line(barXPosition, y1 + strokeWidth / 2), graphics.move(barXPosition, m) + graphics.line(barXPosition + barWidth, m) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth - barWidth / 4, l2) + graphics.line(barXPosition + barWidth / 4, l2) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition, y2) + graphics.line(barXPosition, m) + 'z']; + } else { + // candlestick + pathTo = [graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2)]; + } + + pathFrom = pathFrom + graphics.move(barXPosition, y1); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + return { + pathTo: pathTo, + pathFrom: pathFrom, + x: x, + y: y2, + barXPosition: barXPosition, + color: this.isBoxPlot ? color : isPositive ? [colorPos] : [colorNeg] + }; + } + }, { + key: "drawHorizontalBoxPaths", + value: function drawHorizontalBoxPaths(_ref2) { + var indexes = _ref2.indexes; + _ref2.x; + var y = _ref2.y, + yDivision = _ref2.yDivision, + barHeight = _ref2.barHeight, + zeroW = _ref2.zeroW, + strokeWidth = _ref2.strokeWidth; + var w = this.w; + var graphics = new Graphics(this.ctx); + var i = indexes.i; + var j = indexes.j; + var color = this.boxOptions.colors.lower; + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]; + } + + var yRatio = this.invertedYRatio; + var realIndex = indexes.realIndex; + var ohlc = this.getOHLCValue(realIndex, j); + var l1 = zeroW; + var l2 = zeroW; + var x1 = Math.min(ohlc.o, ohlc.c); + var x2 = Math.max(ohlc.o, ohlc.c); + var m = ohlc.m; + + if (w.globals.isXNumeric) { + y = (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.invertedXRatio - barHeight / 2; + } + + var barYPosition = y + barHeight * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + x1 = zeroW; + x2 = zeroW; + } else { + x1 = zeroW + x1 / yRatio; + x2 = zeroW + x2 / yRatio; + l1 = zeroW + ohlc.h / yRatio; + l2 = zeroW + ohlc.l / yRatio; + m = zeroW + ohlc.m / yRatio; + } + + var pathTo = graphics.move(zeroW, barYPosition); + var pathFrom = graphics.move(x1, barYPosition + barHeight / 2); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true); + } + + pathTo = [graphics.move(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight / 2) + graphics.line(l1, barYPosition + barHeight / 2) + graphics.line(l1, barYPosition + barHeight / 2 - barHeight / 4) + graphics.line(l1, barYPosition + barHeight / 2 + barHeight / 4) + graphics.line(l1, barYPosition + barHeight / 2) + graphics.line(x1, barYPosition + barHeight / 2) + graphics.line(x1, barYPosition + barHeight) + graphics.line(m, barYPosition + barHeight) + graphics.line(m, barYPosition) + graphics.line(x1 + strokeWidth / 2, barYPosition), graphics.move(m, barYPosition) + graphics.line(m, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight - barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition) + graphics.line(m, barYPosition) + 'z']; + pathFrom = pathFrom + graphics.move(x1, barYPosition); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + return { + pathTo: pathTo, + pathFrom: pathFrom, + x: x2, + y: y, + barYPosition: barYPosition, + color: color + }; + } + }, { + key: "getOHLCValue", + value: function getOHLCValue(i, j) { + var w = this.w; + return { + o: this.isBoxPlot ? w.globals.seriesCandleH[i][j] : w.globals.seriesCandleO[i][j], + h: this.isBoxPlot ? w.globals.seriesCandleO[i][j] : w.globals.seriesCandleH[i][j], + m: w.globals.seriesCandleM[i][j], + l: this.isBoxPlot ? w.globals.seriesCandleC[i][j] : w.globals.seriesCandleL[i][j], + c: this.isBoxPlot ? w.globals.seriesCandleL[i][j] : w.globals.seriesCandleC[i][j] + }; + } + }]); + + return BoxCandleStick; + }(Bar); + + var TreemapHelpers = /*#__PURE__*/function () { + function TreemapHelpers(ctx) { + _classCallCheck(this, TreemapHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(TreemapHelpers, [{ + key: "checkColorRange", + value: function checkColorRange() { + var w = this.w; + var negRange = false; + var chartOpts = w.config.plotOptions[w.config.chart.type]; + + if (chartOpts.colorScale.ranges.length > 0) { + chartOpts.colorScale.ranges.map(function (range, index) { + if (range.from <= 0) { + negRange = true; + } + }); + } + + return negRange; + } + }, { + key: "getShadeColor", + value: function getShadeColor(chartType, i, j, negRange) { + var w = this.w; + var colorShadePercent = 1; + var shadeIntensity = w.config.plotOptions[chartType].shadeIntensity; + var colorProps = this.determineColor(chartType, i, j); + + if (w.globals.hasNegs || negRange) { + if (w.config.plotOptions[chartType].reverseNegativeShade) { + if (colorProps.percent < 0) { + colorShadePercent = colorProps.percent / 100 * (shadeIntensity * 1.25); + } else { + colorShadePercent = (1 - colorProps.percent / 100) * (shadeIntensity * 1.25); + } + } else { + if (colorProps.percent <= 0) { + colorShadePercent = 1 - (1 + colorProps.percent / 100) * shadeIntensity; + } else { + colorShadePercent = (1 - colorProps.percent / 100) * shadeIntensity; + } + } + } else { + colorShadePercent = 1 - colorProps.percent / 100; + + if (chartType === 'treemap') { + colorShadePercent = (1 - colorProps.percent / 100) * (shadeIntensity * 1.25); + } + } + + var color = colorProps.color; + var utils = new Utils$1(); + + if (w.config.plotOptions[chartType].enableShades) { + if (this.w.config.theme.mode === 'dark') { + color = Utils$1.hexToRgba(utils.shadeColor(colorShadePercent * -1, colorProps.color), w.config.fill.opacity); + } else { + color = Utils$1.hexToRgba(utils.shadeColor(colorShadePercent, colorProps.color), w.config.fill.opacity); + } + } + + return { + color: color, + colorProps: colorProps + }; + } + }, { + key: "determineColor", + value: function determineColor(chartType, i, j) { + var w = this.w; + var val = w.globals.series[i][j]; + var chartOpts = w.config.plotOptions[chartType]; + var seriesNumber = chartOpts.colorScale.inverse ? j : i; + + if (chartOpts.distributed && w.config.chart.type === 'treemap') { + seriesNumber = j; + } + + var color = w.globals.colors[seriesNumber]; + var foreColor = null; + var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i])); + var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i])); + + if (!chartOpts.distributed && chartType === 'heatmap') { + min = w.globals.minY; + max = w.globals.maxY; + } + + if (typeof chartOpts.colorScale.min !== 'undefined') { + min = chartOpts.colorScale.min < w.globals.minY ? chartOpts.colorScale.min : w.globals.minY; + max = chartOpts.colorScale.max > w.globals.maxY ? chartOpts.colorScale.max : w.globals.maxY; + } + + var total = Math.abs(max) + Math.abs(min); + var percent = 100 * val / (total === 0 ? total - 0.000001 : total); + + if (chartOpts.colorScale.ranges.length > 0) { + var colorRange = chartOpts.colorScale.ranges; + colorRange.map(function (range, index) { + if (val >= range.from && val <= range.to) { + color = range.color; + foreColor = range.foreColor ? range.foreColor : null; + min = range.from; + max = range.to; + var rTotal = Math.abs(max) + Math.abs(min); + percent = 100 * val / (rTotal === 0 ? rTotal - 0.000001 : rTotal); + } + }); + } + + return { + color: color, + foreColor: foreColor, + percent: percent + }; + } + }, { + key: "calculateDataLabels", + value: function calculateDataLabels(_ref) { + var text = _ref.text, + x = _ref.x, + y = _ref.y, + i = _ref.i, + j = _ref.j, + colorProps = _ref.colorProps, + fontSize = _ref.fontSize; + var w = this.w; + var dataLabelsConfig = w.config.dataLabels; + var graphics = new Graphics(this.ctx); + var dataLabels = new DataLabels(this.ctx); + var elDataLabelsWrap = null; + + if (dataLabelsConfig.enabled) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + var dataLabelsX = x + offX; + var dataLabelsY = y + parseFloat(dataLabelsConfig.style.fontSize) / 3 + offY; + dataLabels.plotDataLabelsText({ + x: dataLabelsX, + y: dataLabelsY, + text: text, + i: i, + j: j, + color: colorProps.foreColor, + parent: elDataLabelsWrap, + fontSize: fontSize, + dataLabelsConfig: dataLabelsConfig + }); + } + + return elDataLabelsWrap; + } + }, { + key: "addListeners", + value: function addListeners(elRect) { + var graphics = new Graphics(this.ctx); + elRect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elRect)); + elRect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elRect)); + elRect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elRect)); + } + }]); + + return TreemapHelpers; + }(); + + /** + * ApexCharts HeatMap Class. + * @module HeatMap + **/ + + var HeatMap = /*#__PURE__*/function () { + function HeatMap(ctx, xyRatios) { + _classCallCheck(this, HeatMap); + + this.ctx = ctx; + this.w = ctx.w; + this.xRatio = xyRatios.xRatio; + this.yRatio = xyRatios.yRatio; + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation; + this.helpers = new TreemapHelpers(ctx); + this.rectRadius = this.w.config.plotOptions.heatmap.radius; + this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0; + } + + _createClass(HeatMap, [{ + key: "draw", + value: function draw(series) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-heatmap' + }); + ret.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); // width divided into equal parts + + var xDivision = w.globals.gridWidth / w.globals.dataPoints; + var yDivision = w.globals.gridHeight / w.globals.series.length; + var y1 = 0; + var rev = false; + this.negRange = this.helpers.checkColorRange(); + var heatSeries = series.slice(); + + if (w.config.yaxis[0].reversed) { + rev = true; + heatSeries.reverse(); + } + + for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) { + // el to which series will be drawn + var elSeries = graphics.group({ + class: "apexcharts-series apexcharts-heatmap-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, i); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + var filters = new Filters(this.ctx); + filters.dropShadow(elSeries, shadow, i); + } + + var x1 = 0; + var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity; + + for (var j = 0; j < heatSeries[i].length; j++) { + var heatColor = this.helpers.getShadeColor(w.config.chart.type, i, j, this.negRange); + var color = heatColor.color; + var heatColorProps = heatColor.colorProps; + + if (w.config.fill.type === 'image') { + var fill = new Fill(this.ctx); + color = fill.fillPath({ + seriesNumber: i, + dataPointIndex: j, + opacity: w.globals.hasNegs ? heatColorProps.percent < 0 ? 1 - (1 + heatColorProps.percent / 100) : shadeIntensity + heatColorProps.percent / 100 : heatColorProps.percent / 100, + patternID: Utils$1.randomId(), + width: w.config.fill.image.width ? w.config.fill.image.width : xDivision, + height: w.config.fill.image.height ? w.config.fill.image.height : yDivision + }); + } + + var radius = this.rectRadius; + var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius); + rect.attr({ + cx: x1, + cy: y1 + }); + rect.node.classList.add('apexcharts-heatmap-rect'); + elSeries.add(rect); + rect.attr({ + fill: color, + i: i, + index: i, + j: j, + val: heatSeries[i][j], + 'stroke-width': this.strokeWidth, + stroke: w.config.plotOptions.heatmap.useFillColorAsStroke ? color : w.globals.stroke.colors[0], + color: color + }); + this.helpers.addListeners(rect); + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + var speed = 1; + + if (!w.globals.resized) { + speed = w.config.chart.animations.speed; + } + + this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed); + } + + if (w.globals.dataChanged) { + var _speed = 1; + + if (this.dynamicAnim.enabled && w.globals.shouldAnimate) { + _speed = this.dynamicAnim.speed; + var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color; + if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)'; + this.animateHeatColor(rect, Utils$1.isColorHex(colorFrom) ? colorFrom : Utils$1.rgb2hex(colorFrom), Utils$1.isColorHex(color) ? color : Utils$1.rgb2hex(color), _speed); + } + } + + var formatter = w.config.dataLabels.formatter; + var formattedText = formatter(w.globals.series[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w: w + }); + var dataLabels = this.helpers.calculateDataLabels({ + text: formattedText, + x: x1 + xDivision / 2, + y: y1 + yDivision / 2, + i: i, + j: j, + colorProps: heatColorProps, + series: heatSeries + }); + + if (dataLabels !== null) { + elSeries.add(dataLabels); + } + + x1 = x1 + xDivision; + } + + y1 = y1 + yDivision; + ret.add(elSeries); + } // adjust yaxis labels for heatmap + + + var yAxisScale = w.globals.yAxisScale[0].result.slice(); + + if (w.config.yaxis[0].reversed) { + yAxisScale.unshift(''); + } else { + yAxisScale.push(''); + } + + w.globals.yAxisScale[0].result = yAxisScale; + var divisor = w.globals.gridHeight / w.globals.series.length; + w.config.yaxis[0].labels.offsetY = -(divisor / 2); + return ret; + } + }, { + key: "animateHeatMap", + value: function animateHeatMap(el, x, y, width, height, speed) { + var animations = new Animations(this.ctx); + animations.animateRect(el, { + x: x + width / 2, + y: y + height / 2, + width: 0, + height: 0 + }, { + x: x, + y: y, + width: width, + height: height + }, speed, function () { + animations.animationCompleted(el); + }); + } + }, { + key: "animateHeatColor", + value: function animateHeatColor(el, colorFrom, colorTo, speed) { + el.attr({ + fill: colorFrom + }).animate(speed).attr({ + fill: colorTo + }); + } + }]); + + return HeatMap; + }(); + + var CircularChartsHelpers = /*#__PURE__*/function () { + function CircularChartsHelpers(ctx) { + _classCallCheck(this, CircularChartsHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(CircularChartsHelpers, [{ + key: "drawYAxisTexts", + value: function drawYAxisTexts(x, y, i, text) { + var w = this.w; + var yaxisConfig = w.config.yaxis[0]; + var formatter = w.globals.yLabelFormatters[0]; + var graphics = new Graphics(this.ctx); + var yaxisLabel = graphics.drawText({ + x: x + yaxisConfig.labels.offsetX, + y: y + yaxisConfig.labels.offsetY, + text: formatter(text, i), + textAnchor: 'middle', + fontSize: yaxisConfig.labels.style.fontSize, + fontFamily: yaxisConfig.labels.style.fontFamily, + foreColor: Array.isArray(yaxisConfig.labels.style.colors) ? yaxisConfig.labels.style.colors[i] : yaxisConfig.labels.style.colors + }); + return yaxisLabel; + } + }]); + + return CircularChartsHelpers; + }(); + + /** + * ApexCharts Pie Class for drawing Pie / Donut Charts. + * @module Pie + **/ + + var Pie = /*#__PURE__*/function () { + function Pie(ctx) { + _classCallCheck(this, Pie); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.chartType = this.w.config.chart.type; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + this.animBeginArr = [0]; + this.animDur = 0; + this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels; + this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors; + this.defaultSize = Math.min(w.globals.gridWidth, w.globals.gridHeight); + this.centerY = this.defaultSize / 2; + this.centerX = w.globals.gridWidth / 2; + + if (w.config.chart.type === 'radialBar') { + this.fullAngle = 360; + } else { + this.fullAngle = Math.abs(w.config.plotOptions.pie.endAngle - w.config.plotOptions.pie.startAngle); + } + + this.initialAngle = w.config.plotOptions.pie.startAngle % this.fullAngle; + w.globals.radialSize = this.defaultSize / 2.05 - w.config.stroke.width - (!w.config.chart.sparkline.enabled ? w.config.chart.dropShadow.blur : 0); + this.donutSize = w.globals.radialSize * parseInt(w.config.plotOptions.pie.donut.size, 10) / 100; + this.maxY = 0; + this.sliceLabels = []; + this.sliceSizes = []; + this.prevSectorAngleArr = []; // for dynamic animations + } + + _createClass(Pie, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var self = this; + var w = this.w; + var graphics = new Graphics(this.ctx); + this.ret = graphics.group({ + class: 'apexcharts-pie' + }); + if (w.globals.noData) return this.ret; + var total = 0; + + for (var k = 0; k < series.length; k++) { + // CALCULATE THE TOTAL + total += Utils$1.negToZero(series[k]); + } + + var sectorAngleArr = []; // el to which series will be drawn + + var elSeries = graphics.group(); // prevent division by zero error if there is no data + + if (total === 0) { + total = 0.00001; + } + + series.forEach(function (m) { + _this.maxY = Math.max(_this.maxY, m); + }); // override maxY if user provided in config + + if (w.config.yaxis[0].max) { + this.maxY = w.config.yaxis[0].max; + } + + if (w.config.grid.position === 'back' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret); + } + + for (var i = 0; i < series.length; i++) { + // CALCULATE THE ANGLES + var angle = this.fullAngle * Utils$1.negToZero(series[i]) / total; + sectorAngleArr.push(angle); + + if (this.chartType === 'polarArea') { + sectorAngleArr[i] = this.fullAngle / series.length; + this.sliceSizes.push(w.globals.radialSize * series[i] / this.maxY); + } else { + this.sliceSizes.push(w.globals.radialSize); + } + } + + if (w.globals.dataChanged) { + var prevTotal = 0; + + for (var _k = 0; _k < w.globals.previousPaths.length; _k++) { + // CALCULATE THE PREV TOTAL + prevTotal += Utils$1.negToZero(w.globals.previousPaths[_k]); + } + + var previousAngle; + + for (var _i = 0; _i < w.globals.previousPaths.length; _i++) { + // CALCULATE THE PREVIOUS ANGLES + previousAngle = this.fullAngle * Utils$1.negToZero(w.globals.previousPaths[_i]) / prevTotal; + this.prevSectorAngleArr.push(previousAngle); + } + } // on small chart size after few count of resizes browser window donutSize can be negative + + + if (this.donutSize < 0) { + this.donutSize = 0; + } + + var scaleSize = w.config.plotOptions.pie.customScale; + var halfW = w.globals.gridWidth / 2; + var halfH = w.globals.gridHeight / 2; + var translateX = halfW - w.globals.gridWidth / 2 * scaleSize; + var translateY = halfH - w.globals.gridHeight / 2 * scaleSize; + + if (this.chartType === 'donut') { + // draw the inner circle and add some text to it + var circle = graphics.drawCircle(this.donutSize); + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: w.config.plotOptions.pie.donut.background ? w.config.plotOptions.pie.donut.background : 'transparent' + }); + elSeries.add(circle); + } + + var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end + + this.sliceLabels.forEach(function (s) { + elG.add(s); + }); + elSeries.attr({ + transform: "translate(".concat(translateX, ", ").concat(translateY, ") scale(").concat(scaleSize, ")") + }); + elSeries.add(elG); + this.ret.add(elSeries); + + if (this.donutDataLabels.show) { + var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, { + hollowSize: this.donutSize, + centerX: this.centerX, + centerY: this.centerY, + opacity: this.donutDataLabels.show, + translateX: translateX, + translateY: translateY + }); + this.ret.add(dataLabels); + } + + if (w.config.grid.position === 'front' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret); + } + + return this.ret; + } // core function for drawing pie arcs + + }, { + key: "drawArcs", + value: function drawArcs(sectorAngleArr, series) { + var w = this.w; + var filters = new Filters(this.ctx); + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var g = graphics.group({ + class: 'apexcharts-slices' + }); + var startAngle = this.initialAngle; + var prevStartAngle = this.initialAngle; + var endAngle = this.initialAngle; + var prevEndAngle = this.initialAngle; + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0; + + for (var i = 0; i < sectorAngleArr.length; i++) { + var elPieArc = graphics.group({ + class: "apexcharts-series apexcharts-pie-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + g.add(elPieArc); + startAngle = endAngle; + prevStartAngle = prevEndAngle; + endAngle = startAngle + sectorAngleArr[i]; + prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i]; + var angle = endAngle < startAngle ? this.fullAngle + endAngle - startAngle : endAngle - startAngle; + var pathFill = fill.fillPath({ + seriesNumber: i, + size: this.sliceSizes[i], + value: series[i] + }); // additionally, pass size for gradient drawing in the fillPath function + + var path = this.getChangedPath(prevStartAngle, prevEndAngle); + var elPath = graphics.drawPath({ + d: path, + stroke: Array.isArray(this.lineColorArr) ? this.lineColorArr[i] : this.lineColorArr, + strokeWidth: 0, + fill: pathFill, + fillOpacity: w.config.fill.opacity, + classes: "apexcharts-pie-area apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(i) + }); + elPath.attr({ + index: 0, + j: i + }); + filters.setSelectionFilter(elPath, 0, i); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + filters.dropShadow(elPath, shadow, i); + } + + this.addListeners(elPath, this.donutDataLabels); + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:startAngle': startAngle, + 'data:strokeWidth': this.strokeWidth, + 'data:value': series[i] + }); + var labelPosition = { + x: 0, + y: 0 + }; + + if (this.chartType === 'pie' || this.chartType === 'polarArea') { + labelPosition = Utils$1.polarToCartesian(this.centerX, this.centerY, w.globals.radialSize / 1.25 + w.config.plotOptions.pie.dataLabels.offset, (startAngle + angle / 2) % this.fullAngle); + } else if (this.chartType === 'donut') { + labelPosition = Utils$1.polarToCartesian(this.centerX, this.centerY, (w.globals.radialSize + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, (startAngle + angle / 2) % this.fullAngle); + } + + elPieArc.add(elPath); // Animation code starts + + var dur = 0; + + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = angle / this.fullAngle * w.config.chart.animations.speed; + if (dur === 0) dur = 1; + this.animDur = dur + this.animDur; + this.animBeginArr.push(this.animDur); + } else { + this.animBeginArr.push(0); + } + + if (this.dynamicAnim && w.globals.dataChanged) { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle: endAngle, + startAngle: startAngle, + prevStartAngle: prevStartAngle, + prevEndAngle: prevEndAngle, + animateStartingPos: true, + i: i, + animBeginArr: this.animBeginArr, + shouldSetPrevPaths: true, + dur: w.config.chart.animations.dynamicAnimation.speed + }); + } else { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle: endAngle, + startAngle: startAngle, + i: i, + totalItems: sectorAngleArr.length - 1, + animBeginArr: this.animBeginArr, + dur: dur + }); + } // animation code ends + + + if (w.config.plotOptions.pie.expandOnClick && this.chartType !== 'polarArea') { + elPath.click(this.pieClicked.bind(this, i)); + } + + if (typeof w.globals.selectedDataPoints[0] !== 'undefined' && w.globals.selectedDataPoints[0].indexOf(i) > -1) { + this.pieClicked(i); + } + + if (w.config.dataLabels.enabled) { + var xPos = labelPosition.x; + var yPos = labelPosition.y; + var text = 100 * angle / this.fullAngle + '%'; + + if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) { + var formatter = w.config.dataLabels.formatter; + + if (formatter !== undefined) { + text = formatter(w.globals.seriesPercent[i][0], { + seriesIndex: i, + w: w + }); + } + + var foreColor = w.globals.dataLabels.style.colors[i]; + var elPieLabelWrap = graphics.group({ + class: "apexcharts-datalabels" + }); + var elPieLabel = graphics.drawText({ + x: xPos, + y: yPos, + text: text, + textAnchor: 'middle', + fontSize: w.config.dataLabels.style.fontSize, + fontFamily: w.config.dataLabels.style.fontFamily, + fontWeight: w.config.dataLabels.style.fontWeight, + foreColor: foreColor + }); + elPieLabelWrap.add(elPieLabel); + + if (w.config.dataLabels.dropShadow.enabled) { + var textShadow = w.config.dataLabels.dropShadow; + filters.dropShadow(elPieLabel, textShadow); + } + + elPieLabel.node.classList.add('apexcharts-pie-label'); + + if (w.config.chart.animations.animate && w.globals.resized === false) { + elPieLabel.node.classList.add('apexcharts-pie-label-delay'); + elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's'; + } + + this.sliceLabels.push(elPieLabelWrap); + } + } + } + + return g; + } + }, { + key: "addListeners", + value: function addListeners(elPath, dataLabels) { + var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave + + elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath)); + elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath)); + elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels)); + elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath)); + + if (!this.donutDataLabels.total.showAlways) { + elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels)); + elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels)); + } + } // This function can be used for other circle charts too + + }, { + key: "animatePaths", + value: function animatePaths(el, opts) { + var w = this.w; + var me = this; + var angle = opts.endAngle < opts.startAngle ? this.fullAngle + opts.endAngle - opts.startAngle : opts.endAngle - opts.startAngle; + var prevAngle = angle; + var fromStartAngle = opts.startAngle; + var toStartAngle = opts.startAngle; + + if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) { + fromStartAngle = opts.prevEndAngle; + prevAngle = opts.prevEndAngle < opts.prevStartAngle ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle : opts.prevEndAngle - opts.prevStartAngle; + } + + if (opts.i === w.config.series.length - 1) { + // some adjustments for the last overlapping paths + if (angle + toStartAngle > this.fullAngle) { + opts.endAngle = opts.endAngle - (angle + toStartAngle); + } else if (angle + toStartAngle < this.fullAngle) { + opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle)); + } + } + + if (angle === this.fullAngle) angle = this.fullAngle - 0.01; + me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts); + } + }, { + key: "animateArc", + value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) { + var me = this; + var w = this.w; + var animations = new Animations(this.ctx); + var size = opts.size; + var path; + + if (isNaN(fromStartAngle) || isNaN(prevAngle)) { + fromStartAngle = toStartAngle; + prevAngle = angle; + opts.dur = 0; + } + + var currAngle = angle; + var startAngle = toStartAngle; + var fromAngle = fromStartAngle < toStartAngle ? this.fullAngle + fromStartAngle - toStartAngle : fromStartAngle - toStartAngle; + + if (w.globals.dataChanged && opts.shouldSetPrevPaths) { + // to avoid flicker when updating, set prev path first and then animate from there + if (opts.prevEndAngle) { + path = me.getPiePath({ + me: me, + startAngle: opts.prevStartAngle, + angle: opts.prevEndAngle < opts.prevStartAngle ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle : opts.prevEndAngle - opts.prevStartAngle, + size: size + }); + el.attr({ + d: path + }); + } + } + + if (opts.dur !== 0) { + el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () { + if (me.chartType === 'pie' || me.chartType === 'donut' || me.chartType === 'polarArea') { + this.animate(w.config.chart.animations.dynamicAnimation.speed).attr({ + 'stroke-width': me.strokeWidth + }); + } + + if (opts.i === w.config.series.length - 1) { + animations.animationCompleted(el); + } + }).during(function (pos) { + currAngle = fromAngle + (angle - fromAngle) * pos; + + if (opts.animateStartingPos) { + currAngle = prevAngle + (angle - prevAngle) * pos; + startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos; + } + + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: currAngle, + size: size + }); + el.node.setAttribute('data:pathOrig', path); + el.attr({ + d: path + }); + }); + } else { + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: angle, + size: size + }); + + if (!opts.isTrack) { + w.globals.animationEnded = true; + } + + el.node.setAttribute('data:pathOrig', path); + el.attr({ + d: path, + 'stroke-width': me.strokeWidth + }); + } + } + }, { + key: "pieClicked", + value: function pieClicked(i) { + var w = this.w; + var me = this; + var path; + var size = me.sliceSizes[i] + (w.config.plotOptions.pie.expandOnClick ? 4 : 0); + var elPath = w.globals.dom.Paper.select(".apexcharts-".concat(me.chartType.toLowerCase(), "-slice-").concat(i)).members[0]; + + if (elPath.attr('data:pieClicked') === 'true') { + elPath.attr({ + 'data:pieClicked': 'false' + }); + this.revertDataLabelsInner(elPath.node, this.donutDataLabels); + var origPath = elPath.attr('data:pathOrig'); + elPath.attr({ + d: origPath + }); + return; + } else { + // reset all elems + var allEls = w.globals.dom.baseEl.getElementsByClassName('apexcharts-pie-area'); + Array.prototype.forEach.call(allEls, function (pieSlice) { + pieSlice.setAttribute('data:pieClicked', 'false'); + var origPath = pieSlice.getAttribute('data:pathOrig'); + + if (origPath) { + pieSlice.setAttribute('d', origPath); + } + }); + elPath.attr('data:pieClicked', 'true'); + } + + var startAngle = parseInt(elPath.attr('data:startAngle'), 10); + var angle = parseInt(elPath.attr('data:angle'), 10); + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: angle, + size: size + }); + if (angle === 360) return; + elPath.plot(path); + } + }, { + key: "getChangedPath", + value: function getChangedPath(prevStartAngle, prevEndAngle) { + var path = ''; + + if (this.dynamicAnim && this.w.globals.dataChanged) { + path = this.getPiePath({ + me: this, + startAngle: prevStartAngle, + angle: prevEndAngle - prevStartAngle, + size: this.size + }); + } + + return path; + } + }, { + key: "getPiePath", + value: function getPiePath(_ref) { + var me = _ref.me, + startAngle = _ref.startAngle, + angle = _ref.angle, + size = _ref.size; + var path; + var startDeg = startAngle; + var startRadians = Math.PI * (startDeg - 90) / 180; + var endDeg = angle + startAngle; // prevent overlap + + if (Math.ceil(endDeg) >= this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle) { + endDeg = this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle - 0.01; + } + + if (Math.ceil(endDeg) > this.fullAngle) endDeg -= this.fullAngle; + var endRadians = Math.PI * (endDeg - 90) / 180; + var x1 = me.centerX + size * Math.cos(startRadians); + var y1 = me.centerY + size * Math.sin(startRadians); + var x2 = me.centerX + size * Math.cos(endRadians); + var y2 = me.centerY + size * Math.sin(endRadians); + var startInner = Utils$1.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg); + var endInner = Utils$1.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg); + var largeArc = angle > 180 ? 1 : 0; + var pathBeginning = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2]; + + if (me.chartType === 'donut') { + path = [].concat(pathBeginning, ['L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z']).join(' '); + } else if (me.chartType === 'pie' || me.chartType === 'polarArea') { + path = [].concat(pathBeginning, ['L', me.centerX, me.centerY, 'L', x1, y1]).join(' '); + } else { + path = [].concat(pathBeginning).join(' '); + } + + return path; + } + }, { + key: "drawPolarElements", + value: function drawPolarElements(parent) { + var w = this.w; + var scale = new Range$1(this.ctx); + var graphics = new Graphics(this.ctx); + var helpers = new CircularChartsHelpers(this.ctx); + var gCircles = graphics.group(); + var gYAxis = graphics.group(); + var yScale = scale.niceScale(0, Math.ceil(this.maxY), w.config.yaxis[0].tickAmount, 0, true); + var yTexts = yScale.result.reverse(); + var len = yScale.result.length; + this.maxY = yScale.niceMax; + var circleSize = w.globals.radialSize; + var diff = circleSize / (len - 1); + + for (var i = 0; i < len - 1; i++) { + var circle = graphics.drawCircle(circleSize); + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: 'none', + 'stroke-width': w.config.plotOptions.polarArea.rings.strokeWidth, + stroke: w.config.plotOptions.polarArea.rings.strokeColor + }); + + if (w.config.yaxis[0].show) { + var yLabel = helpers.drawYAxisTexts(this.centerX, this.centerY - circleSize + parseInt(w.config.yaxis[0].labels.style.fontSize, 10) / 2, i, yTexts[i]); + gYAxis.add(yLabel); + } + + gCircles.add(circle); + circleSize = circleSize - diff; + } + + this.drawSpokes(parent); + parent.add(gCircles); + parent.add(gYAxis); + } + }, { + key: "renderInnerDataLabels", + value: function renderInnerDataLabels(dataLabelsConfig, opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var g = graphics.group({ + class: 'apexcharts-datalabels-group', + transform: "translate(".concat(opts.translateX ? opts.translateX : 0, ", ").concat(opts.translateY ? opts.translateY : 0, ") scale(").concat(w.config.plotOptions.pie.customScale, ")") + }); + var showTotal = dataLabelsConfig.total.show; + g.node.style.opacity = opts.opacity; + var x = opts.centerX; + var y = opts.centerY; + var labelColor, valueColor; + + if (dataLabelsConfig.name.color === undefined) { + labelColor = w.globals.colors[0]; + } else { + labelColor = dataLabelsConfig.name.color; + } + + var labelFontSize = dataLabelsConfig.name.fontSize; + var labelFontFamily = dataLabelsConfig.name.fontFamily; + var labelFontWeight = dataLabelsConfig.name.fontWeight; + + if (dataLabelsConfig.value.color === undefined) { + valueColor = w.config.chart.foreColor; + } else { + valueColor = dataLabelsConfig.value.color; + } + + var lbFormatter = dataLabelsConfig.value.formatter; + var val = ''; + var name = ''; + + if (showTotal) { + labelColor = dataLabelsConfig.total.color; + labelFontSize = dataLabelsConfig.total.fontSize; + labelFontFamily = dataLabelsConfig.total.fontFamily; + labelFontWeight = dataLabelsConfig.total.fontWeight; + name = dataLabelsConfig.total.label; + val = dataLabelsConfig.total.formatter(w); + } else { + if (w.globals.series.length === 1) { + val = lbFormatter(w.globals.series[0], w); + name = w.globals.seriesNames[0]; + } + } + + if (name) { + name = dataLabelsConfig.name.formatter(name, dataLabelsConfig.total.show, w); + } + + if (dataLabelsConfig.name.show) { + var elLabel = graphics.drawText({ + x: x, + y: y + parseFloat(dataLabelsConfig.name.offsetY), + text: name, + textAnchor: 'middle', + foreColor: labelColor, + fontSize: labelFontSize, + fontWeight: labelFontWeight, + fontFamily: labelFontFamily + }); + elLabel.node.classList.add('apexcharts-datalabel-label'); + g.add(elLabel); + } + + if (dataLabelsConfig.value.show) { + var valOffset = dataLabelsConfig.name.show ? parseFloat(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY; + var elValue = graphics.drawText({ + x: x, + y: y + valOffset, + text: val, + textAnchor: 'middle', + foreColor: valueColor, + fontWeight: dataLabelsConfig.value.fontWeight, + fontSize: dataLabelsConfig.value.fontSize, + fontFamily: dataLabelsConfig.value.fontFamily + }); + elValue.node.classList.add('apexcharts-datalabel-value'); + g.add(elValue); + } // for a multi-series circle chart, we need to show total value instead of first series labels + + + return g; + } + /** + * + * @param {string} name - The name of the series + * @param {string} val - The value of that series + * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total + */ + + }, { + key: "printInnerLabels", + value: function printInnerLabels(labelsConfig, name, val, el) { + var w = this.w; + var labelColor; + + if (el) { + if (labelsConfig.name.color === undefined) { + labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel'), 10) - 1]; + } else { + labelColor = labelsConfig.name.color; + } + } else { + if (w.globals.series.length > 1 && labelsConfig.total.show) { + labelColor = labelsConfig.total.color; + } + } + + var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label'); + var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value'); + var lbFormatter = labelsConfig.value.formatter; + val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it + + if (!el && typeof labelsConfig.total.formatter === 'function') { + val = labelsConfig.total.formatter(w); + } + + var isTotal = name === labelsConfig.total.label; + name = labelsConfig.name.formatter(name, isTotal, w); + + if (elLabel !== null) { + elLabel.textContent = name; + } + + if (elValue !== null) { + elValue.textContent = val; + } + + if (elLabel !== null) { + elLabel.style.fill = labelColor; + } + } + }, { + key: "printDataLabelsInner", + value: function printDataLabelsInner(el, dataLabelsConfig) { + var w = this.w; + var val = el.getAttribute('data:value'); + var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel'), 10) - 1]; + + if (w.globals.series.length > 1) { + this.printInnerLabels(dataLabelsConfig, name, val, el); + } + + var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group'); + + if (dataLabelsGroup !== null) { + dataLabelsGroup.style.opacity = 1; + } + } + }, { + key: "drawSpokes", + value: function drawSpokes(parent) { + var _this2 = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var spokeConfig = w.config.plotOptions.polarArea.spokes; + if (spokeConfig.strokeWidth === 0) return; + var spokes = []; + var angleDivision = 360 / w.globals.series.length; + + for (var i = 0; i < w.globals.series.length; i++) { + spokes.push(Utils$1.polarToCartesian(this.centerX, this.centerY, w.globals.radialSize, w.config.plotOptions.pie.startAngle + angleDivision * i)); + } + + spokes.forEach(function (p, i) { + var line = graphics.drawLine(p.x, p.y, _this2.centerX, _this2.centerY, Array.isArray(spokeConfig.connectorColors) ? spokeConfig.connectorColors[i] : spokeConfig.connectorColors); + parent.add(line); + }); + } + }, { + key: "revertDataLabelsInner", + value: function revertDataLabelsInner(elem, dataLabelsConfig, event) { + var _this3 = this; + + var w = this.w; + var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group'); + var sliceOut = false; + var slices = w.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"); + + var selectSlice = function selectSlice(_ref2) { + var makeSliceOut = _ref2.makeSliceOut, + printLabel = _ref2.printLabel; + Array.prototype.forEach.call(slices, function (s) { + if (s.getAttribute('data:pieClicked') === 'true') { + if (makeSliceOut) { + sliceOut = true; + } + + if (printLabel) { + _this3.printDataLabelsInner(s, dataLabelsConfig); + } + } + }); + }; + + selectSlice({ + makeSliceOut: true, + printLabel: false + }); + + if (dataLabelsConfig.total.show && w.globals.series.length > 1) { + if (sliceOut && !dataLabelsConfig.total.showAlways) { + selectSlice({ + makeSliceOut: false, + printLabel: true + }); + } else { + this.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w)); + } + } else { + selectSlice({ + makeSliceOut: false, + printLabel: true + }); + + if (!sliceOut) { + if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) { + if (w.globals.selectedDataPoints[0].length > 0) { + var index = w.globals.selectedDataPoints[0]; + var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(index)); + this.printDataLabelsInner(el, dataLabelsConfig); + } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) { + dataLabelsGroup.style.opacity = 0; + } + } else { + if (dataLabelsGroup && w.globals.series.length > 1) { + dataLabelsGroup.style.opacity = 0; + } + } + } + } + } + }]); + + return Pie; + }(); + + /** + * ApexCharts Radar Class for Spider/Radar Charts. + * @module Radar + **/ + + var Radar = /*#__PURE__*/function () { + function Radar(ctx) { + _classCallCheck(this, Radar); + + this.ctx = ctx; + this.w = ctx.w; + this.chartType = this.w.config.chart.type; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + this.animDur = 0; + var w = this.w; + this.graphics = new Graphics(this.ctx); + this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors; + this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.gridHeight + w.globals.goldenPadding * 1.5 : w.globals.gridWidth; + this.isLog = w.config.yaxis[0].logarithmic; + this.coreUtils = new CoreUtils(this.ctx); + this.maxValue = this.isLog ? this.coreUtils.getLogVal(w.globals.maxY, 0) : w.globals.maxY; + this.minValue = this.isLog ? this.coreUtils.getLogVal(this.w.globals.minY, 0) : w.globals.minY; + this.polygons = w.config.plotOptions.radar.polygons; + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0; + this.size = this.defaultSize / 2.1 - this.strokeWidth - w.config.chart.dropShadow.blur; + + if (w.config.xaxis.labels.show) { + this.size = this.size - w.globals.xAxisLabelsWidth / 1.75; + } + + if (w.config.plotOptions.radar.size !== undefined) { + this.size = w.config.plotOptions.radar.size; + } + + this.dataRadiusOfPercent = []; + this.dataRadius = []; + this.angleArr = []; + this.yaxisLabelsTextsPos = []; + } + + _createClass(Radar, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var w = this.w; + var fill = new Fill(this.ctx); + var allSeries = []; + var dataLabels = new DataLabels(this.ctx); + + if (series.length) { + this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length; + } + + this.disAngle = Math.PI * 2 / this.dataPointsLen; + var halfW = w.globals.gridWidth / 2; + var halfH = w.globals.gridHeight / 2; + var translateX = halfW + w.config.plotOptions.radar.offsetX; + var translateY = halfH + w.config.plotOptions.radar.offsetY; + var ret = this.graphics.group({ + class: 'apexcharts-radar-series apexcharts-plot-series', + transform: "translate(".concat(translateX || 0, ", ").concat(translateY || 0, ")") + }); + var dataPointsPos = []; + var elPointsMain = null; + var elDataPointsMain = null; + this.yaxisLabels = this.graphics.group({ + class: 'apexcharts-yaxis' + }); + series.forEach(function (s, i) { + var longestSeries = s.length === w.globals.dataPoints; // el to which series will be drawn + + var elSeries = _this.graphics.group().attr({ + class: "apexcharts-series", + 'data:longestSeries': longestSeries, + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + + _this.dataRadiusOfPercent[i] = []; + _this.dataRadius[i] = []; + _this.angleArr[i] = []; + s.forEach(function (dv, j) { + var range = Math.abs(_this.maxValue - _this.minValue); + dv = dv + Math.abs(_this.minValue); + + if (_this.isLog) { + dv = _this.coreUtils.getLogVal(dv, 0); + } + + _this.dataRadiusOfPercent[i][j] = dv / range; + _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size; + _this.angleArr[i][j] = j * _this.disAngle; + }); + dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]); + + var paths = _this.createPaths(dataPointsPos, { + x: 0, + y: 0 + }); // points + + + elPointsMain = _this.graphics.group({ + class: 'apexcharts-series-markers-wrap apexcharts-element-hidden' + }); // datapoints + + elDataPointsMain = _this.graphics.group({ + class: "apexcharts-datalabels", + 'data:realIndex': i + }); + w.globals.delayedElements.push({ + el: elPointsMain.node, + index: i + }); + var defaultRenderedPathOptions = { + i: i, + realIndex: i, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-radar", + shouldClipToGrid: false, + bindEventsOnPaths: false, + stroke: w.globals.stroke.colors[i], + strokeLineCap: w.config.stroke.lineCap + }; + var pathFrom = null; + + if (w.globals.previousPaths.length > 0) { + pathFrom = _this.getPreviousPath(i); + } + + for (var p = 0; p < paths.linePathsTo.length; p++) { + var renderedLinePath = _this.graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom, + pathTo: paths.linePathsTo[p], + strokeWidth: Array.isArray(_this.strokeWidth) ? _this.strokeWidth[i] : _this.strokeWidth, + fill: 'none', + drawShadow: false + })); + + elSeries.add(renderedLinePath); + var pathFill = fill.fillPath({ + seriesNumber: i + }); + + var renderedAreaPath = _this.graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom, + pathTo: paths.areaPathsTo[p], + strokeWidth: 0, + fill: pathFill, + drawShadow: false + })); + + if (w.config.chart.dropShadow.enabled) { + var filters = new Filters(_this.ctx); + var shadow = w.config.chart.dropShadow; + filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, { + noUserSpaceOnUse: true + }), i); + } + + elSeries.add(renderedAreaPath); + } + + s.forEach(function (sj, j) { + var markers = new Markers(_this.ctx); + var opts = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex: j + }); + + var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts); + + point.attr('rel', j); + point.attr('j', j); + point.attr('index', i); + point.node.setAttribute('default-marker-size', opts.pSize); + + var elPointsWrap = _this.graphics.group({ + class: 'apexcharts-series-markers' + }); + + if (elPointsWrap) { + elPointsWrap.add(point); + } + + elPointsMain.add(elPointsWrap); + elSeries.add(elPointsMain); + var dataLabelsConfig = w.config.dataLabels; + + if (dataLabelsConfig.enabled) { + var text = dataLabelsConfig.formatter(w.globals.series[i][j], { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + dataLabels.plotDataLabelsText({ + x: dataPointsPos[j].x, + y: dataPointsPos[j].y, + text: text, + textAnchor: 'middle', + i: i, + j: i, + parent: elDataPointsMain, + offsetCorrection: false, + dataLabelsConfig: _objectSpread2({}, dataLabelsConfig) + }); + } + + elSeries.add(elDataPointsMain); + }); + allSeries.push(elSeries); + }); + this.drawPolygons({ + parent: ret + }); + + if (w.config.xaxis.labels.show) { + var xaxisTexts = this.drawXAxisTexts(); + ret.add(xaxisTexts); + } + + allSeries.forEach(function (elS) { + ret.add(elS); + }); + ret.add(this.yaxisLabels); + return ret; + } + }, { + key: "drawPolygons", + value: function drawPolygons(opts) { + var _this2 = this; + + var w = this.w; + var parent = opts.parent; + var helpers = new CircularChartsHelpers(this.ctx); + var yaxisTexts = w.globals.yAxisScale[0].result.reverse(); + var layers = yaxisTexts.length; + var radiusSizes = []; + var layerDis = this.size / (layers - 1); + + for (var i = 0; i < layers; i++) { + radiusSizes[i] = layerDis * i; + } + + radiusSizes.reverse(); + var polygonStrings = []; + var lines = []; + radiusSizes.forEach(function (radiusSize, r) { + var polygon = Utils$1.getPolygonPos(radiusSize, _this2.dataPointsLen); + var string = ''; + polygon.forEach(function (p, i) { + if (r === 0) { + var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors); + + lines.push(line); + } + + if (i === 0) { + _this2.yaxisLabelsTextsPos.push({ + x: p.x, + y: p.y + }); + } + + string += p.x + ',' + p.y + ' '; + }); + polygonStrings.push(string); + }); + polygonStrings.forEach(function (p, i) { + var strokeColors = _this2.polygons.strokeColors; + var strokeWidth = _this2.polygons.strokeWidth; + + var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, Array.isArray(strokeWidth) ? strokeWidth[i] : strokeWidth, w.globals.radarPolygons.fill.colors[i]); + + parent.add(polygon); + }); + lines.forEach(function (l) { + parent.add(l); + }); + + if (w.config.yaxis[0].show) { + this.yaxisLabelsTextsPos.forEach(function (p, i) { + var yText = helpers.drawYAxisTexts(p.x, p.y, i, yaxisTexts[i]); + + _this2.yaxisLabels.add(yText); + }); + } + } + }, { + key: "drawXAxisTexts", + value: function drawXAxisTexts() { + var _this3 = this; + + var w = this.w; + var xaxisLabelsConfig = w.config.xaxis.labels; + var elXAxisWrap = this.graphics.group({ + class: 'apexcharts-xaxis' + }); + var polygonPos = Utils$1.getPolygonPos(this.size, this.dataPointsLen); + w.globals.labels.forEach(function (label, i) { + var formatter = w.config.xaxis.labels.formatter; + var dataLabels = new DataLabels(_this3.ctx); + + if (polygonPos[i]) { + var textPos = _this3.getTextPos(polygonPos[i], _this3.size); + + var text = formatter(label, { + seriesIndex: -1, + dataPointIndex: i, + w: w + }); + dataLabels.plotDataLabelsText({ + x: textPos.newX, + y: textPos.newY, + text: text, + textAnchor: textPos.textAnchor, + i: i, + j: i, + parent: elXAxisWrap, + color: Array.isArray(xaxisLabelsConfig.style.colors) && xaxisLabelsConfig.style.colors[i] ? xaxisLabelsConfig.style.colors[i] : '#a8a8a8', + dataLabelsConfig: _objectSpread2({ + textAnchor: textPos.textAnchor, + dropShadow: { + enabled: false + } + }, xaxisLabelsConfig), + offsetCorrection: false + }); + } + }); + return elXAxisWrap; + } + }, { + key: "createPaths", + value: function createPaths(pos, origin) { + var _this4 = this; + + var linePathsTo = []; + var linePathsFrom = []; + var areaPathsTo = []; + var areaPathsFrom = []; + + if (pos.length) { + linePathsFrom = [this.graphics.move(origin.x, origin.y)]; + areaPathsFrom = [this.graphics.move(origin.x, origin.y)]; + var linePathTo = this.graphics.move(pos[0].x, pos[0].y); + var areaPathTo = this.graphics.move(pos[0].x, pos[0].y); + pos.forEach(function (p, i) { + linePathTo += _this4.graphics.line(p.x, p.y); + areaPathTo += _this4.graphics.line(p.x, p.y); + + if (i === pos.length - 1) { + linePathTo += 'Z'; + areaPathTo += 'Z'; + } + }); + linePathsTo.push(linePathTo); + areaPathsTo.push(areaPathTo); + } + + return { + linePathsFrom: linePathsFrom, + linePathsTo: linePathsTo, + areaPathsFrom: areaPathsFrom, + areaPathsTo: areaPathsTo + }; + } + }, { + key: "getTextPos", + value: function getTextPos(pos, polygonSize) { + var limit = 10; + var textAnchor = 'middle'; + var newX = pos.x; + var newY = pos.y; + + if (Math.abs(pos.x) >= limit) { + if (pos.x > 0) { + textAnchor = 'start'; + newX += 10; + } else if (pos.x < 0) { + textAnchor = 'end'; + newX -= 10; + } + } else { + textAnchor = 'middle'; + } + + if (Math.abs(pos.y) >= polygonSize - limit) { + if (pos.y < 0) { + newY -= 10; + } else if (pos.y > 0) { + newY += 10; + } + } + + return { + textAnchor: textAnchor, + newX: newX, + newY: newY + }; + } + }, { + key: "getPreviousPath", + value: function getPreviousPath(realIndex) { + var w = this.w; + var pathFrom = null; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if (gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[0].d; + } + } + } + + return pathFrom; + } + }, { + key: "getDataPointsPos", + value: function getDataPointsPos(dataRadiusArr, angleArr) { + var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen; + dataRadiusArr = dataRadiusArr || []; + angleArr = angleArr || []; + var dataPointsPosArray = []; + + for (var j = 0; j < dataPointsLen; j++) { + var curPointPos = {}; + curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]); + curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]); + dataPointsPosArray.push(curPointPos); + } + + return dataPointsPosArray; + } + }]); + + return Radar; + }(); + + /** + * ApexCharts Radial Class for drawing Circle / Semi Circle Charts. + * @module Radial + **/ + + var Radial = /*#__PURE__*/function (_Pie) { + _inherits(Radial, _Pie); + + var _super = _createSuper(Radial); + + function Radial(ctx) { + var _this; + + _classCallCheck(this, Radial); + + _this = _super.call(this, ctx); + _this.ctx = ctx; + _this.w = ctx.w; + _this.animBeginArr = [0]; + _this.animDur = 0; + var w = _this.w; + _this.startAngle = w.config.plotOptions.radialBar.startAngle; + _this.endAngle = w.config.plotOptions.radialBar.endAngle; + _this.totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle); + _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle; + _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle; + _this.donutDataLabels = _this.w.config.plotOptions.radialBar.dataLabels; + _this.radialDataLabels = _this.donutDataLabels; // make a copy for easy reference + + if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle; + if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle; + if (_this.endAngle === 360) _this.endAngle = 359.99; + _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin, 10); + return _this; + } + + _createClass(Radial, [{ + key: "draw", + value: function draw(series) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-radialbar' + }); + if (w.globals.noData) return ret; + var elSeries = graphics.group(); + var centerY = this.defaultSize / 2; + var centerX = w.globals.gridWidth / 2; + var size = this.defaultSize / 2.05; + + if (!w.config.chart.sparkline.enabled) { + size = size - w.config.stroke.width - w.config.chart.dropShadow.blur; + } + + var colorArr = w.globals.fill.colors; + + if (w.config.plotOptions.radialBar.track.show) { + var elTracks = this.drawTracks({ + size: size, + centerX: centerX, + centerY: centerY, + colorArr: colorArr, + series: series + }); + elSeries.add(elTracks); + } + + var elG = this.drawArcs({ + size: size, + centerX: centerX, + centerY: centerY, + colorArr: colorArr, + series: series + }); + var totalAngle = 360; + + if (w.config.plotOptions.radialBar.startAngle < 0) { + totalAngle = this.totalAngle; + } + + var angleRatio = (360 - totalAngle) / 360; + w.globals.radialSize = size - size * angleRatio; + + if (this.radialDataLabels.value.show) { + var offset = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY); + w.globals.radialSize += offset * angleRatio; + } + + elSeries.add(elG.g); + + if (w.config.plotOptions.radialBar.hollow.position === 'front') { + elG.g.add(elG.elHollow); + + if (elG.dataLabels) { + elG.g.add(elG.dataLabels); + } + } + + ret.add(elSeries); + return ret; + } + }, { + key: "drawTracks", + value: function drawTracks(opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var g = graphics.group({ + class: 'apexcharts-tracks' + }); + var filters = new Filters(this.ctx); + var fill = new Fill(this.ctx); + var strokeWidth = this.getStrokeWidth(opts); + opts.size = opts.size - strokeWidth / 2; + + for (var i = 0; i < opts.series.length; i++) { + var elRadialBarTrack = graphics.group({ + class: 'apexcharts-radialbar-track apexcharts-track' + }); + g.add(elRadialBarTrack); + elRadialBarTrack.attr({ + rel: i + 1 + }); + opts.size = opts.size - strokeWidth - this.margin; + var trackConfig = w.config.plotOptions.radialBar.track; + var pathFill = fill.fillPath({ + seriesNumber: 0, + size: opts.size, + fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background, + solid: true + }); + var startAngle = this.trackStartAngle; + var endAngle = this.trackEndAngle; + if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1; + var elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth, 10) / 100, + fill: 'none', + strokeOpacity: trackConfig.opacity, + classes: 'apexcharts-radialbar-area' + }); + + if (trackConfig.dropShadow.enabled) { + var shadow = trackConfig.dropShadow; + filters.dropShadow(elPath, shadow); + } + + elRadialBarTrack.add(elPath); + elPath.attr('id', 'apexcharts-radialbarTrack-' + i); + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle: endAngle, + startAngle: startAngle, + size: opts.size, + i: i, + totalItems: 2, + animBeginArr: 0, + dur: 0, + isTrack: true, + easing: w.globals.easing + }); + } + + return g; + } + }, { + key: "drawArcs", + value: function drawArcs(opts) { + var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series + + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var filters = new Filters(this.ctx); + var g = graphics.group(); + var strokeWidth = this.getStrokeWidth(opts); + opts.size = opts.size - strokeWidth / 2; + var hollowFillID = w.config.plotOptions.radialBar.hollow.background; + var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2; + var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin; + + if (w.config.plotOptions.radialBar.hollow.image !== undefined) { + hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID); + } + + var elHollow = this.drawHollow({ + size: hollowRadius, + centerX: opts.centerX, + centerY: opts.centerY, + fill: hollowFillID ? hollowFillID : 'transparent' + }); + + if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) { + var shadow = w.config.plotOptions.radialBar.hollow.dropShadow; + filters.dropShadow(elHollow, shadow); + } + + var shown = 1; + + if (!this.radialDataLabels.total.show && w.globals.series.length > 1) { + shown = 0; + } + + var dataLabels = null; + + if (this.radialDataLabels.show) { + dataLabels = this.renderInnerDataLabels(this.radialDataLabels, { + hollowSize: hollowSize, + centerX: opts.centerX, + centerY: opts.centerY, + opacity: shown + }); + } + + if (w.config.plotOptions.radialBar.hollow.position === 'back') { + g.add(elHollow); + + if (dataLabels) { + g.add(dataLabels); + } + } + + var reverseLoop = false; + + if (w.config.plotOptions.radialBar.inverseOrder) { + reverseLoop = true; + } + + for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) { + var elRadialBarArc = graphics.group({ + class: "apexcharts-series apexcharts-radial-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]) + }); + g.add(elRadialBarArc); + elRadialBarArc.attr({ + rel: i + 1, + 'data:realIndex': i + }); + this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i); + opts.size = opts.size - strokeWidth - this.margin; + var pathFill = fill.fillPath({ + seriesNumber: i, + size: opts.size, + value: opts.series[i] + }); + var startAngle = this.startAngle; + var prevStartAngle = void 0; // if data exceeds 100, make it 100 + + var dataValue = Utils$1.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100; + var endAngle = Math.round(this.totalAngle * dataValue) + this.startAngle; + var prevEndAngle = void 0; + + if (w.globals.dataChanged) { + prevStartAngle = this.startAngle; + prevEndAngle = Math.round(this.totalAngle * Utils$1.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle; + } + + var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle); + + if (currFullAngle >= 360) { + endAngle = endAngle - 0.01; + } + + var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle); + + if (prevFullAngle >= 360) { + prevEndAngle = prevEndAngle - 0.01; + } + + var angle = endAngle - startAngle; + var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray; + var elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth: strokeWidth, + fill: 'none', + fillOpacity: w.config.fill.opacity, + classes: 'apexcharts-radialbar-area apexcharts-radialbar-slice-' + i, + strokeDashArray: dashArray + }); + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:value': opts.series[i] + }); + + if (w.config.chart.dropShadow.enabled) { + var _shadow = w.config.chart.dropShadow; + filters.dropShadow(elPath, _shadow, i); + } + + filters.setSelectionFilter(elPath, 0, i); + this.addListeners(elPath, this.radialDataLabels); + elRadialBarArc.add(elPath); + elPath.attr({ + index: 0, + j: i + }); + var dur = 0; + + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = w.config.chart.animations.speed; + } + + if (w.globals.dataChanged) { + dur = w.config.chart.animations.dynamicAnimation.speed; + } + + this.animDur = dur / (opts.series.length * 1.2) + this.animDur; + this.animBeginArr.push(this.animDur); + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle: endAngle, + startAngle: startAngle, + prevEndAngle: prevEndAngle, + prevStartAngle: prevStartAngle, + size: opts.size, + i: i, + totalItems: 2, + animBeginArr: this.animBeginArr, + dur: dur, + shouldSetPrevPaths: true, + easing: w.globals.easing + }); + } + + return { + g: g, + elHollow: elHollow, + dataLabels: dataLabels + }; + } + }, { + key: "drawHollow", + value: function drawHollow(opts) { + var graphics = new Graphics(this.ctx); + var circle = graphics.drawCircle(opts.size * 2); + circle.attr({ + class: 'apexcharts-radialbar-hollow', + cx: opts.centerX, + cy: opts.centerY, + r: opts.size, + fill: opts.fill + }); + return circle; + } + }, { + key: "drawHollowImage", + value: function drawHollowImage(opts, g, hollowSize, hollowFillID) { + var w = this.w; + var fill = new Fill(this.ctx); + var randID = Utils$1.randomId(); + var hollowFillImg = w.config.plotOptions.radialBar.hollow.image; + + if (w.config.plotOptions.radialBar.hollow.imageClipped) { + fill.clippedImgArea({ + width: hollowSize, + height: hollowSize, + image: hollowFillImg, + patternID: "pattern".concat(w.globals.cuid).concat(randID) + }); + hollowFillID = "url(#pattern".concat(w.globals.cuid).concat(randID, ")"); + } else { + var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth; + var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight; + + if (imgWidth === undefined && imgHeight === undefined) { + var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) { + this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY); + }); + g.add(image); + } else { + var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) { + this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY); + this.size(imgWidth, imgHeight); + }); + + g.add(_image); + } + } + + return hollowFillID; + } + }, { + key: "getStrokeWidth", + value: function getStrokeWidth(opts) { + var w = this.w; + return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (opts.series.length + 1) - this.margin; + } + }]); + + return Radial; + }(Pie); + + /** + * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars. + * + * @module RangeBar + **/ + + var RangeBar = /*#__PURE__*/function (_Bar) { + _inherits(RangeBar, _Bar); + + var _super = _createSuper(RangeBar); + + function RangeBar() { + _classCallCheck(this, RangeBar); + + return _super.apply(this, arguments); + } + + _createClass(RangeBar, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + this.rangeBarOptions = this.w.config.plotOptions.rangeBar; + this.series = series; + this.seriesRangeStart = w.globals.seriesRangeStart; + this.seriesRangeEnd = w.globals.seriesRangeEnd; + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: 'apexcharts-rangebar-series apexcharts-plot-series' + }); + + for (var i = 0; i < series.length; i++) { + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + var initPositions = this.barHelpers.initialPositions(); + y = initPositions.y; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; // eldatalabels + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var elGoalsMarkers = graphics.group({ + class: 'apexcharts-rangebar-goals-markers', + style: "pointer-events: none" + }); + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex); + var y1 = this.seriesRangeStart[i][j]; + var y2 = this.seriesRangeEnd[i][j]; + var paths = null; + var barYPosition = null; + var params = { + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + yDivision = initPositions.yDivision; + barHeight = initPositions.barHeight; + + if (this.isHorizontal) { + barYPosition = y + barHeight * this.visibleI; + var seriesLen = this.seriesLen; + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1; + } + + var srty = (yDivision - barHeight * seriesLen) / 2; + + if (typeof w.config.series[i].data[j] === 'undefined') { + // no data exists for further indexes, hence we need to get out the innr loop. + // As we are iterating over total datapoints, there is a possiblity the series might not have data for j index + break; + } + + if (w.config.series[i].data[j].x) { + var positions = this.detectOverlappingBars({ + i: i, + j: j, + barYPosition: barYPosition, + srty: srty, + barHeight: barHeight, + yDivision: yDivision, + initPositions: initPositions + }); + barHeight = positions.barHeight; + barYPosition = positions.barYPosition; + } + + paths = this.drawRangeBarPaths(_objectSpread2({ + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + barHeight: barHeight, + barYPosition: barYPosition, + zeroW: zeroW, + yDivision: yDivision, + y1: y1, + y2: y2 + }, params)); + barWidth = paths.barWidth; + } else { + paths = this.drawRangeColumnPaths(_objectSpread2({ + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + zeroH: zeroH, + barWidth: barWidth, + xDivision: xDivision + }, params)); + barHeight = paths.barHeight; + } + + var barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; + var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex); + var lineFill = w.globals.stroke.colors[realIndex]; + this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + lineFill: lineFill, + j: j, + i: i, + x: x, + y: y, + y1: y1, + y2: y2, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + series: series, + barHeight: barHeight, + barYPosition: barYPosition, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'rangebar' + }); + } + + ret.add(elSeries); + } + + return ret; + } + }, { + key: "detectOverlappingBars", + value: function detectOverlappingBars(_ref) { + var i = _ref.i, + j = _ref.j, + barYPosition = _ref.barYPosition, + srty = _ref.srty, + barHeight = _ref.barHeight, + yDivision = _ref.yDivision, + initPositions = _ref.initPositions; + var w = this.w; + var overlaps = []; + var rangeName = w.config.series[i].data[j].rangeName; + var labelX = w.config.series[i].data[j].x; + var rowIndex = w.globals.labels.indexOf(labelX); + var overlappedIndex = w.globals.seriesRange[i].findIndex(function (tx) { + return tx.x === labelX && tx.overlaps.length > 0; + }); + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + barYPosition = srty + yDivision * rowIndex; + } else { + barYPosition = srty + barHeight * this.visibleI + yDivision * rowIndex; + } + + if (overlappedIndex > -1 && !w.config.plotOptions.bar.rangeBarOverlap) { + overlaps = w.globals.seriesRange[i][overlappedIndex].overlaps; + + if (overlaps.indexOf(rangeName) > -1) { + barHeight = initPositions.barHeight / overlaps.length; + barYPosition = barHeight * this.visibleI + yDivision * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + barHeight * (this.visibleI + overlaps.indexOf(rangeName)) + yDivision * rowIndex; + } + } + + return { + barYPosition: barYPosition, + barHeight: barHeight + }; + } + }, { + key: "drawRangeColumnPaths", + value: function drawRangeColumnPaths(_ref2) { + var indexes = _ref2.indexes, + x = _ref2.x; + _ref2.strokeWidth; + var xDivision = _ref2.xDivision, + barWidth = _ref2.barWidth, + zeroH = _ref2.zeroH; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + var yRatio = this.yRatio[this.yaxisIndex]; + var realIndex = indexes.realIndex; + var range = this.getRangeValue(realIndex, j); + var y1 = Math.min(range.start, range.end); + var y2 = Math.max(range.start, range.end); + + if (w.globals.isXNumeric) { + x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2; + } + + var barXPosition = x + barWidth * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + y1 = zeroH; + } else { + y1 = zeroH - y1 / yRatio; + y2 = zeroH - y2 / yRatio; + } + + var barHeight = Math.abs(y2 - y1); + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: y1, + y2: y2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + realIndex: indexes.realIndex, + i: realIndex, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barHeight: barHeight, + x: x, + y: y2, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition + }; + } + }, { + key: "drawRangeBarPaths", + value: function drawRangeBarPaths(_ref3) { + var indexes = _ref3.indexes, + y = _ref3.y, + y1 = _ref3.y1, + y2 = _ref3.y2, + yDivision = _ref3.yDivision, + barHeight = _ref3.barHeight, + barYPosition = _ref3.barYPosition, + zeroW = _ref3.zeroW; + var w = this.w; + var x1 = zeroW + y1 / this.invertedYRatio; + var x2 = zeroW + y2 / this.invertedYRatio; + var barWidth = Math.abs(x2 - x1); + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: x1, + x2: x2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + i: indexes.realIndex, + realIndex: indexes.realIndex, + j: indexes.j, + w: w + }); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barWidth: barWidth, + x: x2, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, indexes.realIndex, indexes.j), + y: y + }; + } + }, { + key: "getRangeValue", + value: function getRangeValue(i, j) { + var w = this.w; + return { + start: w.globals.seriesRangeStart[i][j], + end: w.globals.seriesRangeEnd[i][j] + }; + } + }]); + + return RangeBar; + }(Bar); + + var Helpers = /*#__PURE__*/function () { + function Helpers(lineCtx) { + _classCallCheck(this, Helpers); + + this.w = lineCtx.w; + this.lineCtx = lineCtx; + } + + _createClass(Helpers, [{ + key: "sameValueSeriesFix", + value: function sameValueSeriesFix(i, series) { + var w = this.w; + + if (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient') { + var coreUtils = new CoreUtils(this.lineCtx.ctx, w); // applied only to LINE chart + // a small adjustment to allow gradient line to draw correctly for all same values + + /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */ + + if (coreUtils.seriesHaveSameValues(i)) { + var gSeries = series[i].slice(); + gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001; + series[i] = gSeries; + } + } + + return series; + } + }, { + key: "calculatePoints", + value: function calculatePoints(_ref) { + var series = _ref.series, + realIndex = _ref.realIndex, + x = _ref.x, + y = _ref.y, + i = _ref.i, + j = _ref.j, + prevY = _ref.prevY; + var w = this.w; + var ptX = []; + var ptY = []; + + if (j === 0) { + var xPT1st = this.lineCtx.categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series + // we need to check whether it's not a time series, because a time series may + // start from the middle of the x axis + + if (w.globals.isXNumeric) { + xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.lineCtx.xRatio + w.config.markers.offsetX; + } // push 2 points for the first data values + + + ptX.push(xPT1st); + ptY.push(Utils$1.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null); + ptX.push(x + w.config.markers.offsetX); + ptY.push(Utils$1.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null); + } else { + ptX.push(x + w.config.markers.offsetX); + ptY.push(Utils$1.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null); + } + + var pointsPos = { + x: ptX, + y: ptY + }; + return pointsPos; + } + }, { + key: "checkPreviousPaths", + value: function checkPreviousPaths(_ref2) { + var pathFromLine = _ref2.pathFromLine, + pathFromArea = _ref2.pathFromArea, + realIndex = _ref2.realIndex; + var w = this.w; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (gpp.type === 'line') { + this.lineCtx.appendPathFrom = false; + pathFromLine = w.globals.previousPaths[pp].paths[0].d; + } else if (gpp.type === 'area') { + this.lineCtx.appendPathFrom = false; + pathFromArea = w.globals.previousPaths[pp].paths[0].d; + + if (w.config.stroke.show && w.globals.previousPaths[pp].paths[1]) { + pathFromLine = w.globals.previousPaths[pp].paths[1].d; + } + } + } + } + + return { + pathFromLine: pathFromLine, + pathFromArea: pathFromArea + }; + } + }, { + key: "determineFirstPrevY", + value: function determineFirstPrevY(_ref3) { + var _series$i; + + var i = _ref3.i, + series = _ref3.series, + prevY = _ref3.prevY, + lineYPosition = _ref3.lineYPosition; + var w = this.w; + + if (typeof ((_series$i = series[i]) === null || _series$i === void 0 ? void 0 : _series$i[0]) !== 'undefined') { + if (w.config.chart.stacked) { + if (i > 0) { + // 1st y value of previous series + lineYPosition = this.lineCtx.prevSeriesY[i - 1][0]; + } else { + // the first series will not have prevY values + lineYPosition = this.lineCtx.zeroY; + } + } else { + lineYPosition = this.lineCtx.zeroY; + } + + prevY = lineYPosition - series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + (this.lineCtx.isReversed ? series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0) * 2; + } else { + // the first value in the current series is null + if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') { + // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses) + for (var s = i - 1; s >= 0; s--) { + // for loop to get to 1st previous value until we get it + if (series[s][0] !== null && typeof series[s][0] !== 'undefined') { + lineYPosition = this.lineCtx.prevSeriesY[s][0]; + prevY = lineYPosition; + break; + } + } + } + } + + return { + prevY: prevY, + lineYPosition: lineYPosition + }; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Line Class responsible for drawing Line / Area / RangeArea Charts. + * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions + * @module Line + **/ + + var Line = /*#__PURE__*/function () { + function Line(ctx, xyRatios, isPointsChart) { + _classCallCheck(this, Line); + + this.ctx = ctx; + this.w = ctx.w; + this.xyRatios = xyRatios; + this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart; + this.scatter = new Scatter(this.ctx); + this.noNegatives = this.w.globals.minX === Number.MAX_VALUE; + this.lineHelpers = new Helpers(this); + this.markers = new Markers(this.ctx); + this.prevSeriesY = []; + this.categoryAxisCorrection = 0; + this.yaxisIndex = 0; + } + + _createClass(Line, [{ + key: "draw", + value: function draw(series, ctype, seriesIndex, seriesRangeEnd) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var type = w.globals.comboCharts ? ctype : w.config.chart.type; + var ret = graphics.group({ + class: "apexcharts-".concat(type, "-series apexcharts-plot-series") + }); + var coreUtils = new CoreUtils(this.ctx, w); + this.yRatio = this.xyRatios.yRatio; + this.zRatio = this.xyRatios.zRatio; + this.xRatio = this.xyRatios.xRatio; + this.baseLineY = this.xyRatios.baseLineY; + series = coreUtils.getLogSeries(series); + this.yRatio = coreUtils.getLogYRatios(this.yRatio); // push all series in an array, so we can draw in reverse order (for stacked charts) + + var allSeries = []; + + for (var i = 0; i < series.length; i++) { + series = this.lineHelpers.sameValueSeriesFix(i, series); + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; + + this._initSerieVariables(series, i, realIndex); + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var x = w.globals.padHorizontal + this.categoryAxisCorrection; + var y = 1; + var linePaths = []; + var areaPaths = []; + this.ctx.series.addCollapsedClassToSeries(this.elSeries, realIndex); + + if (w.globals.isXNumeric && w.globals.seriesX.length > 0) { + x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.xRatio; + } + + xArrj.push(x); + var pX = x; + var pY = void 0; + var pY2 = void 0; + var prevX = pX; + var prevY = this.zeroY; + var prevY2 = this.zeroY; + var lineYPosition = 0; // the first value in the current series is not null or undefined + + var firstPrevY = this.lineHelpers.determineFirstPrevY({ + i: i, + series: series, + prevY: prevY, + lineYPosition: lineYPosition + }); + prevY = firstPrevY.prevY; + yArrj.push(prevY); + pY = prevY; // y2 are needed for range-area charts + + var firstPrevY2 = void 0; + + if (type === 'rangeArea') { + firstPrevY2 = this.lineHelpers.determineFirstPrevY({ + i: i, + series: seriesRangeEnd, + prevY: prevY2, + lineYPosition: lineYPosition + }); + prevY2 = firstPrevY2.prevY; + pY2 = prevY2; + } + + var pathsFrom = this._calculatePathsFrom({ + type: type, + series: series, + i: i, + realIndex: realIndex, + prevX: prevX, + prevY: prevY, + prevY2: prevY2 + }); + + var iteratingOpts = { + type: type, + series: series, + realIndex: realIndex, + i: i, + x: x, + y: y, + pX: pX, + pY: pY, + pathsFrom: pathsFrom, + linePaths: linePaths, + areaPaths: areaPaths, + seriesIndex: seriesIndex, + lineYPosition: lineYPosition, + xArrj: xArrj, + yArrj: yArrj, + seriesRangeEnd: seriesRangeEnd + }; + + var paths = this._iterateOverDataPoints(_objectSpread2(_objectSpread2({}, iteratingOpts), {}, { + iterations: type === 'rangeArea' ? series[i].length - 1 : undefined, + isRangeStart: true + })); + + if (type === 'rangeArea') { + var pathsFrom2 = this._calculatePathsFrom({ + series: seriesRangeEnd, + i: i, + realIndex: realIndex, + prevX: prevX, + prevY: prevY2 + }); + + var rangePaths = this._iterateOverDataPoints(_objectSpread2(_objectSpread2({}, iteratingOpts), {}, { + series: seriesRangeEnd, + pY: pY2, + pathsFrom: pathsFrom2, + iterations: seriesRangeEnd[i].length - 1, + isRangeStart: false + })); + + paths.linePaths[0] = rangePaths.linePath + paths.linePath; + paths.pathFromLine = rangePaths.pathFromLine + paths.pathFromLine; + } + + this._handlePaths({ + type: type, + realIndex: realIndex, + i: i, + paths: paths + }); + + this.elSeries.add(this.elPointsMain); + this.elSeries.add(this.elDataLabelsWrap); + allSeries.push(this.elSeries); + } + + if (w.config.chart.stacked) { + for (var s = allSeries.length; s > 0; s--) { + ret.add(allSeries[s - 1]); + } + } else { + for (var _s = 0; _s < allSeries.length; _s++) { + ret.add(allSeries[_s]); + } + } + + return ret; + } + }, { + key: "_initSerieVariables", + value: function _initSerieVariables(series, i, realIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); // width divided into equal parts + + this.xDivision = w.globals.gridWidth / (w.globals.dataPoints - (w.config.xaxis.tickPlacement === 'on' ? 1 : 0)); + this.strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // zeroY is the 0 value in y series which can be used in negative charts + + this.zeroY = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); + this.areaBottomY = this.zeroY; + + if (this.zeroY > w.globals.gridHeight || w.config.plotOptions.area.fillTo === 'end') { + this.areaBottomY = w.globals.gridHeight; + } + + this.categoryAxisCorrection = this.xDivision / 2; // el to which series will be drawn + + this.elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]) + }); // points + + this.elPointsMain = graphics.group({ + class: 'apexcharts-series-markers-wrap', + 'data:realIndex': realIndex + }); // eldatalabels + + this.elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var longestSeries = series[i].length === w.globals.dataPoints; + this.elSeries.attr({ + 'data:longestSeries': longestSeries, + rel: i + 1, + 'data:realIndex': realIndex + }); + this.appendPathFrom = true; + } + }, { + key: "_calculatePathsFrom", + value: function _calculatePathsFrom(_ref) { + var type = _ref.type, + series = _ref.series, + i = _ref.i, + realIndex = _ref.realIndex, + prevX = _ref.prevX, + prevY = _ref.prevY, + prevY2 = _ref.prevY2; + var w = this.w; + var graphics = new Graphics(this.ctx); + var linePath, areaPath, pathFromLine, pathFromArea; + + if (series[i][0] === null) { + // when the first value itself is null, we need to move the pointer to a location where a null value is not found + for (var s = 0; s < series[i].length; s++) { + if (series[i][s] !== null) { + prevX = this.xDivision * s; + prevY = this.zeroY - series[i][s] / this.yRatio[this.yaxisIndex]; + linePath = graphics.move(prevX, prevY); + areaPath = graphics.move(prevX, this.areaBottomY); + break; + } + } + } else { + linePath = graphics.move(prevX, prevY); + + if (type === 'rangeArea') { + linePath = graphics.move(prevX, prevY2) + graphics.line(prevX, prevY); + } + + areaPath = graphics.move(prevX, this.areaBottomY) + graphics.line(prevX, prevY); + } + + pathFromLine = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY); + pathFromArea = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY); + + if (w.globals.previousPaths.length > 0) { + var pathFrom = this.lineHelpers.checkPreviousPaths({ + pathFromLine: pathFromLine, + pathFromArea: pathFromArea, + realIndex: realIndex + }); + pathFromLine = pathFrom.pathFromLine; + pathFromArea = pathFrom.pathFromArea; + } + + return { + prevX: prevX, + prevY: prevY, + linePath: linePath, + areaPath: areaPath, + pathFromLine: pathFromLine, + pathFromArea: pathFromArea + }; + } + }, { + key: "_handlePaths", + value: function _handlePaths(_ref2) { + var type = _ref2.type, + realIndex = _ref2.realIndex, + i = _ref2.i, + paths = _ref2.paths; + var w = this.w; + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); // push all current y values array to main PrevY Array + + this.prevSeriesY.push(paths.yArrj); // push all x val arrays into main xArr + + w.globals.seriesXvalues[realIndex] = paths.xArrj; + w.globals.seriesYvalues[realIndex] = paths.yArrj; + var forecast = w.config.forecastDataPoints; + + if (forecast.count > 0 && type !== 'rangeArea') { + var forecastCutoff = w.globals.seriesXvalues[realIndex][w.globals.seriesXvalues[realIndex].length - forecast.count - 1]; + var elForecastMask = graphics.drawRect(forecastCutoff, 0, w.globals.gridWidth, w.globals.gridHeight, 0); + w.globals.dom.elForecastMask.appendChild(elForecastMask.node); + var elNonForecastMask = graphics.drawRect(0, 0, forecastCutoff, w.globals.gridHeight, 0); + w.globals.dom.elNonForecastMask.appendChild(elNonForecastMask.node); + } // these elements will be shown after area path animation completes + + + if (!this.pointsChart) { + w.globals.delayedElements.push({ + el: this.elPointsMain.node, + index: realIndex + }); + } + + var defaultRenderedPathOptions = { + i: i, + realIndex: realIndex, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-".concat(type) + }; + + if (type === 'area') { + var pathFill = fill.fillPath({ + seriesNumber: realIndex + }); + + for (var p = 0; p < paths.areaPaths.length; p++) { + var renderedPath = graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: paths.pathFromArea, + pathTo: paths.areaPaths[p], + stroke: 'none', + strokeWidth: 0, + strokeLineCap: null, + fill: pathFill + })); + this.elSeries.add(renderedPath); + } + } + + if (w.config.stroke.show && !this.pointsChart) { + var lineFill = null; + + if (type === 'line') { + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i: i + }); + } else { + if (w.config.stroke.fill.type === 'solid') { + lineFill = w.globals.stroke.colors[realIndex]; + } else { + var prevFill = w.config.fill; + w.config.fill = w.config.stroke.fill; + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i: i + }); + w.config.fill = prevFill; + } + } // range-area paths are drawn using linePaths + + + for (var _p = 0; _p < paths.linePaths.length; _p++) { + var _pathFill = lineFill; + + if (type === 'rangeArea') { + _pathFill = fill.fillPath({ + seriesNumber: realIndex + }); + } + + var linePathCommonOpts = _objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: paths.pathFromLine, + pathTo: paths.linePaths[_p], + stroke: lineFill, + strokeWidth: this.strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: type === 'rangeArea' ? _pathFill : 'none' + }); + + var _renderedPath = graphics.renderPaths(linePathCommonOpts); + + this.elSeries.add(_renderedPath); + + _renderedPath.attr('fill-rule', "evenodd"); + + if (forecast.count > 0 && type !== 'rangeArea') { + var renderedForecastPath = graphics.renderPaths(linePathCommonOpts); + renderedForecastPath.node.setAttribute('stroke-dasharray', forecast.dashArray); + + if (forecast.strokeWidth) { + renderedForecastPath.node.setAttribute('stroke-width', forecast.strokeWidth); + } + + this.elSeries.add(renderedForecastPath); + renderedForecastPath.attr('clip-path', "url(#forecastMask".concat(w.globals.cuid, ")")); + + _renderedPath.attr('clip-path', "url(#nonForecastMask".concat(w.globals.cuid, ")")); + } + } + } + } + }, { + key: "_iterateOverDataPoints", + value: function _iterateOverDataPoints(_ref3) { + var type = _ref3.type, + series = _ref3.series, + iterations = _ref3.iterations, + realIndex = _ref3.realIndex, + i = _ref3.i, + x = _ref3.x, + y = _ref3.y, + pX = _ref3.pX, + pY = _ref3.pY, + pathsFrom = _ref3.pathsFrom, + linePaths = _ref3.linePaths, + areaPaths = _ref3.areaPaths, + seriesIndex = _ref3.seriesIndex, + lineYPosition = _ref3.lineYPosition, + xArrj = _ref3.xArrj, + yArrj = _ref3.yArrj, + isRangeStart = _ref3.isRangeStart, + seriesRangeEnd = _ref3.seriesRangeEnd; + var w = this.w; + var graphics = new Graphics(this.ctx); + var yRatio = this.yRatio; + var prevY = pathsFrom.prevY, + linePath = pathsFrom.linePath, + areaPath = pathsFrom.areaPath, + pathFromLine = pathsFrom.pathFromLine, + pathFromArea = pathsFrom.pathFromArea; + var minY = Utils$1.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY; + + if (!iterations) { + iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints; + } + + var y2 = y; + + for (var j = 0; j < iterations; j++) { + var isNull = typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null; + + if (w.globals.isXNumeric) { + var sX = w.globals.seriesX[realIndex][j + 1]; + + if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') { + /* fix #374 */ + sX = w.globals.seriesX[realIndex][iterations - 1]; + } + + x = (sX - w.globals.minX) / this.xRatio; + } else { + x = x + this.xDivision; + } + + if (w.config.chart.stacked) { + if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) { + // a collapsed series in a stacked bar chart may provide wrong result for the next series, hence find the prevIndex of prev series which is not collapsed - fixes apexcharts.js#1372 + var prevIndex = function prevIndex(pi) { + var pii = pi; + + for (var cpi = 0; cpi < w.globals.series.length; cpi++) { + if (w.globals.collapsedSeriesIndices.indexOf(pi) > -1) { + pii--; + break; + } + } + + return pii >= 0 ? pii : 0; + }; + + lineYPosition = this.prevSeriesY[prevIndex(i - 1)][j + 1]; + } else { + // the first series will not have prevY values + lineYPosition = this.zeroY; + } + } else { + lineYPosition = this.zeroY; + } + + if (isNull) { + y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2; + } else { + y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2; + + if (type === 'rangeArea') { + y2 = lineYPosition - seriesRangeEnd[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? seriesRangeEnd[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2; + } + } // push current X + + + xArrj.push(x); // push current Y that will be used as next series's bottom position + + yArrj.push(y); + var pointsPos = this.lineHelpers.calculatePoints({ + series: series, + x: x, + y: y, + realIndex: realIndex, + i: i, + j: j, + prevY: prevY + }); + + var calculatedPaths = this._createPaths({ + type: type, + series: series, + i: i, + realIndex: realIndex, + j: j, + x: x, + y: y, + y2: y2, + pX: pX, + pY: pY, + linePath: linePath, + areaPath: areaPath, + linePaths: linePaths, + areaPaths: areaPaths, + seriesIndex: seriesIndex, + isRangeStart: isRangeStart + }); + + areaPaths = calculatedPaths.areaPaths; + linePaths = calculatedPaths.linePaths; + pX = calculatedPaths.pX; + pY = calculatedPaths.pY; + areaPath = calculatedPaths.areaPath; + linePath = calculatedPaths.linePath; + + if (this.appendPathFrom) { + pathFromLine = pathFromLine + graphics.line(x, this.zeroY); + pathFromArea = pathFromArea + graphics.line(x, this.zeroY); + } + + this.handleNullDataPoints(series, pointsPos, i, j, realIndex); + + this._handleMarkersAndLabels({ + type: type, + pointsPos: pointsPos, + i: i, + j: j, + realIndex: realIndex, + isRangeStart: isRangeStart + }); + } + + return { + yArrj: yArrj, + xArrj: xArrj, + pathFromArea: pathFromArea, + areaPaths: areaPaths, + pathFromLine: pathFromLine, + linePaths: linePaths, + linePath: linePath, + areaPath: areaPath + }; + } + }, { + key: "_handleMarkersAndLabels", + value: function _handleMarkersAndLabels(_ref4) { + var type = _ref4.type, + pointsPos = _ref4.pointsPos, + isRangeStart = _ref4.isRangeStart, + i = _ref4.i, + j = _ref4.j, + realIndex = _ref4.realIndex; + var w = this.w; + var dataLabels = new DataLabels(this.ctx); + + if (!this.pointsChart) { + if (w.globals.series[i].length > 1) { + this.elPointsMain.node.classList.add('apexcharts-element-hidden'); + } + + var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1); + + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap); + } + } else { + // scatter / bubble chart points creation + this.scatter.draw(this.elSeries, j, { + realIndex: realIndex, + pointsPos: pointsPos, + zRatio: this.zRatio, + elParent: this.elPointsMain + }); + } + + var drawnLabels = dataLabels.drawDataLabel({ + type: type, + isRangeStart: isRangeStart, + pos: pointsPos, + i: realIndex, + j: j + 1 + }); + + if (drawnLabels !== null) { + this.elDataLabelsWrap.add(drawnLabels); + } + } + }, { + key: "_createPaths", + value: function _createPaths(_ref5) { + var type = _ref5.type, + series = _ref5.series, + i = _ref5.i, + realIndex = _ref5.realIndex, + j = _ref5.j, + x = _ref5.x, + y = _ref5.y, + y2 = _ref5.y2, + pX = _ref5.pX, + pY = _ref5.pY, + linePath = _ref5.linePath, + areaPath = _ref5.areaPath, + linePaths = _ref5.linePaths, + areaPaths = _ref5.areaPaths, + seriesIndex = _ref5.seriesIndex, + isRangeStart = _ref5.isRangeStart; + var w = this.w; + var graphics = new Graphics(this.ctx); + var curve = w.config.stroke.curve; + var areaBottomY = this.areaBottomY; + + if (Array.isArray(w.config.stroke.curve)) { + if (Array.isArray(seriesIndex)) { + curve = w.config.stroke.curve[seriesIndex[i]]; + } else { + curve = w.config.stroke.curve[i]; + } + } // logic of smooth curve derived from chartist + // CREDITS: https://gionkunz.github.io/chartist-js/ + + + if (curve === 'smooth') { + var length = (x - pX) * 0.35; + + if (w.globals.hasNullValues) { + if (series[i][j] !== null) { + if (series[i][j + 1] !== null) { + linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y); + areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z'; + } else { + linePath = graphics.move(pX, pY); + areaPath = graphics.move(pX, pY) + 'z'; + } + } + + linePaths.push(linePath); + areaPaths.push(areaPath); + } else { + linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y); + areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y); + } + + pX = x; + pY = y; + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z'; + + if (type === 'rangeArea' && isRangeStart) { + linePath = linePath + graphics.curve(pX, pY, x, y, x, y2) + graphics.move(x, y2) + 'z'; + } else { + if (!w.globals.hasNullValues) { + linePaths.push(linePath); + areaPaths.push(areaPath); + } + } + } + } else { + if (series[i][j + 1] === null) { + linePath = linePath + graphics.move(x, y); + var numericOrCatX = w.globals.isXNumeric ? (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio : x - this.xDivision; + areaPath = areaPath + graphics.line(numericOrCatX, areaBottomY) + graphics.move(x, y) + 'z'; + } + + if (series[i][j] === null) { + linePath = linePath + graphics.move(x, y); + areaPath = areaPath + graphics.move(x, areaBottomY); + } + + if (curve === 'stepline') { + linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V'); + areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V'); + } else if (curve === 'straight') { + linePath = linePath + graphics.line(x, y); + areaPath = areaPath + graphics.line(x, y); + } + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z'; + + if (type === 'rangeArea' && isRangeStart) { + linePath = linePath + graphics.line(x, y2) + graphics.move(x, y2) + 'z'; + } else { + linePaths.push(linePath); + areaPaths.push(areaPath); + } + } + } + + return { + linePaths: linePaths, + areaPaths: areaPaths, + pX: pX, + pY: pY, + linePath: linePath, + areaPath: areaPath + }; + } + }, { + key: "handleNullDataPoints", + value: function handleNullDataPoints(series, pointsPos, i, j, realIndex) { + var w = this.w; + + if (series[i][j] === null && w.config.markers.showNullDataPoints || series[i].length === 1) { + // fixes apexcharts.js#1282, #1252 + var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1, this.strokeWidth - w.config.markers.strokeWidth / 2, true); + + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap); + } + } + } + }]); + + return Line; + }(); + + /* + * treemap-squarify.js - open source implementation of squarified treemaps + * + * Treemap Squared 0.5 - Treemap Charting library + * + * https://github.com/imranghory/treemap-squared/ + * + * Copyright (c) 2012 Imran Ghory (imranghory@gmail.com) + * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. + * + * + * Implementation of the squarify treemap algorithm described in: + * + * Bruls, Mark; Huizing, Kees; van Wijk, Jarke J. (2000), "Squarified treemaps" + * in de Leeuw, W.; van Liere, R., Data Visualization 2000: + * Proc. Joint Eurographics and IEEE TCVG Symp. on Visualization, Springer-Verlag, pp. 33–42. + * + * Paper is available online at: http://www.win.tue.nl/~vanwijk/stm.pdf + * + * The code in this file is completeley decoupled from the drawing code so it should be trivial + * to port it to any other vector drawing library. Given an array of datapoints this library returns + * an array of cartesian coordinates that represent the rectangles that make up the treemap. + * + * The library also supports multidimensional data (nested treemaps) and performs normalization on the data. + * + * See the README file for more details. + */ + window.TreemapSquared = {}; + + (function () { + + window.TreemapSquared.generate = function () { + function Container(xoffset, yoffset, width, height) { + this.xoffset = xoffset; // offset from the the top left hand corner + + this.yoffset = yoffset; // ditto + + this.height = height; + this.width = width; + + this.shortestEdge = function () { + return Math.min(this.height, this.width); + }; // getCoordinates - for a row of boxes which we've placed + // return an array of their cartesian coordinates + + + this.getCoordinates = function (row) { + var coordinates = []; + var subxoffset = this.xoffset, + subyoffset = this.yoffset; //our offset within the container + + var areawidth = sumArray(row) / this.height; + var areaheight = sumArray(row) / this.width; + var i; + + if (this.width >= this.height) { + for (i = 0; i < row.length; i++) { + coordinates.push([subxoffset, subyoffset, subxoffset + areawidth, subyoffset + row[i] / areawidth]); + subyoffset = subyoffset + row[i] / areawidth; + } + } else { + for (i = 0; i < row.length; i++) { + coordinates.push([subxoffset, subyoffset, subxoffset + row[i] / areaheight, subyoffset + areaheight]); + subxoffset = subxoffset + row[i] / areaheight; + } + } + + return coordinates; + }; // cutArea - once we've placed some boxes into an row we then need to identify the remaining area, + // this function takes the area of the boxes we've placed and calculates the location and + // dimensions of the remaining space and returns a container box defined by the remaining area + + + this.cutArea = function (area) { + var newcontainer; + + if (this.width >= this.height) { + var areawidth = area / this.height; + var newwidth = this.width - areawidth; + newcontainer = new Container(this.xoffset + areawidth, this.yoffset, newwidth, this.height); + } else { + var areaheight = area / this.width; + var newheight = this.height - areaheight; + newcontainer = new Container(this.xoffset, this.yoffset + areaheight, this.width, newheight); + } + + return newcontainer; + }; + } // normalize - the Bruls algorithm assumes we're passing in areas that nicely fit into our + // container box, this method takes our raw data and normalizes the data values into + // area values so that this assumption is valid. + + + function normalize(data, area) { + var normalizeddata = []; + var sum = sumArray(data); + var multiplier = area / sum; + var i; + + for (i = 0; i < data.length; i++) { + normalizeddata[i] = data[i] * multiplier; + } + + return normalizeddata; + } // treemapMultidimensional - takes multidimensional data (aka [[23,11],[11,32]] - nested array) + // and recursively calls itself using treemapSingledimensional + // to create a patchwork of treemaps and merge them + + + function treemapMultidimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset; + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset; + var mergeddata = []; + var mergedtreemap; + var results = []; + var i; + + if (isArray(data[0])) { + // if we've got more dimensions of depth + for (i = 0; i < data.length; i++) { + mergeddata[i] = sumMultidimensionalArray(data[i]); + } + + mergedtreemap = treemapSingledimensional(mergeddata, width, height, xoffset, yoffset); + + for (i = 0; i < data.length; i++) { + results.push(treemapMultidimensional(data[i], mergedtreemap[i][2] - mergedtreemap[i][0], mergedtreemap[i][3] - mergedtreemap[i][1], mergedtreemap[i][0], mergedtreemap[i][1])); + } + } else { + results = treemapSingledimensional(data, width, height, xoffset, yoffset); + } + + return results; + } // treemapSingledimensional - simple wrapper around squarify + + + function treemapSingledimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset; + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset; + var rawtreemap = squarify(normalize(data, width * height), [], new Container(xoffset, yoffset, width, height), []); + return flattenTreemap(rawtreemap); + } // flattenTreemap - squarify implementation returns an array of arrays of coordinates + // because we have a new array everytime we switch to building a new row + // this converts it into an array of coordinates. + + + function flattenTreemap(rawtreemap) { + var flattreemap = []; + var i, j; + + for (i = 0; i < rawtreemap.length; i++) { + for (j = 0; j < rawtreemap[i].length; j++) { + flattreemap.push(rawtreemap[i][j]); + } + } + + return flattreemap; + } // squarify - as per the Bruls paper + // plus coordinates stack and containers so we get + // usable data out of it + + + function squarify(data, currentrow, container, stack) { + var length; + var nextdatapoint; + var newcontainer; + + if (data.length === 0) { + stack.push(container.getCoordinates(currentrow)); + return; + } + + length = container.shortestEdge(); + nextdatapoint = data[0]; + + if (improvesRatio(currentrow, nextdatapoint, length)) { + currentrow.push(nextdatapoint); + squarify(data.slice(1), currentrow, container, stack); + } else { + newcontainer = container.cutArea(sumArray(currentrow), stack); + stack.push(container.getCoordinates(currentrow)); + squarify(data, [], newcontainer, stack); + } + + return stack; + } // improveRatio - implements the worse calculation and comparision as given in Bruls + // (note the error in the original paper; fixed here) + + + function improvesRatio(currentrow, nextnode, length) { + var newrow; + + if (currentrow.length === 0) { + return true; + } + + newrow = currentrow.slice(); + newrow.push(nextnode); + var currentratio = calculateRatio(currentrow, length); + var newratio = calculateRatio(newrow, length); // the pseudocode in the Bruls paper has the direction of the comparison + // wrong, this is the correct one. + + return currentratio >= newratio; + } // calculateRatio - calculates the maximum width to height ratio of the + // boxes in this row + + + function calculateRatio(row, length) { + var min = Math.min.apply(Math, row); + var max = Math.max.apply(Math, row); + var sum = sumArray(row); + return Math.max(Math.pow(length, 2) * max / Math.pow(sum, 2), Math.pow(sum, 2) / (Math.pow(length, 2) * min)); + } // isArray - checks if arr is an array + + + function isArray(arr) { + return arr && arr.constructor === Array; + } // sumArray - sums a single dimensional array + + + function sumArray(arr) { + var sum = 0; + var i; + + for (i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + return sum; + } // sumMultidimensionalArray - sums the values in a nested array (aka [[0,1],[[2,3]]]) + + + function sumMultidimensionalArray(arr) { + var i, + total = 0; + + if (isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += sumMultidimensionalArray(arr[i]); + } + } else { + total = sumArray(arr); + } + + return total; + } + + return treemapMultidimensional; + }(); + })(); + + /** + * ApexCharts TreemapChart Class. + * @module TreemapChart + **/ + + var TreemapChart = /*#__PURE__*/function () { + function TreemapChart(ctx, xyRatios) { + _classCallCheck(this, TreemapChart); + + this.ctx = ctx; + this.w = ctx.w; + this.strokeWidth = this.w.config.stroke.width; + this.helpers = new TreemapHelpers(ctx); + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation; + this.labels = []; + } + + _createClass(TreemapChart, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-treemap' + }); + if (w.globals.noData) return ret; + var ser = []; + series.forEach(function (s) { + var d = s.map(function (v) { + return Math.abs(v); + }); + ser.push(d); + }); + this.negRange = this.helpers.checkColorRange(); + w.config.series.forEach(function (s, i) { + s.data.forEach(function (l) { + if (!Array.isArray(_this.labels[i])) _this.labels[i] = []; + + _this.labels[i].push(l.x); + }); + }); + var nodes = window.TreemapSquared.generate(ser, w.globals.gridWidth, w.globals.gridHeight); + nodes.forEach(function (node, i) { + var elSeries = graphics.group({ + class: "apexcharts-series apexcharts-treemap-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + var filters = new Filters(_this.ctx); + filters.dropShadow(ret, shadow, i); + } + + var elDataLabelWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + node.forEach(function (r, j) { + var x1 = r[0]; + var y1 = r[1]; + var x2 = r[2]; + var y2 = r[3]; + var elRect = graphics.drawRect(x1, y1, x2 - x1, y2 - y1, 0, '#fff', 1, _this.strokeWidth, w.config.plotOptions.treemap.useFillColorAsStroke ? color : w.globals.stroke.colors[i]); + elRect.attr({ + cx: x1, + cy: y1, + index: i, + i: i, + j: j, + width: x2 - x1, + height: y2 - y1 + }); + + var colorProps = _this.helpers.getShadeColor(w.config.chart.type, i, j, _this.negRange); + + var color = colorProps.color; + + if (typeof w.config.series[i].data[j] !== 'undefined' && w.config.series[i].data[j].fillColor) { + color = w.config.series[i].data[j].fillColor; + } + + var pathFill = fill.fillPath({ + color: color, + seriesNumber: i, + dataPointIndex: j + }); + elRect.node.classList.add('apexcharts-treemap-rect'); + elRect.attr({ + fill: pathFill + }); + + _this.helpers.addListeners(elRect); + + var fromRect = { + x: x1 + (x2 - x1) / 2, + y: y1 + (y2 - y1) / 2, + width: 0, + height: 0 + }; + var toRect = { + x: x1, + y: y1, + width: x2 - x1, + height: y2 - y1 + }; + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + var speed = 1; + + if (!w.globals.resized) { + speed = w.config.chart.animations.speed; + } + + _this.animateTreemap(elRect, fromRect, toRect, speed); + } + + if (w.globals.dataChanged) { + var _speed = 1; + + if (_this.dynamicAnim.enabled && w.globals.shouldAnimate) { + _speed = _this.dynamicAnim.speed; + + if (w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].rect) { + fromRect = w.globals.previousPaths[i][j].rect; + } + + _this.animateTreemap(elRect, fromRect, toRect, _speed); + } + } + + var fontSize = _this.getFontSize(r); + + var formattedText = w.config.dataLabels.formatter(_this.labels[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w: w + }); + + var dataLabels = _this.helpers.calculateDataLabels({ + text: formattedText, + x: (x1 + x2) / 2, + y: (y1 + y2) / 2 + _this.strokeWidth / 2 + fontSize / 3, + i: i, + j: j, + colorProps: colorProps, + fontSize: fontSize, + series: series + }); + + if (w.config.dataLabels.enabled && dataLabels) { + _this.rotateToFitLabel(dataLabels, fontSize, formattedText, x1, y1, x2, y2); + } + + elSeries.add(elRect); + + if (dataLabels !== null) { + elSeries.add(dataLabels); + } + }); + elSeries.add(elDataLabelWrap); + ret.add(elSeries); + }); + return ret; + } // This calculates a font-size based upon + // average label length and the size of the box the label is + // going into. The maximum font size is set in chart config. + + }, { + key: "getFontSize", + value: function getFontSize(coordinates) { + var w = this.w; // total length of labels (i.e [["Italy"],["Spain", "Greece"]] -> 16) + + function totalLabelLength(arr) { + var i, + total = 0; + + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += totalLabelLength(arr[i]); + } + } else { + for (i = 0; i < arr.length; i++) { + total += arr[i].length; + } + } + + return total; + } // count of labels (i.e [["Italy"],["Spain", "Greece"]] -> 3) + + + function countLabels(arr) { + var i, + total = 0; + + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += countLabels(arr[i]); + } + } else { + for (i = 0; i < arr.length; i++) { + total += 1; + } + } + + return total; + } + + var averagelabelsize = totalLabelLength(this.labels) / countLabels(this.labels); + + function fontSize(width, height) { + // the font size should be proportional to the size of the box (and the value) + // otherwise you can end up creating a visual distortion where two boxes of identical + // size have different sized labels, and thus make it look as if the two boxes + // represent different sizes + var area = width * height; + var arearoot = Math.pow(area, 0.5); + return Math.min(arearoot / averagelabelsize, parseInt(w.config.dataLabels.style.fontSize, 10)); + } + + return fontSize(coordinates[2] - coordinates[0], coordinates[3] - coordinates[1]); + } + }, { + key: "rotateToFitLabel", + value: function rotateToFitLabel(elText, fontSize, text, x1, y1, x2, y2) { + var graphics = new Graphics(this.ctx); + var textRect = graphics.getTextRects(text, fontSize); //if the label fits better sideways then rotate it + + if (textRect.width + this.w.config.stroke.width + 5 > x2 - x1 && textRect.width <= y2 - y1) { + var labelRotatingCenter = graphics.rotateAroundCenter(elText.node); + elText.node.setAttribute('transform', "rotate(-90 ".concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")")); + } + } + }, { + key: "animateTreemap", + value: function animateTreemap(el, fromRect, toRect, speed) { + var animations = new Animations(this.ctx); + animations.animateRect(el, { + x: fromRect.x, + y: fromRect.y, + width: fromRect.width, + height: fromRect.height + }, { + x: toRect.x, + y: toRect.y, + width: toRect.width, + height: toRect.height + }, speed, function () { + animations.animationCompleted(el); + }); + } + }]); + + return TreemapChart; + }(); + + var MINUTES_IN_DAY = 24 * 60; + var SECONDS_IN_DAY = MINUTES_IN_DAY * 60; + var MIN_ZOOM_DAYS = 10 / SECONDS_IN_DAY; + /** + * ApexCharts TimeScale Class for generating time ticks for x-axis. + * + * @module TimeScale + **/ + + var TimeScale = /*#__PURE__*/function () { + function TimeScale(ctx) { + _classCallCheck(this, TimeScale); + + this.ctx = ctx; + this.w = ctx.w; + this.timeScaleArray = []; + this.utc = this.w.config.xaxis.labels.datetimeUTC; + } + + _createClass(TimeScale, [{ + key: "calculateTimeScaleTicks", + value: function calculateTimeScaleTicks(minX, maxX) { + var _this = this; + + var w = this.w; // null check when no series to show + + if (w.globals.allSeriesCollapsed) { + w.globals.labels = []; + w.globals.timescaleLabels = []; + return []; + } + + var dt = new DateTime(this.ctx); + var daysDiff = (maxX - minX) / (1000 * SECONDS_IN_DAY); + this.determineInterval(daysDiff); + w.globals.disableZoomIn = false; + w.globals.disableZoomOut = false; + + if (daysDiff < MIN_ZOOM_DAYS) { + w.globals.disableZoomIn = true; + } else if (daysDiff > 50000) { + w.globals.disableZoomOut = true; + } + + var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX, this.utc); + var daysWidthOnXAxis = w.globals.gridWidth / daysDiff; + var hoursWidthOnXAxis = daysWidthOnXAxis / 24; + var minutesWidthOnXAxis = hoursWidthOnXAxis / 60; + var secondsWidthOnXAxis = minutesWidthOnXAxis / 60; + var numberOfHours = Math.floor(daysDiff * 24); + var numberOfMinutes = Math.floor(daysDiff * MINUTES_IN_DAY); + var numberOfSeconds = Math.floor(daysDiff * SECONDS_IN_DAY); + var numberOfDays = Math.floor(daysDiff); + var numberOfMonths = Math.floor(daysDiff / 30); + var numberOfYears = Math.floor(daysDiff / 365); + var firstVal = { + minMillisecond: timeIntervals.minMillisecond, + minSecond: timeIntervals.minSecond, + minMinute: timeIntervals.minMinute, + minHour: timeIntervals.minHour, + minDate: timeIntervals.minDate, + minMonth: timeIntervals.minMonth, + minYear: timeIntervals.minYear + }; + var currentMillisecond = firstVal.minMillisecond; + var currentSecond = firstVal.minSecond; + var currentMinute = firstVal.minMinute; + var currentHour = firstVal.minHour; + var currentMonthDate = firstVal.minDate; + var currentDate = firstVal.minDate; + var currentMonth = firstVal.minMonth; + var currentYear = firstVal.minYear; + var params = { + firstVal: firstVal, + currentMillisecond: currentMillisecond, + currentSecond: currentSecond, + currentMinute: currentMinute, + currentHour: currentHour, + currentMonthDate: currentMonthDate, + currentDate: currentDate, + currentMonth: currentMonth, + currentYear: currentYear, + daysWidthOnXAxis: daysWidthOnXAxis, + hoursWidthOnXAxis: hoursWidthOnXAxis, + minutesWidthOnXAxis: minutesWidthOnXAxis, + secondsWidthOnXAxis: secondsWidthOnXAxis, + numberOfSeconds: numberOfSeconds, + numberOfMinutes: numberOfMinutes, + numberOfHours: numberOfHours, + numberOfDays: numberOfDays, + numberOfMonths: numberOfMonths, + numberOfYears: numberOfYears + }; + + switch (this.tickInterval) { + case 'years': + { + this.generateYearScale(params); + break; + } + + case 'months': + case 'half_year': + { + this.generateMonthScale(params); + break; + } + + case 'months_days': + case 'months_fortnight': + case 'days': + case 'week_days': + { + this.generateDayScale(params); + break; + } + + case 'hours': + { + this.generateHourScale(params); + break; + } + + case 'minutes_fives': + case 'minutes': + this.generateMinuteScale(params); + break; + + case 'seconds_tens': + case 'seconds_fives': + case 'seconds': + this.generateSecondScale(params); + break; + } // first, we will adjust the month values index + // as in the upper function, it is starting from 0 + // we will start them from 1 + + + var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) { + var defaultReturn = { + position: ts.position, + unit: ts.unit, + year: ts.year, + day: ts.day ? ts.day : 1, + hour: ts.hour ? ts.hour : 0, + month: ts.month + 1 + }; + + if (ts.unit === 'month') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + day: 1, + value: ts.value + 1 + }); + } else if (ts.unit === 'day' || ts.unit === 'hour') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value + }); + } else if (ts.unit === 'minute') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value, + minute: ts.value + }); + } else if (ts.unit === 'second') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value, + minute: ts.minute, + second: ts.second + }); + } + + return ts; + }); + var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) { + var modulo = 1; + var ticks = Math.ceil(w.globals.gridWidth / 120); + var value = ts.value; + + if (w.config.xaxis.tickAmount !== undefined) { + ticks = w.config.xaxis.tickAmount; + } + + if (adjustedMonthInTimeScaleArray.length > ticks) { + modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks); + } + + var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months + + var shouldNotPrint = false; // should skip these values + + switch (_this.tickInterval) { + case 'years': + // make years label denser + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'half_year': + modulo = 7; + + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'months': + modulo = 1; + + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'months_fortnight': + modulo = 15; + + if (ts.unit === 'year' || ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + if (value === 30) { + shouldNotPrint = true; + } + + break; + + case 'months_days': + modulo = 10; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + if (value === 30) { + shouldNotPrint = true; + } + + break; + + case 'week_days': + modulo = 8; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + break; + + case 'days': + modulo = 1; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + break; + + case 'hours': + if (ts.unit === 'day') { + shouldNotSkipUnit = true; + } + + break; + + case 'minutes_fives': + if (value % 5 !== 0) { + shouldNotPrint = true; + } + + break; + + case 'seconds_tens': + if (value % 10 !== 0) { + shouldNotPrint = true; + } + + break; + + case 'seconds_fives': + if (value % 5 !== 0) { + shouldNotPrint = true; + } + + break; + } + + if (_this.tickInterval === 'hours' || _this.tickInterval === 'minutes_fives' || _this.tickInterval === 'seconds_tens' || _this.tickInterval === 'seconds_fives') { + if (!shouldNotPrint) { + return true; + } + } else { + if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) { + return true; + } + } + }); + return filteredTimeScale; + } + }, { + key: "recalcDimensionsBasedOnFormat", + value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) { + var w = this.w; + var reformattedTimescaleArray = this.formatDates(filteredTimeScale); + var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray); + w.globals.timescaleLabels = removedOverlappingTS.slice(); // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords + // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX + // Dependency on Dimensions(), need to refactor correctly + // TODO - find an alternate way to avoid calling this Heavy method twice + + var dimensions = new Dimensions(this.ctx); + dimensions.plotCoords(); + } + }, { + key: "determineInterval", + value: function determineInterval(daysDiff) { + var yearsDiff = daysDiff / 365; + var hoursDiff = daysDiff * 24; + var minutesDiff = hoursDiff * 60; + var secondsDiff = minutesDiff * 60; + + switch (true) { + case yearsDiff > 5: + this.tickInterval = 'years'; + break; + + case daysDiff > 800: + this.tickInterval = 'half_year'; + break; + + case daysDiff > 180: + this.tickInterval = 'months'; + break; + + case daysDiff > 90: + this.tickInterval = 'months_fortnight'; + break; + + case daysDiff > 60: + this.tickInterval = 'months_days'; + break; + + case daysDiff > 30: + this.tickInterval = 'week_days'; + break; + + case daysDiff > 2: + this.tickInterval = 'days'; + break; + + case hoursDiff > 2.4: + this.tickInterval = 'hours'; + break; + + case minutesDiff > 15: + this.tickInterval = 'minutes_fives'; + break; + + case minutesDiff > 5: + this.tickInterval = 'minutes'; + break; + + case minutesDiff > 1: + this.tickInterval = 'seconds_tens'; + break; + + case secondsDiff > 20: + this.tickInterval = 'seconds_fives'; + break; + + default: + this.tickInterval = 'seconds'; + break; + } + } + }, { + key: "generateYearScale", + value: function generateYearScale(_ref) { + var firstVal = _ref.firstVal, + currentMonth = _ref.currentMonth, + currentYear = _ref.currentYear, + daysWidthOnXAxis = _ref.daysWidthOnXAxis, + numberOfYears = _ref.numberOfYears; + var firstTickValue = firstVal.minYear; + var firstTickPosition = 0; + var dt = new DateTime(this.ctx); + var unit = 'year'; + + if (firstVal.minDate > 1 || firstVal.minMonth > 0) { + var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position + + var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position + + firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis; + firstTickValue = firstVal.minYear + 1; // push the first tick in the array + + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: firstTickValue, + month: Utils$1.monthMod(currentMonth + 1) + }); + } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: currentYear, + month: Utils$1.monthMod(currentMonth + 1) + }); + } + + var year = firstTickValue; + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfYears; i++) { + year++; + pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos; + this.timeScaleArray.push({ + position: pos, + value: year, + unit: unit, + year: year, + month: 1 + }); + } + } + }, { + key: "generateMonthScale", + value: function generateMonthScale(_ref2) { + var firstVal = _ref2.firstVal, + currentMonthDate = _ref2.currentMonthDate, + currentMonth = _ref2.currentMonth, + currentYear = _ref2.currentYear, + daysWidthOnXAxis = _ref2.daysWidthOnXAxis, + numberOfMonths = _ref2.numberOfMonths; + var firstTickValue = currentMonth; + var firstTickPosition = 0; + var dt = new DateTime(this.ctx); + var unit = 'month'; + var yrCounter = 0; + + if (firstVal.minDate > 1) { + // remainingDaysofFirstMonth is used to reacht the 2nd tick position + var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position + + firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis; + firstTickValue = Utils$1.monthMod(currentMonth + 1); + var year = currentYear + yrCounter; + + var _month = Utils$1.monthMod(firstTickValue); + + var value = firstTickValue; // it's Jan, so update the year + + if (firstTickValue === 0) { + unit = 'year'; + value = year; + _month = 1; + yrCounter += 1; + year = year + yrCounter; + } // push the first tick in the array + + + this.timeScaleArray.push({ + position: firstTickPosition, + value: value, + unit: unit, + year: year, + month: _month + }); + } else { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: currentYear, + month: Utils$1.monthMod(currentMonth) + }); + } + + var month = firstTickValue + 1; + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0, j = 1; i < numberOfMonths; i++, j++) { + month = Utils$1.monthMod(month); + + if (month === 0) { + unit = 'year'; + yrCounter += 1; + } else { + unit = 'month'; + } + + var _year = this._getYear(currentYear, month, yrCounter); + + pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos; + var monthVal = month === 0 ? _year : month; + this.timeScaleArray.push({ + position: pos, + value: monthVal, + unit: unit, + year: _year, + month: month === 0 ? 1 : month + }); + month++; + } + } + }, { + key: "generateDayScale", + value: function generateDayScale(_ref3) { + var firstVal = _ref3.firstVal, + currentMonth = _ref3.currentMonth, + currentYear = _ref3.currentYear, + hoursWidthOnXAxis = _ref3.hoursWidthOnXAxis, + numberOfDays = _ref3.numberOfDays; + var dt = new DateTime(this.ctx); + var unit = 'day'; + var firstTickValue = firstVal.minDate + 1; + var date = firstTickValue; + + var changeMonth = function changeMonth(dateVal, month, year) { + var monthdays = dt.determineDaysOfMonths(month + 1, year); + + if (dateVal > monthdays) { + month = month + 1; + date = 1; + unit = 'month'; + val = month; + return month; + } + + return month; + }; + + var remainingHours = 24 - firstVal.minHour; + var yrCounter = 0; // calculate the first tick position + + var firstTickPosition = remainingHours * hoursWidthOnXAxis; + var val = firstTickValue; + var month = changeMonth(date, currentMonth, currentYear); + + if (firstVal.minHour === 0 && firstVal.minDate === 1) { + // the first value is the first day of month + firstTickPosition = 0; + val = Utils$1.monthMod(firstVal.minMonth); + unit = 'month'; + date = firstVal.minDate; + numberOfDays++; + } else if (firstVal.minDate !== 1 && firstVal.minHour === 0 && firstVal.minMinute === 0) { + // fixes apexcharts/apexcharts.js/issues/1730 + firstTickPosition = 0; + firstTickValue = firstVal.minDate; + date = firstTickValue; + val = firstTickValue; // in case it's the last date of month, we need to check it + + month = changeMonth(date, currentMonth, currentYear); + } // push the first tick in the array + + + this.timeScaleArray.push({ + position: firstTickPosition, + value: val, + unit: unit, + year: this._getYear(currentYear, month, yrCounter), + month: Utils$1.monthMod(month), + day: date + }); + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfDays; i++) { + date += 1; + unit = 'day'; + month = changeMonth(date, month, this._getYear(currentYear, month, yrCounter)); + + var year = this._getYear(currentYear, month, yrCounter); + + pos = 24 * hoursWidthOnXAxis + pos; + var value = date === 1 ? Utils$1.monthMod(month) : date; + this.timeScaleArray.push({ + position: pos, + value: value, + unit: unit, + year: year, + month: Utils$1.monthMod(month), + day: value + }); + } + } + }, { + key: "generateHourScale", + value: function generateHourScale(_ref4) { + var firstVal = _ref4.firstVal, + currentDate = _ref4.currentDate, + currentMonth = _ref4.currentMonth, + currentYear = _ref4.currentYear, + minutesWidthOnXAxis = _ref4.minutesWidthOnXAxis, + numberOfHours = _ref4.numberOfHours; + var dt = new DateTime(this.ctx); + var yrCounter = 0; + var unit = 'hour'; + + var changeDate = function changeDate(dateVal, month) { + var monthdays = dt.determineDaysOfMonths(month + 1, currentYear); + + if (dateVal > monthdays) { + date = 1; + month = month + 1; + } + + return { + month: month, + date: date + }; + }; + + var changeMonth = function changeMonth(dateVal, month) { + var monthdays = dt.determineDaysOfMonths(month + 1, currentYear); + + if (dateVal > monthdays) { + month = month + 1; + return month; + } + + return month; + }; // factor in minSeconds as well + + + var remainingMins = 60 - (firstVal.minMinute + firstVal.minSecond / 60.0); + var firstTickPosition = remainingMins * minutesWidthOnXAxis; + var firstTickValue = firstVal.minHour + 1; + var hour = firstTickValue + 1; + + if (remainingMins === 60) { + firstTickPosition = 0; + firstTickValue = firstVal.minHour; + hour = firstTickValue + 1; + } + + var date = currentDate; + var month = changeMonth(date, currentMonth); // push the first tick in the array + + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + day: date, + hour: hour, + year: currentYear, + month: Utils$1.monthMod(month) + }); + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfHours; i++) { + unit = 'hour'; + + if (hour >= 24) { + hour = 0; + date += 1; + unit = 'day'; + var checkNextMonth = changeDate(date, month); + month = checkNextMonth.month; + month = changeMonth(date, month); + } + + var year = this._getYear(currentYear, month, yrCounter); + + pos = 60 * minutesWidthOnXAxis + pos; + var val = hour === 0 ? date : hour; + this.timeScaleArray.push({ + position: pos, + value: val, + unit: unit, + hour: hour, + day: date, + year: year, + month: Utils$1.monthMod(month) + }); + hour++; + } + } + }, { + key: "generateMinuteScale", + value: function generateMinuteScale(_ref5) { + var currentMillisecond = _ref5.currentMillisecond, + currentSecond = _ref5.currentSecond, + currentMinute = _ref5.currentMinute, + currentHour = _ref5.currentHour, + currentDate = _ref5.currentDate, + currentMonth = _ref5.currentMonth, + currentYear = _ref5.currentYear, + minutesWidthOnXAxis = _ref5.minutesWidthOnXAxis, + secondsWidthOnXAxis = _ref5.secondsWidthOnXAxis, + numberOfMinutes = _ref5.numberOfMinutes; + var yrCounter = 0; + var unit = 'minute'; + var remainingSecs = 60 - currentSecond; + var firstTickPosition = (remainingSecs - currentMillisecond / 1000) * secondsWidthOnXAxis; + var minute = currentMinute + 1; + var date = currentDate; + var month = currentMonth; + var year = currentYear; + var hour = currentHour; + var pos = firstTickPosition; + + for (var i = 0; i < numberOfMinutes; i++) { + if (minute >= 60) { + minute = 0; + hour += 1; + + if (hour === 24) { + hour = 0; + } + } + + this.timeScaleArray.push({ + position: pos, + value: minute, + unit: unit, + hour: hour, + minute: minute, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils$1.monthMod(month) + }); + pos += minutesWidthOnXAxis; + minute++; + } + } + }, { + key: "generateSecondScale", + value: function generateSecondScale(_ref6) { + var currentMillisecond = _ref6.currentMillisecond, + currentSecond = _ref6.currentSecond, + currentMinute = _ref6.currentMinute, + currentHour = _ref6.currentHour, + currentDate = _ref6.currentDate, + currentMonth = _ref6.currentMonth, + currentYear = _ref6.currentYear, + secondsWidthOnXAxis = _ref6.secondsWidthOnXAxis, + numberOfSeconds = _ref6.numberOfSeconds; + var yrCounter = 0; + var unit = 'second'; + var remainingMillisecs = 1000 - currentMillisecond; + var firstTickPosition = remainingMillisecs / 1000 * secondsWidthOnXAxis; + var second = currentSecond + 1; + var minute = currentMinute; + var date = currentDate; + var month = currentMonth; + var year = currentYear; + var hour = currentHour; + var pos = firstTickPosition; + + for (var i = 0; i < numberOfSeconds; i++) { + if (second >= 60) { + minute++; + second = 0; + + if (minute >= 60) { + hour++; + minute = 0; + + if (hour === 24) { + hour = 0; + } + } + } + + this.timeScaleArray.push({ + position: pos, + value: second, + unit: unit, + hour: hour, + minute: minute, + second: second, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils$1.monthMod(month) + }); + pos += secondsWidthOnXAxis; + second++; + } + } + }, { + key: "createRawDateString", + value: function createRawDateString(ts, value) { + var raw = ts.year; + + if (ts.month === 0) { + // invalid month, correct it + ts.month = 1; + } + + raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day + + if (ts.unit === 'day') { + raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01'; + } else { + raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2); + } // unit is hour + + + if (ts.unit === 'hour') { + raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00'; + } else { + raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2); + } + + if (ts.unit === 'minute') { + raw += ':' + ('0' + value).slice(-2); + } else { + raw += ':' + (ts.minute ? ('0' + ts.minute).slice(-2) : '00'); + } + + if (ts.unit === 'second') { + raw += ':' + ('0' + value).slice(-2); + } else { + raw += ':00'; + } + + if (this.utc) { + raw += '.000Z'; + } + + return raw; + } + }, { + key: "formatDates", + value: function formatDates(filteredTimeScale) { + var _this2 = this; + + var w = this.w; + var reformattedTimescaleArray = filteredTimeScale.map(function (ts) { + var value = ts.value.toString(); + var dt = new DateTime(_this2.ctx); + + var raw = _this2.createRawDateString(ts, value); + + var dateToFormat = dt.getDate(dt.parseDate(raw)); + + if (!_this2.utc) { + // Fixes #1726, #1544, #1485, #1255 + dateToFormat = dt.getDate(dt.parseDateWithTimezone(raw)); + } + + if (w.config.xaxis.labels.format === undefined) { + var customFormat = 'dd MMM'; + var dtFormatter = w.config.xaxis.labels.datetimeFormatter; + if (ts.unit === 'year') customFormat = dtFormatter.year; + if (ts.unit === 'month') customFormat = dtFormatter.month; + if (ts.unit === 'day') customFormat = dtFormatter.day; + if (ts.unit === 'hour') customFormat = dtFormatter.hour; + if (ts.unit === 'minute') customFormat = dtFormatter.minute; + if (ts.unit === 'second') customFormat = dtFormatter.second; + value = dt.formatDate(dateToFormat, customFormat); + } else { + value = dt.formatDate(dateToFormat, w.config.xaxis.labels.format); + } + + return { + dateString: raw, + position: ts.position, + value: value, + unit: ts.unit, + year: ts.year, + month: ts.month + }; + }); + return reformattedTimescaleArray; + } + }, { + key: "removeOverlappingTS", + value: function removeOverlappingTS(arr) { + var _this3 = this; + + var graphics = new Graphics(this.ctx); + var equalLabelLengthFlag = false; // These labels got same length? + + var constantLabelWidth; // If true, what is the constant length to use + + if (arr.length > 0 && // check arr length + arr[0].value && // check arr[0] contains value + arr.every(function (lb) { + return lb.value.length === arr[0].value.length; + }) // check every arr label value is the same as the first one + ) { + equalLabelLengthFlag = true; // These labels got same length + + constantLabelWidth = graphics.getTextRects(arr[0].value).width; // The constant label width to use + } + + var lastDrawnIndex = 0; + var filteredArray = arr.map(function (item, index) { + if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) { + var prevLabelWidth = !equalLabelLengthFlag // if vary in label length + ? graphics.getTextRects(arr[lastDrawnIndex].value).width // get individual length + : constantLabelWidth; // else: use constant length + + var prevPos = arr[lastDrawnIndex].position; + var pos = item.position; + + if (pos > prevPos + prevLabelWidth + 10) { + lastDrawnIndex = index; + return item; + } else { + return null; + } + } else { + return item; + } + }); + filteredArray = filteredArray.filter(function (f) { + return f !== null; + }); + return filteredArray; + } + }, { + key: "_getYear", + value: function _getYear(currentYear, month, yrCounter) { + return currentYear + Math.floor(month / 12) + yrCounter; + } + }]); + + return TimeScale; + }(); + + /** + * ApexCharts Core Class responsible for major calculations and creating elements. + * + * @module Core + **/ + + var Core = /*#__PURE__*/function () { + function Core(el, ctx) { + _classCallCheck(this, Core); + + this.ctx = ctx; + this.w = ctx.w; + this.el = el; + } // get data and store into appropriate vars + + + _createClass(Core, [{ + key: "setupElements", + value: function setupElements() { + var gl = this.w.globals; + var cnf = this.w.config; // const graphics = new Graphics(this.ctx) + + var ct = cnf.chart.type; + var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'rangeArea', 'candlestick', 'boxPlot', 'scatter', 'bubble', 'radar', 'heatmap', 'treemap']; + var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'rangeArea', 'candlestick', 'boxPlot', 'scatter', 'bubble']; + gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1; + gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1; + gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar' || cnf.chart.type === 'boxPlot') && cnf.plotOptions.bar.horizontal; + gl.chartClass = '.apexcharts' + gl.chartID; + gl.dom.baseEl = this.el; + gl.dom.elWrap = document.createElement('div'); + Graphics.setAttrs(gl.dom.elWrap, { + id: gl.chartClass.substring(1), + class: 'apexcharts-canvas ' + gl.chartClass.substring(1) + }); + this.el.appendChild(gl.dom.elWrap); + gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap); + gl.dom.Paper.attr({ + class: 'apexcharts-svg', + 'xmlns:data': 'ApexChartsNS', + transform: "translate(".concat(cnf.chart.offsetX, ", ").concat(cnf.chart.offsetY, ")") + }); + gl.dom.Paper.node.style.background = cnf.chart.background; + this.setSVGDimensions(); // append foreignElement (legend's parent) + // legend is kept in foreignElement to be included while exporting + // removing foreignElement and creating legend through HTML will not render legend in export + + gl.dom.elLegendForeign = document.createElementNS(gl.SVGNS, 'foreignObject'); + Graphics.setAttrs(gl.dom.elLegendForeign, { + x: 0, + y: 0, + width: gl.svgWidth, + height: gl.svgHeight + }); + gl.dom.elLegendWrap = document.createElement('div'); + gl.dom.elLegendWrap.classList.add('apexcharts-legend'); + gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); + gl.dom.elLegendForeign.appendChild(gl.dom.elLegendWrap); + gl.dom.Paper.node.appendChild(gl.dom.elLegendForeign); // the elGraphical is the parent of all primary visuals + + gl.dom.elGraphical = gl.dom.Paper.group().attr({ + class: 'apexcharts-inner apexcharts-graphical' + }); + gl.dom.elDefs = gl.dom.Paper.defs(); + gl.dom.Paper.add(gl.dom.elGraphical); + gl.dom.elGraphical.add(gl.dom.elDefs); + } + }, { + key: "plotChartType", + value: function plotChartType(ser, xyRatios) { + var w = this.w; + var cnf = w.config; + var gl = w.globals; + var lineSeries = { + series: [], + i: [] + }; + var areaSeries = { + series: [], + i: [] + }; + var scatterSeries = { + series: [], + i: [] + }; + var bubbleSeries = { + series: [], + i: [] + }; + var columnSeries = { + series: [], + i: [] + }; + var candlestickSeries = { + series: [], + i: [] + }; + var boxplotSeries = { + series: [], + i: [] + }; + var rangeBarSeries = { + series: [], + i: [] + }; + var rangeAreaSeries = { + series: [], + seriesRangeEnd: [], + i: [] + }; + gl.series.map(function (serie, st) { + var comboCount = 0; // if user has specified a particular type for particular series + + if (typeof ser[st].type !== 'undefined') { + if (ser[st].type === 'column' || ser[st].type === 'bar') { + if (gl.series.length > 1 && cnf.plotOptions.bar.horizontal) { + // horizontal bars not supported in mixed charts, hence show a warning + console.warn('Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`'); + } + + columnSeries.series.push(serie); + columnSeries.i.push(st); + comboCount++; + w.globals.columnSeries = columnSeries.series; + } else if (ser[st].type === 'area') { + areaSeries.series.push(serie); + areaSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'line') { + lineSeries.series.push(serie); + lineSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'scatter') { + scatterSeries.series.push(serie); + scatterSeries.i.push(st); + } else if (ser[st].type === 'bubble') { + bubbleSeries.series.push(serie); + bubbleSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'candlestick') { + candlestickSeries.series.push(serie); + candlestickSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'boxPlot') { + boxplotSeries.series.push(serie); + boxplotSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'rangeBar') { + rangeBarSeries.series.push(serie); + rangeBarSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'rangeArea') { + rangeAreaSeries.series.push(gl.seriesRangeStart[st]); + rangeAreaSeries.seriesRangeEnd.push(gl.seriesRangeEnd[st]); + rangeAreaSeries.i.push(st); + comboCount++; + } else { + // user has specified type, but it is not valid (other than line/area/column) + console.warn('You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea'); + } + + if (comboCount > 1) { + gl.comboCharts = true; + } + } else { + lineSeries.series.push(serie); + lineSeries.i.push(st); + } + }); + var line = new Line(this.ctx, xyRatios); + var boxCandlestick = new BoxCandleStick(this.ctx, xyRatios); + this.ctx.pie = new Pie(this.ctx); + var radialBar = new Radial(this.ctx); + this.ctx.rangeBar = new RangeBar(this.ctx, xyRatios); + var radar = new Radar(this.ctx); + var elGraph = []; + + if (gl.comboCharts) { + if (areaSeries.series.length > 0) { + elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i)); + } + + if (columnSeries.series.length > 0) { + if (w.config.chart.stacked) { + var barStacked = new BarStacked(this.ctx, xyRatios); + elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i)); + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios); + elGraph.push(this.ctx.bar.draw(columnSeries.series, columnSeries.i)); + } + } + + if (rangeAreaSeries.series.length > 0) { + elGraph.push(line.draw(rangeAreaSeries.series, 'rangeArea', rangeAreaSeries.i, rangeAreaSeries.seriesRangeEnd)); + } + + if (lineSeries.series.length > 0) { + elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i)); + } + + if (candlestickSeries.series.length > 0) { + elGraph.push(boxCandlestick.draw(candlestickSeries.series, 'candlestick', candlestickSeries.i)); + } + + if (boxplotSeries.series.length > 0) { + elGraph.push(boxCandlestick.draw(boxplotSeries.series, 'boxPlot', boxplotSeries.i)); + } + + if (rangeBarSeries.series.length > 0) { + elGraph.push(this.ctx.rangeBar.draw(rangeBarSeries.series, rangeBarSeries.i)); + } + + if (scatterSeries.series.length > 0) { + var scatterLine = new Line(this.ctx, xyRatios, true); + elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i)); + } + + if (bubbleSeries.series.length > 0) { + var bubbleLine = new Line(this.ctx, xyRatios, true); + elGraph.push(bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)); + } + } else { + switch (cnf.chart.type) { + case 'line': + elGraph = line.draw(gl.series, 'line'); + break; + + case 'area': + elGraph = line.draw(gl.series, 'area'); + break; + + case 'bar': + if (cnf.chart.stacked) { + var _barStacked = new BarStacked(this.ctx, xyRatios); + + elGraph = _barStacked.draw(gl.series); + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios); + elGraph = this.ctx.bar.draw(gl.series); + } + + break; + + case 'candlestick': + var candleStick = new BoxCandleStick(this.ctx, xyRatios); + elGraph = candleStick.draw(gl.series, 'candlestick'); + break; + + case 'boxPlot': + var boxPlot = new BoxCandleStick(this.ctx, xyRatios); + elGraph = boxPlot.draw(gl.series, 'boxPlot'); + break; + + case 'rangeBar': + elGraph = this.ctx.rangeBar.draw(gl.series); + break; + + case 'rangeArea': + elGraph = line.draw(gl.seriesRangeStart, 'rangeArea', undefined, gl.seriesRangeEnd); + break; + + case 'heatmap': + var heatmap = new HeatMap(this.ctx, xyRatios); + elGraph = heatmap.draw(gl.series); + break; + + case 'treemap': + var treemap = new TreemapChart(this.ctx, xyRatios); + elGraph = treemap.draw(gl.series); + break; + + case 'pie': + case 'donut': + case 'polarArea': + elGraph = this.ctx.pie.draw(gl.series); + break; + + case 'radialBar': + elGraph = radialBar.draw(gl.series); + break; + + case 'radar': + elGraph = radar.draw(gl.series); + break; + + default: + elGraph = line.draw(gl.series); + } + } + + return elGraph; + } + }, { + key: "setSVGDimensions", + value: function setSVGDimensions() { + var gl = this.w.globals; + var cnf = this.w.config; + gl.svgWidth = cnf.chart.width; + gl.svgHeight = cnf.chart.height; + var elDim = Utils$1.getDimensions(this.el); + var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop(); + + if (widthUnit === '%') { + if (Utils$1.isNumber(elDim[0])) { + if (elDim[0].width === 0) { + elDim = Utils$1.getDimensions(this.el.parentNode); + } + + gl.svgWidth = elDim[0] * parseInt(cnf.chart.width, 10) / 100; + } + } else if (widthUnit === 'px' || widthUnit === '') { + gl.svgWidth = parseInt(cnf.chart.width, 10); + } + + var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop(); + + if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') { + if (heightUnit === '%') { + var elParentDim = Utils$1.getDimensions(this.el.parentNode); + gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height, 10) / 100; + } else { + gl.svgHeight = parseInt(cnf.chart.height, 10); + } + } else { + if (gl.axisCharts) { + gl.svgHeight = gl.svgWidth / 1.61; + } else { + gl.svgHeight = gl.svgWidth / 1.2; + } + } + + if (gl.svgWidth < 0) gl.svgWidth = 0; + if (gl.svgHeight < 0) gl.svgHeight = 0; + Graphics.setAttrs(gl.dom.Paper.node, { + width: gl.svgWidth, + height: gl.svgHeight + }); + + if (heightUnit !== '%') { + // fixes https://github.com/apexcharts/apexcharts.js/issues/2059 + var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0; + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px'; + } + + gl.dom.elWrap.style.width = gl.svgWidth + 'px'; + gl.dom.elWrap.style.height = gl.svgHeight + 'px'; + } + }, { + key: "shiftGraphPosition", + value: function shiftGraphPosition() { + var gl = this.w.globals; + var tY = gl.translateY; + var tX = gl.translateX; + var scalingAttrs = { + transform: 'translate(' + tX + ', ' + tY + ')' + }; + Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs); + } // To prevent extra spacings in the bottom of the chart, we need to recalculate the height for pie/donut/radialbar charts + + }, { + key: "resizeNonAxisCharts", + value: function resizeNonAxisCharts() { + var w = this.w; + var gl = w.globals; + var legendHeight = 0; + var offY = w.config.chart.sparkline.enabled ? 1 : 15; + offY = offY + w.config.grid.padding.bottom; + + if ((w.config.legend.position === 'top' || w.config.legend.position === 'bottom') && w.config.legend.show && !w.config.legend.floating) { + legendHeight = new Legend(this.ctx).legendHelpers.getLegendBBox().clwh + 10; + } + + var el = w.globals.dom.baseEl.querySelector('.apexcharts-radialbar, .apexcharts-pie'); + var chartInnerDimensions = w.globals.radialSize * 2.05; + + if (el && !w.config.chart.sparkline.enabled && w.config.plotOptions.radialBar.startAngle !== 0) { + var elRadialRect = Utils$1.getBoundingClientRect(el); + chartInnerDimensions = elRadialRect.bottom; + var maxHeight = elRadialRect.bottom - elRadialRect.top; + chartInnerDimensions = Math.max(w.globals.radialSize * 2.05, maxHeight); + } + + var newHeight = chartInnerDimensions + gl.translateY + legendHeight + offY; + + if (gl.dom.elLegendForeign) { + gl.dom.elLegendForeign.setAttribute('height', newHeight); + } // fix apexcharts/apexcharts.js/issues/3105 (when % is provided in height, it keeps increasing) + + + if (w.config.chart.height && String(w.config.chart.height).indexOf('%') > 0) return; + gl.dom.elWrap.style.height = newHeight + 'px'; + Graphics.setAttrs(gl.dom.Paper.node, { + height: newHeight + }); + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = newHeight + 'px'; + } + /* + ** All the calculations for setting range in charts will be done here + */ + + }, { + key: "coreCalculations", + value: function coreCalculations() { + var range = new Range(this.ctx); + range.init(); + } + }, { + key: "resetGlobals", + value: function resetGlobals() { + var _this = this; + + var resetxyValues = function resetxyValues() { + return _this.w.config.series.map(function (s) { + return []; + }); + }; + + var globalObj = new Globals(); + var gl = this.w.globals; + globalObj.initGlobalVars(gl); + gl.seriesXvalues = resetxyValues(); + gl.seriesYvalues = resetxyValues(); + } + }, { + key: "isMultipleY", + value: function isMultipleY() { + // user has supplied an array in yaxis property. So, turn on multipleYAxis flag + if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) { + this.w.globals.isMultipleYAxis = true; + return true; + } + } + }, { + key: "xySettings", + value: function xySettings() { + var xyRatios = null; + var w = this.w; + + if (w.globals.axisCharts) { + if (w.config.xaxis.crosshairs.position === 'back') { + var crosshairs = new Crosshairs(this.ctx); + crosshairs.drawXCrosshairs(); + } + + if (w.config.yaxis[0].crosshairs.position === 'back') { + var _crosshairs = new Crosshairs(this.ctx); + + _crosshairs.drawYCrosshairs(); + } + + if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) { + this.ctx.timeScale = new TimeScale(this.ctx); + var formattedTimeScale = []; + + if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX); + } else if (w.globals.isBarHorizontal) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY); + } + + this.ctx.timeScale.recalcDimensionsBasedOnFormat(formattedTimeScale); + } + + var coreUtils = new CoreUtils(this.ctx); + xyRatios = coreUtils.getCalculatedRatios(); + } + + return xyRatios; + } + }, { + key: "updateSourceChart", + value: function updateSourceChart(targetChart) { + this.ctx.w.globals.selection = undefined; + + this.ctx.updateHelpers._updateOptions({ + chart: { + selection: { + xaxis: { + min: targetChart.w.globals.minX, + max: targetChart.w.globals.maxX + } + } + } + }, false, false); + } + }, { + key: "setupBrushHandler", + value: function setupBrushHandler() { + var _this2 = this; + + var w = this.w; // only for brush charts + + if (!w.config.chart.brush.enabled) { + return; + } // if user has not defined a custom function for selection - we handle the brush chart + // otherwise we leave it to the user to define the functionality for selection + + + if (typeof w.config.chart.events.selection !== 'function') { + var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option + + targets.forEach(function (target) { + var targetChart = ApexCharts.getChartByID(target); + targetChart.w.globals.brushSource = _this2.ctx; + + if (typeof targetChart.w.config.chart.events.zoomed !== 'function') { + targetChart.w.config.chart.events.zoomed = function () { + _this2.updateSourceChart(targetChart); + }; + } + + if (typeof targetChart.w.config.chart.events.scrolled !== 'function') { + targetChart.w.config.chart.events.scrolled = function () { + _this2.updateSourceChart(targetChart); + }; + } + }); + + w.config.chart.events.selection = function (chart, e) { + targets.forEach(function (target) { + var targetChart = ApexCharts.getChartByID(target); + var yaxis = Utils$1.clone(w.config.yaxis); + + if (w.config.chart.brush.autoScaleYaxis && targetChart.w.globals.series.length === 1) { + var scale = new Range$1(targetChart); + yaxis = scale.autoScaleY(targetChart, yaxis, e); + } + + var multipleYaxis = targetChart.w.config.yaxis.reduce(function (acc, curr, index) { + return [].concat(_toConsumableArray(acc), [_objectSpread2(_objectSpread2({}, targetChart.w.config.yaxis[index]), {}, { + min: yaxis[0].min, + max: yaxis[0].max + })]); + }, []); + + targetChart.ctx.updateHelpers._updateOptions({ + xaxis: { + min: e.xaxis.min, + max: e.xaxis.max + }, + yaxis: multipleYaxis + }, false, false, false, false); + }); + }; + } + } + }]); + + return Core; + }(); + + var UpdateHelpers = /*#__PURE__*/function () { + function UpdateHelpers(ctx) { + _classCallCheck(this, UpdateHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + /** + * private method to update Options. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + * @param {boolean} overwriteInitialConfig - should update the initial config or not + */ + + + _createClass(UpdateHelpers, [{ + key: "_updateOptions", + value: function _updateOptions(options) { + var _this = this; + + var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + return new Promise(function (resolve) { + var charts = [_this.ctx]; + + if (updateSyncedCharts) { + charts = _this.ctx.getSyncedCharts(); + } + + if (_this.ctx.w.globals.isExecCalled) { + // If the user called exec method, we don't want to get grouped charts as user specifically provided a chartID to update + charts = [_this.ctx]; + _this.ctx.w.globals.isExecCalled = false; + } + + charts.forEach(function (ch, chartIndex) { + var w = ch.w; + w.globals.shouldAnimate = animate; + + if (!redraw) { + w.globals.resized = true; + w.globals.dataChanged = true; + + if (animate) { + ch.series.getPreviousPaths(); + } + } + + if (options && _typeof(options) === 'object') { + ch.config = new Config(options); + options = CoreUtils.extendArrayProps(ch.config, options, w); // fixes #914, #623 + + if (ch.w.globals.chartID !== _this.ctx.w.globals.chartID) { + // don't overwrite series of synchronized charts + delete options.series; + } + + w.config = Utils$1.extend(w.config, options); + + if (overwriteInitialConfig) { + // we need to forget the lastXAxis and lastYAxis as user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user. + w.globals.lastXAxis = options.xaxis ? Utils$1.clone(options.xaxis) : []; + w.globals.lastYAxis = options.yaxis ? Utils$1.clone(options.yaxis) : []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries + + w.globals.initialConfig = Utils$1.extend({}, w.config); + w.globals.initialSeries = Utils$1.clone(w.config.series); + + if (options.series) { + // Replace the collapsed series data + for (var i = 0; i < w.globals.collapsedSeriesIndices.length; i++) { + var series = w.config.series[w.globals.collapsedSeriesIndices[i]]; + w.globals.collapsedSeries[i].data = w.globals.axisCharts ? series.data.slice() : series; + } + + for (var _i = 0; _i < w.globals.ancillaryCollapsedSeriesIndices.length; _i++) { + var _series = w.config.series[w.globals.ancillaryCollapsedSeriesIndices[_i]]; + w.globals.ancillaryCollapsedSeries[_i].data = w.globals.axisCharts ? _series.data.slice() : _series; + } // Ensure that auto-generated axes are scaled to the visible data + + + ch.series.emptyCollapsedSeries(w.config.series); + } + } + } + + return ch.update(options).then(function () { + if (chartIndex === charts.length - 1) { + resolve(ch); + } + }); + }); + }); + } + /** + * Private method to update Series. + * + * @param {array} series - New series which will override the existing + */ + + }, { + key: "_updateSeries", + value: function _updateSeries(newSeries, animate) { + var _this2 = this; + + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + return new Promise(function (resolve) { + var w = _this2.w; + w.globals.shouldAnimate = animate; + w.globals.dataChanged = true; + + if (animate) { + _this2.ctx.series.getPreviousPaths(); + } + + var existingSeries; // axis charts + + if (w.globals.axisCharts) { + existingSeries = newSeries.map(function (s, i) { + return _this2._extendSeries(s, i); + }); + + if (existingSeries.length === 0) { + existingSeries = [{ + data: [] + }]; + } + + w.config.series = existingSeries; + } else { + // non-axis chart (pie/radialbar) + w.config.series = newSeries.slice(); + } + + if (overwriteInitialSeries) { + w.globals.initialConfig.series = Utils$1.clone(w.config.series); + w.globals.initialSeries = Utils$1.clone(w.config.series); + } + + return _this2.ctx.update().then(function () { + resolve(_this2.ctx); + }); + }); + } + }, { + key: "_extendSeries", + value: function _extendSeries(s, i) { + var w = this.w; + var ser = w.config.series[i]; + return _objectSpread2(_objectSpread2({}, w.config.series[i]), {}, { + name: s.name ? s.name : ser && ser.name, + color: s.color ? s.color : ser && ser.color, + type: s.type ? s.type : ser && ser.type, + data: s.data ? s.data : ser && ser.data + }); + } + }, { + key: "toggleDataPointSelection", + value: function toggleDataPointSelection(seriesIndex, dataPointIndex) { + var w = this.w; + var elPath = null; + var parent = ".apexcharts-series[data\\:realIndex='".concat(seriesIndex, "']"); + + if (w.globals.axisCharts) { + elPath = w.globals.dom.Paper.select("".concat(parent, " path[j='").concat(dataPointIndex, "'], ").concat(parent, " circle[j='").concat(dataPointIndex, "'], ").concat(parent, " rect[j='").concat(dataPointIndex, "']")).members[0]; + } else { + // dataPointIndex will be undefined here, hence using seriesIndex + if (typeof dataPointIndex === 'undefined') { + elPath = w.globals.dom.Paper.select("".concat(parent, " path[j='").concat(seriesIndex, "']")).members[0]; + + if (w.config.chart.type === 'pie' || w.config.chart.type === 'polarArea' || w.config.chart.type === 'donut') { + this.ctx.pie.pieClicked(seriesIndex); + } + } + } + + if (elPath) { + var graphics = new Graphics(this.ctx); + graphics.pathMouseDown(elPath, null); + } else { + console.warn('toggleDataPointSelection: Element not found'); + return null; + } + + return elPath.node ? elPath.node : null; + } + }, { + key: "forceXAxisUpdate", + value: function forceXAxisUpdate(options) { + var w = this.w; + var minmax = ['min', 'max']; + minmax.forEach(function (a) { + if (typeof options.xaxis[a] !== 'undefined') { + w.config.xaxis[a] = options.xaxis[a]; + w.globals.lastXAxis[a] = options.xaxis[a]; + } + }); + + if (options.xaxis.categories && options.xaxis.categories.length) { + w.config.xaxis.categories = options.xaxis.categories; + } + + if (w.config.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(options); + options = defaults.convertCatToNumericXaxis(options, this.ctx); + } + + return options; + } + }, { + key: "forceYAxisUpdate", + value: function forceYAxisUpdate(options) { + if (options.chart && options.chart.stacked && options.chart.stackType === '100%') { + if (Array.isArray(options.yaxis)) { + options.yaxis.forEach(function (yaxe, index) { + options.yaxis[index].min = 0; + options.yaxis[index].max = 100; + }); + } else { + options.yaxis.min = 0; + options.yaxis.max = 100; + } + } + + return options; + } + /** + * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined. + * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max + * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally + * The function also accepts an object {xaxis, yaxis} which when present is set as the new xaxis/yaxis + */ + + }, { + key: "revertDefaultAxisMinMax", + value: function revertDefaultAxisMinMax(opts) { + var _this3 = this; + + var w = this.w; + var xaxis = w.globals.lastXAxis; + var yaxis = w.globals.lastYAxis; + + if (opts && opts.xaxis) { + xaxis = opts.xaxis; + } + + if (opts && opts.yaxis) { + yaxis = opts.yaxis; + } + + w.config.xaxis.min = xaxis.min; + w.config.xaxis.max = xaxis.max; + + var getLastYAxis = function getLastYAxis(index) { + if (typeof yaxis[index] !== 'undefined') { + w.config.yaxis[index].min = yaxis[index].min; + w.config.yaxis[index].max = yaxis[index].max; + } + }; + + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.zoomed) { + // user has zoomed, check the last yaxis + getLastYAxis(index); + } else { + // user hasn't zoomed, check the last yaxis first + if (typeof yaxis[index] !== 'undefined') { + getLastYAxis(index); + } else { + // if last y-axis don't exist, check the original yaxis + if (typeof _this3.ctx.opts.yaxis[index] !== 'undefined') { + yaxe.min = _this3.ctx.opts.yaxis[index].min; + yaxe.max = _this3.ctx.opts.yaxis[index].max; + } + } + } + }); + } + }]); + + return UpdateHelpers; + }(); + + (function (root, factory) { + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(function () { + return factory(root, root.document); + }); + /* below check fixes #412 */ + } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined') { + module.exports = root.document ? factory(root, root.document) : function (w) { + return factory(w, w.document); + }; + } else { + root.SVG = factory(root, root.document); + } + })(typeof window !== 'undefined' ? window : undefined, function (window, document) { + // Find global reference - uses 'this' by default when available, + // falls back to 'window' otherwise (for bundlers like Webpack) + var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element + + var SVG = globalRef.SVG = function (element) { + if (SVG.supported) { + element = new SVG.Doc(element); + + if (!SVG.parser.draw) { + SVG.prepare(); + } + + return element; + } + }; // Default namespaces + + + SVG.ns = 'http://www.w3.org/2000/svg'; + SVG.xmlns = 'http://www.w3.org/2000/xmlns/'; + SVG.xlink = 'http://www.w3.org/1999/xlink'; + SVG.svgjs = 'http://svgjs.dev'; // Svg support test + + SVG.supported = function () { + return true; // !!document.createElementNS && + // !! document.createElementNS(SVG.ns,'svg').createSVGRect + }(); // Don't bother to continue if SVG is not supported + + + if (!SVG.supported) return false; // Element id sequence + + SVG.did = 1000; // Get next named element id + + SVG.eid = function (name) { + return 'Svgjs' + capitalize(name) + SVG.did++; + }; // Method for element creation + + + SVG.create = function (name) { + // create element + var element = document.createElementNS(this.ns, name); // apply unique id + + element.setAttribute('id', this.eid(name)); + return element; + }; // Method for extending objects + + + SVG.extend = function () { + var modules, methods; // Get list of modules + + modules = [].slice.call(arguments); // Get object with extensions + + methods = modules.pop(); + + for (var i = modules.length - 1; i >= 0; i--) { + if (modules[i]) { + for (var key in methods) { + modules[i].prototype[key] = methods[key]; + } + } + } // Make sure SVG.Set inherits any newly added methods + + + if (SVG.Set && SVG.Set.inherit) { + SVG.Set.inherit(); + } + }; // Invent new element + + + SVG.invent = function (config) { + // Create element initializer + var initializer = typeof config.create === 'function' ? config.create : function () { + this.constructor.call(this, SVG.create(config.create)); + }; // Inherit prototype + + if (config.inherit) { + initializer.prototype = new config.inherit(); + } // Extend with methods + + + if (config.extend) { + SVG.extend(initializer, config.extend); + } // Attach construct method to parent + + + if (config.construct) { + SVG.extend(config.parent || SVG.Container, config.construct); + } + + return initializer; + }; // Adopt existing svg elements + + + SVG.adopt = function (node) { + // check for presence of node + if (!node) return null; // make sure a node isn't already adopted + + if (node.instance) return node.instance; // initialize variables + + var element; // adopt with element-specific settings + + if (node.nodeName == 'svg') { + element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc(); + } else if (node.nodeName == 'linearGradient') { + element = new SVG.Gradient('linear'); + } else if (node.nodeName == 'radialGradient') { + element = new SVG.Gradient('radial'); + } else if (SVG[capitalize(node.nodeName)]) { + element = new SVG[capitalize(node.nodeName)](); + } else { + element = new SVG.Element(node); + } // ensure references + + + element.type = node.nodeName; + element.node = node; + node.instance = element; // SVG.Class specific preparations + + if (element instanceof SVG.Doc) { + element.namespace().defs(); + } // pull svgjs data from the dom (getAttributeNS doesn't work in html5) + + + element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {}); + return element; + }; // Initialize parsing element + + + SVG.prepare = function () { + // Select document body and create invisible svg element + var body = document.getElementsByTagName('body')[0], + draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object + + SVG.parser = { + body: body || document.documentElement, + draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node, + poly: draw.polyline().node, + path: draw.path().node, + native: SVG.create('svg') + }; + }; + + SVG.parser = { + native: SVG.create('svg') + }; + document.addEventListener('DOMContentLoaded', function () { + if (!SVG.parser.draw) { + SVG.prepare(); + } + }, false); // Storage for regular expressions + + SVG.regex = { + // Parse unit value + numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i, + // Parse hex value + hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, + // Parse rgb value + rgb: /rgb\((\d+),(\d+),(\d+)\)/, + // Parse reference id + reference: /#([a-z0-9\-_]+)/i, + // splits a transformation chain + transforms: /\)\s*,?\s*/, + // Whitespace + whitespace: /\s/g, + // Test hex value + isHex: /^#[a-f0-9]{3,6}$/i, + // Test rgb value + isRgb: /^rgb\(/, + // Test css declaration + isCss: /[^:]+:[^;]+;?/, + // Test for blank string + isBlank: /^(\s+)?$/, + // Test for numeric string + isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + // Test for percent value + isPercent: /^-?[\d\.]+%$/, + // Test for image url + isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i, + // split at whitespace and comma + delimiter: /[\s,]+/, + // The following regex are used to parse the d attribute of a path + // Matches all hyphens which are not after an exponent + hyphen: /([^e])\-/gi, + // Replaces and tests for all path letters + pathLetters: /[MLHVCSQTAZ]/gi, + // yes we need this one, too + isPathLetter: /[MLHVCSQTAZ]/i, + // matches 0.154.23.45 + numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi, + // matches . + dots: /\./g + }; + SVG.utils = { + // Map function + map: function map(array, block) { + var il = array.length, + result = []; + + for (var i = 0; i < il; i++) { + result.push(block(array[i])); + } + + return result; + }, + // Filter function + filter: function filter(array, block) { + var il = array.length, + result = []; + + for (var i = 0; i < il; i++) { + if (block(array[i])) { + result.push(array[i]); + } + } + + return result; + }, + filterSVGElements: function filterSVGElements(nodes) { + return this.filter(nodes, function (el) { + return el instanceof window.SVGElement; + }); + } + }; + SVG.defaults = { + // Default attribute values + attrs: { + // fill and stroke + 'fill-opacity': 1, + 'stroke-opacity': 1, + 'stroke-width': 0, + 'stroke-linejoin': 'miter', + 'stroke-linecap': 'butt', + fill: '#000000', + stroke: '#000000', + opacity: 1, + // position + x: 0, + y: 0, + cx: 0, + cy: 0, + // size + width: 0, + height: 0, + // radius + r: 0, + rx: 0, + ry: 0, + // gradient + offset: 0, + 'stop-opacity': 1, + 'stop-color': '#000000', + // text + 'font-size': 16, + 'font-family': 'Helvetica, Arial, sans-serif', + 'text-anchor': 'start' + } + }; // Module for color convertions + + SVG.Color = function (color) { + var match; // initialize defaults + + this.r = 0; + this.g = 0; + this.b = 0; + if (!color) return; // parse color + + if (typeof color === 'string') { + if (SVG.regex.isRgb.test(color)) { + // get rgb values + match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values + + this.r = parseInt(match[1]); + this.g = parseInt(match[2]); + this.b = parseInt(match[3]); + } else if (SVG.regex.isHex.test(color)) { + // get hex values + match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values + + this.r = parseInt(match[1], 16); + this.g = parseInt(match[2], 16); + this.b = parseInt(match[3], 16); + } + } else if (_typeof(color) === 'object') { + this.r = color.r; + this.g = color.g; + this.b = color.b; + } + }; + + SVG.extend(SVG.Color, { + // Default to hex conversion + toString: function toString() { + return this.toHex(); + }, + // Build hex value + toHex: function toHex() { + return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b); + }, + // Build rgb value + toRgb: function toRgb() { + return 'rgb(' + [this.r, this.g, this.b].join() + ')'; + }, + // Calculate true brightness + brightness: function brightness() { + return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11; + }, + // Make color morphable + morph: function morph(color) { + this.destination = new SVG.Color(color); + return this; + }, + // Get morphed color at given position + at: function at(pos) { + // make sure a destination is defined + if (!this.destination) return this; // normalise pos + + pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color + + return new SVG.Color({ + r: ~~(this.r + (this.destination.r - this.r) * pos), + g: ~~(this.g + (this.destination.g - this.g) * pos), + b: ~~(this.b + (this.destination.b - this.b) * pos) + }); + } + }); // Testers + // Test if given value is a color string + + SVG.Color.test = function (color) { + color += ''; + return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color); + }; // Test if given value is a rgb object + + + SVG.Color.isRgb = function (color) { + return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number'; + }; // Test if given value is a color + + + SVG.Color.isColor = function (color) { + return SVG.Color.isRgb(color) || SVG.Color.test(color); + }; // Module for array conversion + + + SVG.Array = function (array, fallback) { + array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback + + if (array.length == 0 && fallback) { + array = fallback.valueOf(); + } // parse array + + + this.value = this.parse(array); + }; + + SVG.extend(SVG.Array, { + // Convert array to string + toString: function toString() { + return this.value.join(' '); + }, + // Real value + valueOf: function valueOf() { + return this.value; + }, + // Parse whitespace separated string + parse: function parse(array) { + array = array.valueOf(); // if already is an array, no need to parse it + + if (Array.isArray(array)) return array; + return this.split(array); + } + }); // Poly points array + + SVG.PointArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [[0, 0]]); + }; // Inherit from SVG.Array + + + SVG.PointArray.prototype = new SVG.Array(); + SVG.PointArray.prototype.constructor = SVG.PointArray; + var pathHandlers = { + M: function M(c, p, p0) { + p.x = p0.x = c[0]; + p.y = p0.y = c[1]; + return ['M', p.x, p.y]; + }, + L: function L(c, p) { + p.x = c[0]; + p.y = c[1]; + return ['L', c[0], c[1]]; + }, + H: function H(c, p) { + p.x = c[0]; + return ['H', c[0]]; + }, + V: function V(c, p) { + p.y = c[0]; + return ['V', c[0]]; + }, + C: function C(c, p) { + p.x = c[4]; + p.y = c[5]; + return ['C', c[0], c[1], c[2], c[3], c[4], c[5]]; + }, + Q: function Q(c, p) { + p.x = c[2]; + p.y = c[3]; + return ['Q', c[0], c[1], c[2], c[3]]; + }, + Z: function Z(c, p, p0) { + p.x = p0.x; + p.y = p0.y; + return ['Z']; + } + }; + var mlhvqtcsa = 'mlhvqtcsaz'.split(''); + + for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) { + pathHandlers[mlhvqtcsa[i]] = function (i) { + return function (c, p, p0) { + if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') { + c[5] = c[5] + p.x, c[6] = c[6] + p.y; + } else { + for (var j = 0, jl = c.length; j < jl; ++j) { + c[j] = c[j] + (j % 2 ? p.y : p.x); + } + } + + if (pathHandlers && typeof pathHandlers[i] === 'function') { + // this check fixes jest unit tests + return pathHandlers[i](c, p, p0); + } + }; + }(mlhvqtcsa[i].toUpperCase()); + } // Path points array + + + SVG.PathArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [['M', 0, 0]]); + }; // Inherit from SVG.Array + + + SVG.PathArray.prototype = new SVG.Array(); + SVG.PathArray.prototype.constructor = SVG.PathArray; + SVG.extend(SVG.PathArray, { + // Convert array to string + toString: function toString() { + return arrayToString(this.value); + }, + // Move path string + move: function move(x, y) { + // get bounding box of current situation + var box = this.bbox(); // get relative offset + + x -= box.x; + y -= box.y; + return this; + }, + // Get morphed path array at given position + at: function at(pos) { + // make sure a destination is defined + if (!this.destination) return this; + var sourceArray = this.value, + destinationArray = this.destination.value, + array = [], + pathArray = new SVG.PathArray(), + il, + jl; // Animate has specified in the SVG spec + // See: https://www.w3.org/TR/SVG11/paths.html#PathElement + + for (var i = 0, il = sourceArray.length; i < il; i++) { + array[i] = [sourceArray[i][0]]; + + for (var j = 1, jl = sourceArray[i].length; j < jl; j++) { + array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos; + } // For the two flags of the elliptical arc command, the SVG spec say: + // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true + // Elliptical arc command as an array followed by corresponding indexes: + // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y] + // 0 1 2 3 4 5 6 7 + + + if (array[i][0] === 'A') { + array[i][4] = +(array[i][4] != 0); + array[i][5] = +(array[i][5] != 0); + } + } // Directly modify the value of a path array, this is done this way for performance + + + pathArray.value = array; + return pathArray; + }, + // Absolutize and parse path to array + parse: function parse(array) { + // if it's already a patharray, no need to parse it + if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing + + var s, + arr, + paramCnt = { + 'M': 2, + 'L': 2, + 'H': 1, + 'V': 1, + 'C': 6, + 'S': 4, + 'Q': 4, + 'T': 2, + 'A': 7, + 'Z': 0 + }; + + if (typeof array === 'string') { + array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123 + .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers + .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen + .trim() // trim + .split(SVG.regex.delimiter); // split into array + } else { + array = array.reduce(function (prev, curr) { + return [].concat.call(prev, curr); + }, []); + } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...] + + + var arr = [], + p = new SVG.Point(), + p0 = new SVG.Point(), + index = 0, + len = array.length; + + do { + // Test if we have a path letter + if (SVG.regex.isPathLetter.test(array[index])) { + s = array[index]; + ++index; // If last letter was a move command and we got no new, it defaults to [L]ine + } else if (s == 'M') { + s = 'L'; + } else if (s == 'm') { + s = 'l'; + } + + arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0)); + } while (len > index); + + return arr; + }, + // Get bounding box of path + bbox: function bbox() { + if (!SVG.parser.draw) { + SVG.prepare(); + } + + SVG.parser.path.setAttribute('d', this.toString()); + return SVG.parser.path.getBBox(); + } + }); // Module for unit convertions + + SVG.Number = SVG.invent({ + // Initialize + create: function create(value, unit) { + // initialize defaults + this.value = 0; + this.unit = unit || ''; // parse value + + if (typeof value === 'number') { + // ensure a valid numeric value + this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value; + } else if (typeof value === 'string') { + unit = value.match(SVG.regex.numberAndUnit); + + if (unit) { + // make value numeric + this.value = parseFloat(unit[1]); // normalize + + if (unit[5] == '%') { + this.value /= 100; + } else if (unit[5] == 's') { + this.value *= 1000; + } // store unit + + + this.unit = unit[5]; + } + } else { + if (value instanceof SVG.Number) { + this.value = value.valueOf(); + this.unit = value.unit; + } + } + }, + // Add methods + extend: { + // Stringalize + toString: function toString() { + return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit; + }, + toJSON: function toJSON() { + return this.toString(); + }, + // Convert to primitive + valueOf: function valueOf() { + return this.value; + }, + // Add number + plus: function plus(number) { + number = new SVG.Number(number); + return new SVG.Number(this + number, this.unit || number.unit); + }, + // Subtract number + minus: function minus(number) { + number = new SVG.Number(number); + return new SVG.Number(this - number, this.unit || number.unit); + }, + // Multiply number + times: function times(number) { + number = new SVG.Number(number); + return new SVG.Number(this * number, this.unit || number.unit); + }, + // Divide number + divide: function divide(number) { + number = new SVG.Number(number); + return new SVG.Number(this / number, this.unit || number.unit); + }, + // Convert to different unit + to: function to(unit) { + var number = new SVG.Number(this); + + if (typeof unit === 'string') { + number.unit = unit; + } + + return number; + }, + // Make number morphable + morph: function morph(number) { + this.destination = new SVG.Number(number); + + if (number.relative) { + this.destination.value += this.value; + } + + return this; + }, + // Get morphed number at given position + at: function at(pos) { + // Make sure a destination is defined + if (!this.destination) return this; // Generate new morphed number + + return new SVG.Number(this.destination).minus(this).times(pos).plus(this); + } + } + }); + SVG.Element = SVG.invent({ + // Initialize node + create: function create(node) { + // make stroke value accessible dynamically + this._stroke = SVG.defaults.attrs.stroke; + this._event = null; // initialize data object + + this.dom = {}; // create circular reference + + if (this.node = node) { + this.type = node.nodeName; + this.node.instance = this; // store current attribute value + + this._stroke = node.getAttribute('stroke') || this._stroke; + } + }, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x) { + return this.attr('x', _x); + }, + // Move over y-axis + y: function y(_y) { + return this.attr('y', _y); + }, + // Move by center over x-axis + cx: function cx(x) { + return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2); + }, + // Move by center over y-axis + cy: function cy(y) { + return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2); + }, + // Move element to given x and y values + move: function move(x, y) { + return this.x(x).y(y); + }, + // Move element by its center + center: function center(x, y) { + return this.cx(x).cy(y); + }, + // Set width of element + width: function width(_width) { + return this.attr('width', _width); + }, + // Set height of element + height: function height(_height) { + return this.attr('height', _height); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height)); + }, + // Clone element + clone: function clone(parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom(); // clone element and assign new id + + var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself + + if (parent) parent.add(clone);else this.after(clone); + return clone; + }, + // Remove element + remove: function remove() { + if (this.parent()) { + this.parent().removeElement(this); + } + + return this; + }, + // Replace element + replace: function replace(element) { + this.after(element).remove(); + return element; + }, + // Add element to given container and return self + addTo: function addTo(parent) { + return parent.put(this); + }, + // Add element to given container and return container + putIn: function putIn(parent) { + return parent.add(this); + }, + // Get / set id + id: function id(_id) { + return this.attr('id', _id); + }, + // Show element + show: function show() { + return this.style('display', ''); + }, + // Hide element + hide: function hide() { + return this.style('display', 'none'); + }, + // Is element visible? + visible: function visible() { + return this.style('display') != 'none'; + }, + // Return id on string conversion + toString: function toString() { + return this.attr('id'); + }, + // Return array of classes on the node + classes: function classes() { + var attr = this.attr('class'); + return attr == null ? [] : attr.trim().split(SVG.regex.delimiter); + }, + // Return true if class exists on the node, false otherwise + hasClass: function hasClass(name) { + return this.classes().indexOf(name) != -1; + }, + // Add class to the node + addClass: function addClass(name) { + if (!this.hasClass(name)) { + var array = this.classes(); + array.push(name); + this.attr('class', array.join(' ')); + } + + return this; + }, + // Remove class from the node + removeClass: function removeClass(name) { + if (this.hasClass(name)) { + this.attr('class', this.classes().filter(function (c) { + return c != name; + }).join(' ')); + } + + return this; + }, + // Toggle the presence of a class on the node + toggleClass: function toggleClass(name) { + return this.hasClass(name) ? this.removeClass(name) : this.addClass(name); + }, + // Get referenced element form attribute value + reference: function reference(attr) { + return SVG.get(this.attr(attr)); + }, + // Returns the parent element instance + parent: function parent(type) { + var parent = this; // check for parent + + if (!parent.node.parentNode) return null; // get parent element + + parent = SVG.adopt(parent.node.parentNode); + if (!type) return parent; // loop trough ancestors if type is given + + while (parent && parent.node instanceof window.SVGElement) { + if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent; + if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720 + + parent = SVG.adopt(parent.node.parentNode); + } + }, + // Get parent document + doc: function doc() { + return this instanceof SVG.Doc ? this : this.parent(SVG.Doc); + }, + // return array of all ancestors of given type up to the root svg + parents: function parents(type) { + var parents = [], + parent = this; + + do { + parent = parent.parent(type); + if (!parent || !parent.node) break; + parents.push(parent); + } while (parent.parent); + + return parents; + }, + // matches the element vs a css selector + matches: function matches(selector) { + return _matches(this.node, selector); + }, + // Returns the svg node to call native svg methods on it + native: function native() { + return this.node; + }, + // Import raw svg + svg: function svg(_svg) { + // create temporary holder + var well = document.createElement('svg'); // act as a setter if svg is given + + if (_svg && this instanceof SVG.Parent) { + // dump raw svg + well.innerHTML = '' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2>') + ''; // transplant nodes + + for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) { + this.node.appendChild(well.firstChild.firstChild); + } // otherwise act as a getter + + } else { + // create a wrapping svg element in case of partial content + well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom + + this.writeDataToDom(); // insert a copy of this node + + _svg.appendChild(this.node.cloneNode(true)); // return target element + + + return well.innerHTML.replace(/^/, '').replace(/<\/svg>$/, ''); + } + + return this; + }, + // write svgjs data to the dom + writeDataToDom: function writeDataToDom() { + // dump variables recursively + if (this.each || this.lines) { + var fn = this.each ? this : this.lines(); + fn.each(function () { + this.writeDataToDom(); + }); + } // remove previously set data + + + this.node.removeAttribute('svgjs:data'); + + if (Object.keys(this.dom).length) { + this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)); + } // see #428 + + + return this; + }, + // set given data to the elements data property + setData: function setData(o) { + this.dom = o; + return this; + }, + is: function is(obj) { + return _is(this, obj); + } + } + }); + SVG.easing = { + '-': function _(pos) { + return pos; + }, + '<>': function _(pos) { + return -Math.cos(pos * Math.PI) / 2 + 0.5; + }, + '>': function _(pos) { + return Math.sin(pos * Math.PI / 2); + }, + '<': function _(pos) { + return -Math.cos(pos * Math.PI / 2) + 1; + } + }; + + SVG.morph = function (pos) { + return function (from, to) { + return new SVG.MorphObj(from, to).at(pos); + }; + }; + + SVG.Situation = SVG.invent({ + create: function create(o) { + this.init = false; + this.reversed = false; + this.reversing = false; + this.duration = new SVG.Number(o.duration).valueOf(); + this.delay = new SVG.Number(o.delay).valueOf(); + this.start = +new Date() + this.delay; + this.finish = this.start + this.duration; + this.ease = o.ease; // this.loop is incremented from 0 to this.loops + // it is also incremented when in an infinite loop (when this.loops is true) + + this.loop = 0; + this.loops = false; + this.animations = {// functionToCall: [list of morphable objects] + // e.g. move: [SVG.Number, SVG.Number] + }; + this.attrs = {// holds all attributes which are not represented from a function svg.js provides + // e.g. someAttr: SVG.Number + }; + this.styles = {// holds all styles which should be animated + // e.g. fill-color: SVG.Color + }; + this.transforms = [// holds all transformations as transformation objects + // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix] + ]; + this.once = {// functions to fire at a specific position + // e.g. "0.5": function foo(){} + }; + } + }); + SVG.FX = SVG.invent({ + create: function create(element) { + this._target = element; + this.situations = []; + this.active = false; + this.situation = null; + this.paused = false; + this.lastPos = 0; + this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops) + // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1 + + this.absPos = 0; + this._speed = 1; + }, + extend: { + /** + * sets or returns the target of this animation + * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation + * @param ease function || string Function which should be used for easing or easing keyword + * @param delay Number indicating the delay before the animation starts + * @return target || this + */ + animate: function animate(o, ease, delay) { + if (_typeof(o) === 'object') { + ease = o.ease; + delay = o.delay; + o = o.duration; + } + + var situation = new SVG.Situation({ + duration: o || 1000, + delay: delay || 0, + ease: SVG.easing[ease || '-'] || ease + }); + this.queue(situation); + return this; + }, + + /** + * sets a delay before the next element of the queue is called + * @param delay Duration of delay in milliseconds + * @return this.target() + */ + + /** + * sets or returns the target of this animation + * @param null || target SVG.Element which should be set as new target + * @return target || this + */ + target: function target(_target) { + if (_target && _target instanceof SVG.Element) { + this._target = _target; + return this; + } + + return this._target; + }, + // returns the absolute position at a given time + timeToAbsPos: function timeToAbsPos(timestamp) { + return (timestamp - this.situation.start) / (this.situation.duration / this._speed); + }, + // returns the timestamp from a given absolute positon + absPosToTime: function absPosToTime(absPos) { + return this.situation.duration / this._speed * absPos + this.situation.start; + }, + // starts the animationloop + startAnimFrame: function startAnimFrame() { + this.stopAnimFrame(); + this.animationFrame = window.requestAnimationFrame(function () { + this.step(); + }.bind(this)); + }, + // cancels the animationframe + stopAnimFrame: function stopAnimFrame() { + window.cancelAnimationFrame(this.animationFrame); + }, + // kicks off the animation - only does something when the queue is currently not active and at least one situation is set + start: function start() { + // dont start if already started + if (!this.active && this.situation) { + this.active = true; + this.startCurrent(); + } + + return this; + }, + // start the current situation + startCurrent: function startCurrent() { + this.situation.start = +new Date() + this.situation.delay / this._speed; + this.situation.finish = this.situation.start + this.situation.duration / this._speed; + return this.initAnimations().step(); + }, + + /** + * adds a function / Situation to the animation queue + * @param fn function / situation to add + * @return this + */ + queue: function queue(fn) { + if (typeof fn === 'function' || fn instanceof SVG.Situation) { + this.situations.push(fn); + } + + if (!this.situation) this.situation = this.situations.shift(); + return this; + }, + + /** + * pulls next element from the queue and execute it + * @return this + */ + dequeue: function dequeue() { + // stop current animation + this.stop(); // get next animation from queue + + this.situation = this.situations.shift(); + + if (this.situation) { + if (this.situation instanceof SVG.Situation) { + this.start(); + } else { + // If it is not a SVG.Situation, then it is a function, we execute it + this.situation.call(this); + } + } + + return this; + }, + // updates all animations to the current state of the element + // this is important when one property could be changed from another property + initAnimations: function initAnimations() { + var source; + var s = this.situation; + if (s.init) return this; + + for (var i in s.animations) { + source = this.target()[i](); + + if (!Array.isArray(source)) { + source = [source]; + } + + if (!Array.isArray(s.animations[i])) { + s.animations[i] = [s.animations[i]]; + } // if(s.animations[i].length > source.length) { + // source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length)) + // } + + + for (var j = source.length; j--;) { + // The condition is because some methods return a normal number instead + // of a SVG.Number + if (s.animations[i][j] instanceof SVG.Number) { + source[j] = new SVG.Number(source[j]); + } + + s.animations[i][j] = source[j].morph(s.animations[i][j]); + } + } + + for (var i in s.attrs) { + s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]); + } + + for (var i in s.styles) { + s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]); + } + + s.initialTransformation = this.target().matrixify(); + s.init = true; + return this; + }, + clearQueue: function clearQueue() { + this.situations = []; + return this; + }, + clearCurrent: function clearCurrent() { + this.situation = null; + return this; + }, + + /** stops the animation immediately + * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. + * @param clearQueue A Boolean indicating whether to remove queued animation as well. + * @return this + */ + stop: function stop(jumpToEnd, clearQueue) { + var active = this.active; + this.active = false; + + if (clearQueue) { + this.clearQueue(); + } + + if (jumpToEnd && this.situation) { + // initialize the situation if it was not + !active && this.startCurrent(); + this.atEnd(); + } + + this.stopAnimFrame(); + return this.clearCurrent(); + }, + after: function after(fn) { + var c = this.last(), + wrapper = function wrapper(e) { + if (e.detail.situation == c) { + fn.call(this, c); + this.off('finished.fx', wrapper); // prevent memory leak + } + }; + + this.target().on('finished.fx', wrapper); + return this._callStart(); + }, + // adds a callback which is called whenever one animation step is performed + during: function during(fn) { + var c = this.last(), + wrapper = function wrapper(e) { + if (e.detail.situation == c) { + fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c); + } + }; // see above + + + this.target().off('during.fx', wrapper).on('during.fx', wrapper); + this.after(function () { + this.off('during.fx', wrapper); + }); + return this._callStart(); + }, + // calls after ALL animations in the queue are finished + afterAll: function afterAll(fn) { + var wrapper = function wrapper(e) { + fn.call(this); + this.off('allfinished.fx', wrapper); + }; // see above + + + this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper); + return this._callStart(); + }, + last: function last() { + return this.situations.length ? this.situations[this.situations.length - 1] : this.situation; + }, + // adds one property to the animations + add: function add(method, args, type) { + this.last()[type || 'animations'][method] = args; + return this._callStart(); + }, + + /** perform one step of the animation + * @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time + * @return this + */ + step: function step(ignoreTime) { + // convert current time to an absolute position + if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position + + if (this.situation.loops !== false) { + var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0 + + absPos = Math.max(this.absPos, 0); + absPosInt = Math.floor(absPos); + + if (this.situation.loops === true || absPosInt < this.situation.loops) { + this.pos = absPos - absPosInt; + lastLoop = this.situation.loop; + this.situation.loop = absPosInt; + } else { + this.absPos = this.situation.loops; + this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed + + lastLoop = this.situation.loop - 1; + this.situation.loop = this.situation.loops; + } + + if (this.situation.reversing) { + // Toggle reversed if an odd number of loops as occured since the last call of step + this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2); + } + } else { + // If there are no loop, the absolute position must not be above 1 + this.absPos = Math.min(this.absPos, 1); + this.pos = this.absPos; + } // while the absolute position can be below 0, the position must not be below 0 + + + if (this.pos < 0) this.pos = 0; + if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing + + var eased = this.situation.ease(this.pos); // call once-callbacks + + for (var i in this.situation.once) { + if (i > this.lastPos && i <= eased) { + this.situation.once[i].call(this.target(), this.pos, eased); + delete this.situation.once[i]; + } + } // fire during callback with position, eased position and current situation as parameter + + + if (this.active) this.target().fire('during', { + pos: this.pos, + eased: eased, + fx: this, + situation: this.situation + }); // the user may call stop or finish in the during callback + // so make sure that we still have a valid situation + + if (!this.situation) { + return this; + } // apply the actual animation to every property + + + this.eachAt(); // do final code when situation is finished + + if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) { + // stop animation callback + this.stopAnimFrame(); // fire finished callback with current situation as parameter + + this.target().fire('finished', { + fx: this, + situation: this.situation + }); + + if (!this.situations.length) { + this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback + + if (!this.situations.length) { + this.target().off('.fx'); // there shouldnt be any binding left, but to make sure... + + this.active = false; + } + } // start next animation + + + if (this.active) this.dequeue();else this.clearCurrent(); + } else if (!this.paused && this.active) { + // we continue animating when we are not at the end + this.startAnimFrame(); + } // save last eased position for once callback triggering + + + this.lastPos = eased; + return this; + }, + // calculates the step for every property and calls block with it + eachAt: function eachAt() { + var len, + at, + self = this, + target = this.target(), + s = this.situation; // apply animations which can be called trough a method + + for (var i in s.animations) { + at = [].concat(s.animations[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target[i].apply(target, at); + } // apply animation which has to be applied with attr() + + + for (var i in s.attrs) { + at = [i].concat(s.attrs[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target.attr.apply(target, at); + } // apply animation which has to be applied with style() + + + for (var i in s.styles) { + at = [i].concat(s.styles[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target.style.apply(target, at); + } // animate initialTransformation which has to be chained + + + if (s.transforms.length) { + // get initial initialTransformation + at = s.initialTransformation; + + for (var i = 0, len = s.transforms.length; i < len; i++) { + // get next transformation in chain + var a = s.transforms[i]; // multiply matrix directly + + if (a instanceof SVG.Matrix) { + if (a.relative) { + at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos))); + } else { + at = at.morph(a).at(s.ease(this.pos)); + } + + continue; + } // when transformation is absolute we have to reset the needed transformation first + + + if (!a.relative) { + a.undo(at.extract()); + } // and reapply it after + + + at = at.multiply(a.at(s.ease(this.pos))); + } // set new matrix on element + + + target.matrix(at); + } + + return this; + }, + // adds an once-callback which is called at a specific position and never again + once: function once(pos, fn, isEased) { + var c = this.last(); + if (!isEased) pos = c.ease(pos); + c.once[pos] = fn; + return this; + }, + _callStart: function _callStart() { + setTimeout(function () { + this.start(); + }.bind(this), 0); + return this; + } + }, + parent: SVG.Element, + // Add method to parent elements + construct: { + // Get fx module or create a new one, then animate with given duration and ease + animate: function animate(o, ease, delay) { + return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay); + }, + delay: function delay(_delay) { + return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay); + }, + stop: function stop(jumpToEnd, clearQueue) { + if (this.fx) { + this.fx.stop(jumpToEnd, clearQueue); + } + + return this; + }, + finish: function finish() { + if (this.fx) { + this.fx.finish(); + } + + return this; + } + } + }); // MorphObj is used whenever no morphable object is given + + SVG.MorphObj = SVG.invent({ + create: function create(from, to) { + // prepare color for morphing + if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values + + if (SVG.regex.delimiter.test(from)) { + // prepare path for morphing + if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing + else return new SVG.Array(from).morph(to); + } // prepare number for morphing + + + if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing + + this.value = from; + this.destination = to; + }, + extend: { + at: function at(pos, real) { + return real < 1 ? this.value : this.destination; + }, + valueOf: function valueOf() { + return this.value; + } + } + }); + SVG.extend(SVG.FX, { + // Add animatable attributes + attr: function attr(a, v, relative) { + // apply attributes individually + if (_typeof(a) === 'object') { + for (var key in a) { + this.attr(key, a[key]); + } + } else { + this.add(a, v, 'attrs'); + } + + return this; + }, + // Add animatable plot + plot: function plot(a, b, c, d) { + // Lines can be plotted with 4 arguments + if (arguments.length == 4) { + return this.plot([a, b, c, d]); + } + + return this.add('plot', new (this.target().morphArray)(a)); + } + }); + SVG.Box = SVG.invent({ + create: function create(x, y, width, height) { + if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) { + // chromes getBoundingClientRect has no x and y property + return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height); + } else if (arguments.length == 4) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } // add center, right, bottom... + + + fullBox(this); + } + }); + SVG.BBox = SVG.invent({ + // Initialize + create: function create(element) { + SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given + + if (element instanceof SVG.Element) { + var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered + + try { + if (!document.documentElement.contains) { + // This is IE - it does not support contains() for top-level SVGs + var topParent = element.node; + + while (topParent.parentNode) { + topParent = topParent.parentNode; + } + + if (topParent != document) throw new Error('Element not in the dom'); + } else {// the element is NOT in the dom, throw error + // disabling the check below which fixes issue #76 + // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom') + } // find native bbox + + + box = element.node.getBBox(); + } catch (e) { + if (element instanceof SVG.Shape) { + if (!SVG.parser.draw) { + // fixes apexcharts/vue-apexcharts #14 + SVG.prepare(); + } + + var clone = element.clone(SVG.parser.draw.instance).show(); + + if (clone && clone.node && typeof clone.node.getBBox === 'function') { + // this check fixes jest unit tests + box = clone.node.getBBox(); + } + + if (clone && typeof clone.remove === 'function') { + clone.remove(); + } + } else { + box = { + x: element.node.clientLeft, + y: element.node.clientTop, + width: element.node.clientWidth, + height: element.node.clientHeight + }; + } + } + + SVG.Box.call(this, box); + } + }, + // Define ancestor + inherit: SVG.Box, + // Define Parent + parent: SVG.Element, + // Constructor + construct: { + // Get bounding box + bbox: function bbox() { + return new SVG.BBox(this); + } + } + }); + SVG.BBox.prototype.constructor = SVG.BBox; + SVG.Matrix = SVG.invent({ + // Initialize + create: function create(source) { + var base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object + + source = source === null ? base : source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : source && _typeof(source) === 'object' ? source : base; // merge source + + for (var i = abcdef.length - 1; i >= 0; --i) { + this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]]; + } + }, + // Add methods + extend: { + // Extract individual transformations + extract: function extract() { + // find delta transform points + var px = deltaTransformPoint(this, 0, 1); + deltaTransformPoint(this, 1, 0); + var skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90; + return { + // translation + x: this.e, + y: this.f, + transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b), + transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d), + // rotation + rotation: skewX, + a: this.a, + b: this.b, + c: this.c, + d: this.d, + e: this.e, + f: this.f, + matrix: new SVG.Matrix(this) + }; + }, + // Clone matrix + clone: function clone() { + return new SVG.Matrix(this); + }, + // Morph one matrix into another + morph: function morph(matrix) { + // store new destination + this.destination = new SVG.Matrix(matrix); + return this; + }, + // Multiplies by given matrix + multiply: function multiply(matrix) { + return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native())); + }, + // Inverses matrix + inverse: function inverse() { + return new SVG.Matrix(this.native().inverse()); + }, + // Translate matrix + translate: function translate(x, y) { + return new SVG.Matrix(this.native().translate(x || 0, y || 0)); + }, + // Convert to native SVGMatrix + native: function native() { + // create new matrix + var matrix = SVG.parser.native.createSVGMatrix(); // update with current values + + for (var i = abcdef.length - 1; i >= 0; i--) { + matrix[abcdef[i]] = this[abcdef[i]]; + } + + return matrix; + }, + // Convert matrix to string + toString: function toString() { + // Construct the matrix directly, avoid values that are too small + return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')'; + } + }, + // Define parent + parent: SVG.Element, + // Add parent method + construct: { + // Get current matrix + ctm: function ctm() { + return new SVG.Matrix(this.node.getCTM()); + }, + // Get current screen matrix + screenCTM: function screenCTM() { + /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537 + This is needed because FF does not return the transformation matrix + for the inner coordinate system when getScreenCTM() is called on nested svgs. + However all other Browsers do that */ + if (this instanceof SVG.Nested) { + var rect = this.rect(1, 1); + var m = rect.node.getScreenCTM(); + rect.remove(); + return new SVG.Matrix(m); + } + + return new SVG.Matrix(this.node.getScreenCTM()); + } + } + }); + SVG.Point = SVG.invent({ + // Initialize + create: function create(x, y) { + var source, + base = { + x: 0, + y: 0 + }; // ensure source as object + + source = Array.isArray(x) ? { + x: x[0], + y: x[1] + } : _typeof(x) === 'object' ? { + x: x.x, + y: x.y + } : x != null ? { + x: x, + y: y != null ? y : x + } : base; // If y has no value, then x is used has its value + // merge source + + this.x = source.x; + this.y = source.y; + }, + // Add methods + extend: { + // Clone point + clone: function clone() { + return new SVG.Point(this); + }, + // Morph one point into another + morph: function morph(x, y) { + // store new destination + this.destination = new SVG.Point(x, y); + return this; + } + } + }); + SVG.extend(SVG.Element, { + // Get point + point: function point(x, y) { + return new SVG.Point(x, y).transform(this.screenCTM().inverse()); + } + }); + SVG.extend(SVG.Element, { + // Set svg element attribute + attr: function attr(a, v, n) { + // act as full getter + if (a == null) { + // get an object of attributes + a = {}; + v = this.node.attributes; + + for (var n = v.length - 1; n >= 0; n--) { + a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue; + } + + return a; + } else if (_typeof(a) === 'object') { + // apply every attribute individually if an object is passed + for (var v_ in a) { + this.attr(v_, a[v_]); + } + } else if (v === null) { + // remove value + this.node.removeAttribute(a); + } else if (v == null) { + // act as a getter if the first and only argument is not an object + v = this.node.getAttribute(a); + return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v; + } else { + // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0 + if (a == 'stroke-width') { + this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null); + } else if (a == 'stroke') { + this._stroke = v; + } // convert image fill and stroke to patterns + + + if (a == 'fill' || a == 'stroke') { + if (SVG.regex.isImage.test(v)) { + v = this.doc().defs().image(v, 0, 0); + } + + if (v instanceof SVG.Image) { + v = this.doc().defs().pattern(0, 0, function () { + this.add(v); + }); + } + } // ensure correct numeric values (also accepts NaN and Infinity) + + + if (typeof v === 'number') { + v = new SVG.Number(v); + } // ensure full hex color + else if (SVG.Color.isColor(v)) { + v = new SVG.Color(v); + } // parse array values + else if (Array.isArray(v)) { + v = new SVG.Array(v); + } // if the passed attribute is leading... + + + if (a == 'leading') { + // ... call the leading method instead + if (this.leading) { + this.leading(v); + } + } else { + // set given attribute on node + typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString()); + } // rebuild if required + + + if (this.rebuild && (a == 'font-size' || a == 'x')) { + this.rebuild(a, v); + } + } + + return this; + } + }); + SVG.extend(SVG.Element, { + // Add transformations + transform: function transform(o, relative) { + // get target in case of the fx module, otherwise reference this + var target = this, + matrix; + // act as a getter + + if (_typeof(o) !== 'object') { + // get current matrix + matrix = new SVG.Matrix(target).extract(); + return typeof o === 'string' ? matrix[o] : matrix; + } // get current matrix + + + matrix = new SVG.Matrix(target); // ensure relative flag + + relative = !!relative || !!o.relative; // act on matrix + + if (o.a != null) { + matrix = relative // relative + ? matrix.multiply(new SVG.Matrix(o)) // absolute + : new SVG.Matrix(o); + } + + return this.attr('transform', matrix); + } + }); + SVG.extend(SVG.Element, { + // Reset all transformations + untransform: function untransform() { + return this.attr('transform', null); + }, + // merge the whole transformation chain into one matrix and returns it + matrixify: function matrixify() { + var matrix = (this.attr('transform') || '').split(SVG.regex.transforms).slice(0, -1).map(function (str) { + // generate key => value pairs + var kv = str.trim().split('('); + return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) { + return parseFloat(str); + })]; + }) // merge every transformation into one matrix + .reduce(function (matrix, transform) { + if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1])); + return matrix[transform[0]].apply(matrix, transform[1]); + }, new SVG.Matrix()); + return matrix; + }, + // add an element to another parent without changing the visual representation on the screen + toParent: function toParent(parent) { + if (this == parent) return this; + var ctm = this.screenCTM(); + var pCtm = parent.screenCTM().inverse(); + this.addTo(parent).untransform().transform(pCtm.multiply(ctm)); + return this; + }, + // same as above with parent equals root-svg + toDoc: function toDoc() { + return this.toParent(this.doc()); + } + }); + SVG.Transformation = SVG.invent({ + create: function create(source, inversed) { + if (arguments.length > 1 && typeof inversed !== 'boolean') { + return this.constructor.call(this, [].slice.call(arguments)); + } + + if (Array.isArray(source)) { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[i]; + } + } else if (source && _typeof(source) === 'object') { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[this.arguments[i]]; + } + } + + this.inversed = false; + + if (inversed === true) { + this.inversed = true; + } + } + }); + SVG.Translate = SVG.invent({ + parent: SVG.Matrix, + inherit: SVG.Transformation, + create: function create(source, inversed) { + this.constructor.apply(this, [].slice.call(arguments)); + }, + extend: { + arguments: ['transformedX', 'transformedY'], + method: 'translate' + } + }); + SVG.extend(SVG.Element, { + // Dynamic style generator + style: function style(s, v) { + if (arguments.length == 0) { + // get full style + return this.node.style.cssText || ''; + } else if (arguments.length < 2) { + // apply every style individually if an object is passed + if (_typeof(s) === 'object') { + for (var v_ in s) { + this.style(v_, s[v_]); + } + } else if (SVG.regex.isCss.test(s)) { + // parse css string + s = s.split(/\s*;\s*/) // filter out suffix ; and stuff like ;; + .filter(function (e) { + return !!e; + }).map(function (e) { + return e.split(/\s*:\s*/); + }); // apply every definition individually + + while (v = s.pop()) { + this.style(v[0], v[1]); + } + } else { + // act as a getter if the first and only argument is not an object + return this.node.style[camelCase(s)]; + } + } else { + this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v; + } + + return this; + } + }); + SVG.Parent = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Element, + // Add class methods + extend: { + // Returns all child elements + children: function children() { + return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) { + return SVG.adopt(node); + }); + }, + // Add given element at a position + add: function add(element, i) { + if (i == null) { + this.node.appendChild(element.node); + } else if (element.node != this.node.childNodes[i]) { + this.node.insertBefore(element.node, this.node.childNodes[i]); + } + + return this; + }, + // Basically does the same as `add()` but returns the added element instead + put: function put(element, i) { + this.add(element, i); + return element; + }, + // Checks if the given element is a child + has: function has(element) { + return this.index(element) >= 0; + }, + // Gets index of given element + index: function index(element) { + return [].slice.call(this.node.childNodes).indexOf(element.node); + }, + // Get a element at the given index + get: function get(i) { + return SVG.adopt(this.node.childNodes[i]); + }, + // Get first child + first: function first() { + return this.get(0); + }, + // Get the last child + last: function last() { + return this.get(this.node.childNodes.length - 1); + }, + // Iterates over all children and invokes a given block + each: function each(block, deep) { + var il, + children = this.children(); + + for (var i = 0, il = children.length; i < il; i++) { + if (children[i] instanceof SVG.Element) { + block.apply(children[i], [i, children]); + } + + if (deep && children[i] instanceof SVG.Container) { + children[i].each(block, deep); + } + } + + return this; + }, + // Remove a given child + removeElement: function removeElement(element) { + this.node.removeChild(element.node); + return this; + }, + // Remove all elements in this container + clear: function clear() { + // remove children + while (this.node.hasChildNodes()) { + this.node.removeChild(this.node.lastChild); + } // remove defs reference + + + delete this._defs; + return this; + }, + // Get defs + defs: function defs() { + return this.doc().defs(); + } + } + }); + SVG.extend(SVG.Parent, { + ungroup: function ungroup(parent, depth) { + if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this; + parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent)); + depth = depth || Infinity; + this.each(function () { + if (this instanceof SVG.Defs) return this; + if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1); + return this.toParent(parent); + }); + this.node.firstChild || this.remove(); + return this; + }, + flatten: function flatten(parent, depth) { + return this.ungroup(parent, depth); + } + }); + SVG.Container = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Parent + }); + SVG.ViewBox = SVG.invent({ + // Define parent + parent: SVG.Container, + // Add parent method + construct: {} + }) // Add events to elements + ; + ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE + // , 'mouseleave' -> not supported by IE + 'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) { + // add event to SVG.Element + SVG.Element.prototype[event] = function (f) { + // bind event to element rather than element node + SVG.on(this.node, event, f); + return this; + }; + }); // Initialize listeners stack + + SVG.listeners = []; + SVG.handlerMap = []; + SVG.listenerId = 0; // Add event binder in the SVG namespace + + SVG.on = function (node, event, listener, binding, options) { + // create listener, get object-index + var l = listener.bind(binding || node.instance || node), + index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1, + ev = event.split('.')[0], + ns = event.split('.')[1] || '*'; // ensure valid object + + SVG.listeners[index] = SVG.listeners[index] || {}; + SVG.listeners[index][ev] = SVG.listeners[index][ev] || {}; + SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {}; + + if (!listener._svgjsListenerId) { + listener._svgjsListenerId = ++SVG.listenerId; + } // reference listener + + + SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener + + node.addEventListener(ev, l, options || { + passive: true + }); + }; // Add event unbinder in the SVG namespace + + + SVG.off = function (node, event, listener) { + var index = SVG.handlerMap.indexOf(node), + ev = event && event.split('.')[0], + ns = event && event.split('.')[1], + namespace = ''; + if (index == -1) return; + + if (listener) { + if (typeof listener === 'function') listener = listener._svgjsListenerId; + if (!listener) return; // remove listener reference + + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) { + // remove listener + node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false); + delete SVG.listeners[index][ev][ns || '*'][listener]; + } + } else if (ns && ev) { + // remove all listeners for a namespaced event + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) { + for (var listener_ in SVG.listeners[index][ev][ns]) { + SVG.off(node, [ev, ns].join('.'), listener_); + } + + delete SVG.listeners[index][ev][ns]; + } + } else if (ns) { + // remove all listeners for a specific namespace + for (var event_ in SVG.listeners[index]) { + for (var namespace in SVG.listeners[index][event_]) { + if (ns === namespace) { + SVG.off(node, [event_, ns].join('.')); + } + } + } + } else if (ev) { + // remove all listeners for the event + if (SVG.listeners[index][ev]) { + for (var namespace in SVG.listeners[index][ev]) { + SVG.off(node, [ev, namespace].join('.')); + } + + delete SVG.listeners[index][ev]; + } + } else { + // remove all listeners on a given node + for (var event_ in SVG.listeners[index]) { + SVG.off(node, event_); + } + + delete SVG.listeners[index]; + delete SVG.handlerMap[index]; + } + }; // + + + SVG.extend(SVG.Element, { + // Bind given event to listener + on: function on(event, listener, binding, options) { + SVG.on(this.node, event, listener, binding, options); + return this; + }, + // Unbind event from listener + off: function off(event, listener) { + SVG.off(this.node, event, listener); + return this; + }, + // Fire given event + fire: function fire(event, data) { + // Dispatch event + if (event instanceof window.Event) { + this.node.dispatchEvent(event); + } else { + this.node.dispatchEvent(event = new SVG.CustomEvent(event, { + detail: data, + cancelable: true + })); + } + + this._event = event; + return this; + }, + event: function event() { + return this._event; + } + }); + SVG.Defs = SVG.invent({ + // Initialize node + create: 'defs', + // Inherit from + inherit: SVG.Container + }); + SVG.G = SVG.invent({ + // Initialize node + create: 'g', + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x2) { + return _x2 == null ? this.transform('x') : this.transform({ + x: _x2 - this.x() + }, true); + } + }, + // Add parent method + construct: { + // Create a group element + group: function group() { + return this.put(new SVG.G()); + } + } + }); + SVG.Doc = SVG.invent({ + // Initialize node + create: function create(element) { + if (element) { + // ensure the presence of a dom element + element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper. + // This allows svg.js to work with svg documents as well. + + if (element.nodeName == 'svg') { + this.constructor.call(this, element); + } else { + this.constructor.call(this, SVG.create('svg')); + element.appendChild(this.node); + this.size('100%', '100%'); + } // set svg element attributes and ensure defs node + + + this.namespace().defs(); + } + }, + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Add namespaces + namespace: function namespace() { + return this.attr({ + xmlns: SVG.ns, + version: '1.1' + }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns); + }, + // Creates and returns defs element + defs: function defs() { + if (!this._defs) { + var defs; // Find or create a defs element in this instance + + if (defs = this.node.getElementsByTagName('defs')[0]) { + this._defs = SVG.adopt(defs); + } else { + this._defs = new SVG.Defs(); + } // Make sure the defs node is at the end of the stack + + + this.node.appendChild(this._defs.node); + } + + return this._defs; + }, + // custom parent method + parent: function parent() { + if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null; + return this.node.parentNode; + }, + // Removes the doc from the DOM + remove: function remove() { + if (this.parent()) { + this.parent().removeChild(this.node); + } + + return this; + }, + clear: function clear() { + // remove children + while (this.node.hasChildNodes()) { + this.node.removeChild(this.node.lastChild); + } // remove defs reference + + + delete this._defs; // add back parser + + if (SVG.parser.draw && !SVG.parser.draw.parentNode) { + this.node.appendChild(SVG.parser.draw); + } + + return this; + }, + clone: function clone(parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom(); // get reference to node + + var node = this.node; // clone element and assign new id + + var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself + + if (parent) { + (parent.node || parent).appendChild(clone.node); + } else { + node.parentNode.insertBefore(clone.node, node.nextSibling); + } + + return clone; + } + } + }); // ### This module adds backward / forward functionality to elements. + // + + SVG.extend(SVG.Element, {// Get all siblings, including myself + }); + SVG.Gradient = SVG.invent({ + // Initialize node + create: function create(type) { + this.constructor.call(this, SVG.create(type + 'Gradient')); // store type + + this.type = type; + }, + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Add a color stop + at: function at(offset, color, opacity) { + return this.put(new SVG.Stop()).update(offset, color, opacity); + }, + // Update gradient + update: function update(block) { + // remove all stops + this.clear(); // invoke passed block + + if (typeof block === 'function') { + block.call(this, this); + } + + return this; + }, + // Return the fill id + fill: function fill() { + return 'url(#' + this.id() + ')'; + }, + // Alias string convertion to fill + toString: function toString() { + return this.fill(); + }, + // custom attr to handle transform + attr: function attr(a, b, c) { + if (a == 'transform') a = 'gradientTransform'; + return SVG.Container.prototype.attr.call(this, a, b, c); + } + }, + // Add parent method + construct: { + // Create gradient element in defs + gradient: function gradient(type, block) { + return this.defs().gradient(type, block); + } + } + }); // Add animatable methods to both gradient and fx module + + SVG.extend(SVG.Gradient, SVG.FX, { + // From position + from: function from(x, y) { + return (this._target || this).type == 'radial' ? this.attr({ + fx: new SVG.Number(x), + fy: new SVG.Number(y) + }) : this.attr({ + x1: new SVG.Number(x), + y1: new SVG.Number(y) + }); + }, + // To position + to: function to(x, y) { + return (this._target || this).type == 'radial' ? this.attr({ + cx: new SVG.Number(x), + cy: new SVG.Number(y) + }) : this.attr({ + x2: new SVG.Number(x), + y2: new SVG.Number(y) + }); + } + }); // Base gradient generation + + SVG.extend(SVG.Defs, { + // define gradient + gradient: function gradient(type, block) { + return this.put(new SVG.Gradient(type)).update(block); + } + }); + SVG.Stop = SVG.invent({ + // Initialize node + create: 'stop', + // Inherit from + inherit: SVG.Element, + // Add class methods + extend: { + // add color stops + update: function update(o) { + if (typeof o === 'number' || o instanceof SVG.Number) { + o = { + offset: arguments[0], + color: arguments[1], + opacity: arguments[2] + }; + } // set attributes + + + if (o.opacity != null) this.attr('stop-opacity', o.opacity); + if (o.color != null) this.attr('stop-color', o.color); + if (o.offset != null) this.attr('offset', new SVG.Number(o.offset)); + return this; + } + } + }); + SVG.Pattern = SVG.invent({ + // Initialize node + create: 'pattern', + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Return the fill id + fill: function fill() { + return 'url(#' + this.id() + ')'; + }, + // Update pattern by rebuilding + update: function update(block) { + // remove content + this.clear(); // invoke passed block + + if (typeof block === 'function') { + block.call(this, this); + } + + return this; + }, + // Alias string convertion to fill + toString: function toString() { + return this.fill(); + }, + // custom attr to handle transform + attr: function attr(a, b, c) { + if (a == 'transform') a = 'patternTransform'; + return SVG.Container.prototype.attr.call(this, a, b, c); + } + }, + // Add parent method + construct: { + // Create pattern element in defs + pattern: function pattern(width, height, block) { + return this.defs().pattern(width, height, block); + } + } + }); + SVG.extend(SVG.Defs, { + // Define gradient + pattern: function pattern(width, height, block) { + return this.put(new SVG.Pattern()).update(block).attr({ + x: 0, + y: 0, + width: width, + height: height, + patternUnits: 'userSpaceOnUse' + }); + } + }); + SVG.Shape = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Element + }); + SVG.Symbol = SVG.invent({ + // Initialize node + create: 'symbol', + // Inherit from + inherit: SVG.Container, + construct: { + // create symbol + symbol: function symbol() { + return this.put(new SVG.Symbol()); + } + } + }); + SVG.Use = SVG.invent({ + // Initialize node + create: 'use', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Use element as a reference + element: function element(_element, file) { + // Set lined element + return this.attr('href', (file || '') + '#' + _element, SVG.xlink); + } + }, + // Add parent method + construct: { + // Create a use element + use: function use(element, file) { + return this.put(new SVG.Use()).element(element, file); + } + } + }); + SVG.Rect = SVG.invent({ + // Initialize node + create: 'rect', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a rect element + rect: function rect(width, height) { + return this.put(new SVG.Rect()).size(width, height); + } + } + }); + SVG.Circle = SVG.invent({ + // Initialize node + create: 'circle', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create circle element, based on ellipse + circle: function circle(size) { + return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0); + } + } + }); + SVG.extend(SVG.Circle, SVG.FX, { + // Radius x value + rx: function rx(_rx) { + return this.attr('r', _rx); + }, + // Alias radius x value + ry: function ry(_ry) { + return this.rx(_ry); + } + }); + SVG.Ellipse = SVG.invent({ + // Initialize node + create: 'ellipse', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create an ellipse + ellipse: function ellipse(width, height) { + return this.put(new SVG.Ellipse()).size(width, height).move(0, 0); + } + } + }); + SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, { + // Radius x value + rx: function rx(_rx2) { + return this.attr('rx', _rx2); + }, + // Radius y value + ry: function ry(_ry2) { + return this.attr('ry', _ry2); + } + }); // Add common method + + SVG.extend(SVG.Circle, SVG.Ellipse, { + // Move over x-axis + x: function x(_x3) { + return _x3 == null ? this.cx() - this.rx() : this.cx(_x3 + this.rx()); + }, + // Move over y-axis + y: function y(_y2) { + return _y2 == null ? this.cy() - this.ry() : this.cy(_y2 + this.ry()); + }, + // Move by center over x-axis + cx: function cx(x) { + return x == null ? this.attr('cx') : this.attr('cx', x); + }, + // Move by center over y-axis + cy: function cy(y) { + return y == null ? this.attr('cy') : this.attr('cy', y); + }, + // Set width of element + width: function width(_width2) { + return _width2 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width2).divide(2)); + }, + // Set height of element + height: function height(_height2) { + return _height2 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height2).divide(2)); + }, + // Custom size function + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2)); + } + }); + SVG.Line = SVG.invent({ + // Initialize node + create: 'line', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Get array + array: function array() { + return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]); + }, + // Overwrite native plot() method + plot: function plot(x1, y1, x2, y2) { + if (x1 == null) { + return this.array(); + } else if (typeof y1 !== 'undefined') { + x1 = { + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }; + } else { + x1 = new SVG.PointArray(x1).toLine(); + } + + return this.attr(x1); + }, + // Move by left top corner + move: function move(x, y) { + return this.attr(this.array().move(x, y).toLine()); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.attr(this.array().size(p.width, p.height).toLine()); + } + }, + // Add parent method + construct: { + // Create a line element + line: function line(x1, y1, x2, y2) { + // make sure plot is called as a setter + // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray + return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]); + } + } + }); + SVG.Polyline = SVG.invent({ + // Initialize node + create: 'polyline', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a wrapped polyline element + polyline: function polyline(p) { + // make sure plot is called as a setter + return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray()); + } + } + }); + SVG.Polygon = SVG.invent({ + // Initialize node + create: 'polygon', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a wrapped polygon element + polygon: function polygon(p) { + // make sure plot is called as a setter + return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray()); + } + } + }); // Add polygon-specific functions + + SVG.extend(SVG.Polyline, SVG.Polygon, { + // Get array + array: function array() { + return this._array || (this._array = new SVG.PointArray(this.attr('points'))); + }, + // Plot new path + plot: function plot(p) { + return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p)); + }, + // Clear array cache + clear: function clear() { + delete this._array; + return this; + }, + // Move by left top corner + move: function move(x, y) { + return this.attr('points', this.array().move(x, y)); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.attr('points', this.array().size(p.width, p.height)); + } + }); // unify all point to point elements + + SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, { + // Define morphable array + morphArray: SVG.PointArray, + // Move by left top corner over x-axis + x: function x(_x4) { + return _x4 == null ? this.bbox().x : this.move(_x4, this.bbox().y); + }, + // Move by left top corner over y-axis + y: function y(_y3) { + return _y3 == null ? this.bbox().y : this.move(this.bbox().x, _y3); + }, + // Set width of element + width: function width(_width3) { + var b = this.bbox(); + return _width3 == null ? b.width : this.size(_width3, b.height); + }, + // Set height of element + height: function height(_height3) { + var b = this.bbox(); + return _height3 == null ? b.height : this.size(b.width, _height3); + } + }); + SVG.Path = SVG.invent({ + // Initialize node + create: 'path', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Define morphable array + morphArray: SVG.PathArray, + // Get array + array: function array() { + return this._array || (this._array = new SVG.PathArray(this.attr('d'))); + }, + // Plot new path + plot: function plot(d) { + return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d)); + }, + // Clear array cache + clear: function clear() { + delete this._array; + return this; + } + }, + // Add parent method + construct: { + // Create a wrapped path element + path: function path(d) { + // make sure plot is called as a setter + return this.put(new SVG.Path()).plot(d || new SVG.PathArray()); + } + } + }); + SVG.Image = SVG.invent({ + // Initialize node + create: 'image', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // (re)load image + load: function load(url) { + if (!url) return this; + var self = this, + img = new window.Image(); // preload image + + SVG.on(img, 'load', function () { + SVG.off(img); + var p = self.parent(SVG.Pattern); + if (p === null) return; // ensure image size + + if (self.width() == 0 && self.height() == 0) { + self.size(img.width, img.height); + } // ensure pattern size if not set + + + if (p && p.width() == 0 && p.height() == 0) { + p.size(self.width(), self.height()); + } // callback + + + if (typeof self._loaded === 'function') { + self._loaded.call(self, { + width: img.width, + height: img.height, + ratio: img.width / img.height, + url: url + }); + } + }); + SVG.on(img, 'error', function (e) { + SVG.off(img); + + if (typeof self._error === 'function') { + self._error.call(self, e); + } + }); + return this.attr('href', img.src = this.src = url, SVG.xlink); + }, + // Add loaded callback + loaded: function loaded(_loaded) { + this._loaded = _loaded; + return this; + }, + error: function error(_error) { + this._error = _error; + return this; + } + }, + // Add parent method + construct: { + // create image element, load image and set its size + image: function image(source, width, height) { + return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0); + } + } + }); + SVG.Text = SVG.invent({ + // Initialize node + create: function create() { + this.constructor.call(this, SVG.create('text')); + this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding + + this._rebuild = true; // enable automatic updating of dy values + + this._build = false; // disable build mode for adding multiple lines + // set default font + + this.attr('font-family', SVG.defaults.attrs['font-family']); + }, + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x5) { + // act as getter + if (_x5 == null) { + return this.attr('x'); + } + + return this.attr('x', _x5); + }, + // Set the text content + text: function text(_text) { + // act as getter + if (typeof _text === 'undefined') { + var _text = ''; + var children = this.node.childNodes; + + for (var i = 0, len = children.length; i < len; ++i) { + // add newline if its not the first child and newLined is set to true + if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) { + _text += '\n'; + } // add content of this node + + + _text += children[i].textContent; + } + + return _text; + } // remove existing content + + + this.clear().build(true); + + if (typeof _text === 'function') { + // call block + _text.call(this, this); + } else { + // store text and make sure text is not blank + _text = _text.split('\n'); // build new lines + + for (var i = 0, il = _text.length; i < il; i++) { + this.tspan(_text[i]).newLine(); + } + } // disable build mode and rebuild lines + + + return this.build(false).rebuild(); + }, + // Set font size + size: function size(_size) { + return this.attr('font-size', _size).rebuild(); + }, + // Set / get leading + leading: function leading(value) { + // act as getter + if (value == null) { + return this.dom.leading; + } // act as setter + + + this.dom.leading = new SVG.Number(value); + return this.rebuild(); + }, + // Get all the first level lines + lines: function lines() { + var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances + + var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) { + return SVG.adopt(el); + }); // return an instance of SVG.set + + return new SVG.Set(lines); + }, + // Rebuild appearance type + rebuild: function rebuild(_rebuild) { + // store new rebuild flag if given + if (typeof _rebuild === 'boolean') { + this._rebuild = _rebuild; + } // define position of all lines + + + if (this._rebuild) { + var self = this, + blankLineOffset = 0, + dy = this.dom.leading * new SVG.Number(this.attr('font-size')); + this.lines().each(function () { + if (this.dom.newLined) { + if (!self.textPath()) { + this.attr('x', self.attr('x')); + } + + if (this.text() == '\n') { + blankLineOffset += dy; + } else { + this.attr('dy', dy + blankLineOffset); + blankLineOffset = 0; + } + } + }); + this.fire('rebuild'); + } + + return this; + }, + // Enable / disable build mode + build: function build(_build) { + this._build = !!_build; + return this; + }, + // overwrite method from parent to set data properly + setData: function setData(o) { + this.dom = o; + this.dom.leading = new SVG.Number(o.leading || 1.3); + return this; + } + }, + // Add parent method + construct: { + // Create text element + text: function text(_text2) { + return this.put(new SVG.Text()).text(_text2); + }, + // Create plain text element + plain: function plain(text) { + return this.put(new SVG.Text()).plain(text); + } + } + }); + SVG.Tspan = SVG.invent({ + // Initialize node + create: 'tspan', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Set text content + text: function text(_text3) { + if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\n' : ''); + typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3); + return this; + }, + // Shortcut dx + dx: function dx(_dx) { + return this.attr('dx', _dx); + }, + // Shortcut dy + dy: function dy(_dy) { + return this.attr('dy', _dy); + }, + // Create new line + newLine: function newLine() { + // fetch text parent + var t = this.parent(SVG.Text); // mark new line + + this.dom.newLined = true; // apply new hy¡n + + return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x()); + } + } + }); + SVG.extend(SVG.Text, SVG.Tspan, { + // Create plain text node + plain: function plain(text) { + // clear if build mode is disabled + if (this._build === false) { + this.clear(); + } // create text node + + + this.node.appendChild(document.createTextNode(text)); + return this; + }, + // Create a tspan + tspan: function tspan(text) { + var node = (this.textPath && this.textPath() || this).node, + tspan = new SVG.Tspan(); // clear if build mode is disabled + + if (this._build === false) { + this.clear(); + } // add new tspan + + + node.appendChild(tspan.node); + return tspan.text(text); + }, + // Clear all lines + clear: function clear() { + var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes + + while (node.hasChildNodes()) { + node.removeChild(node.lastChild); + } + + return this; + }, + // Get length of text element + length: function length() { + return this.node.getComputedTextLength(); + } + }); + SVG.TextPath = SVG.invent({ + // Initialize node + create: 'textPath', + // Inherit from + inherit: SVG.Parent, + // Define parent class + parent: SVG.Text, + // Add parent method + construct: { + morphArray: SVG.PathArray, + // return the array of the path track element + array: function array() { + var track = this.track(); + return track ? track.array() : null; + }, + // Plot path if any + plot: function plot(d) { + var track = this.track(), + pathArray = null; + + if (track) { + pathArray = track.plot(d); + } + + return d == null ? pathArray : this; + }, + // Get the path track element + track: function track() { + var path = this.textPath(); + + if (path) { + return path.reference('href'); + } + }, + // Get the textPath child + textPath: function textPath() { + if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') { + return SVG.adopt(this.node.firstChild); + } + } + } + }); + SVG.Nested = SVG.invent({ + // Initialize node + create: function create() { + this.constructor.call(this, SVG.create('svg')); + this.style('overflow', 'visible'); + }, + // Inherit from + inherit: SVG.Container, + // Add parent method + construct: { + // Create nested svg document + nested: function nested() { + return this.put(new SVG.Nested()); + } + } + }); // Define list of available attributes for stroke and fill + + var sugar = { + stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'], + fill: ['color', 'opacity', 'rule'], + prefix: function prefix(t, a) { + return a == 'color' ? t : t + '-' + a; + } + } // Add sugar for fill and stroke + ; + ['fill', 'stroke'].forEach(function (m) { + var extension = {}; + + extension[m] = function (o) { + if (typeof o === 'undefined') { + return this; + } + + if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') { + this.attr(m, o); + } else // set all attributes from sugar.fill and sugar.stroke list + { + for (var i = sugar[m].length - 1; i >= 0; i--) { + if (o[sugar[m][i]] != null) { + this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]); + } + } + } + + return this; + }; + + SVG.extend(SVG.Element, SVG.FX, extension); + }); + SVG.extend(SVG.Element, SVG.FX, { + // Map translate to transform + translate: function translate(x, y) { + return this.transform({ + x: x, + y: y + }); + }, + // Map matrix to transform + matrix: function matrix(m) { + return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m)); + }, + // Opacity + opacity: function opacity(value) { + return this.attr('opacity', value); + }, + // Relative move over x axis + dx: function dx(x) { + return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true); + }, + // Relative move over y axis + dy: function dy(y) { + return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true); + } + }); + SVG.extend(SVG.Path, { + // Get path length + length: function length() { + return this.node.getTotalLength(); + }, + // Get point at length + pointAt: function pointAt(length) { + return this.node.getPointAtLength(length); + } + }); + SVG.Set = SVG.invent({ + // Initialize + create: function create(members) { + // Set initial state + Array.isArray(members) ? this.members = members : this.clear(); + }, + // Add class methods + extend: { + // Add element to set + add: function add() { + var il, + elements = [].slice.call(arguments); + + for (var i = 0, il = elements.length; i < il; i++) { + this.members.push(elements[i]); + } + + return this; + }, + // Remove element from set + remove: function remove(element) { + var i = this.index(element); // remove given child + + if (i > -1) { + this.members.splice(i, 1); + } + + return this; + }, + // Iterate over all members + each: function each(block) { + for (var i = 0, il = this.members.length; i < il; i++) { + block.apply(this.members[i], [i, this.members]); + } + + return this; + }, + // Restore to defaults + clear: function clear() { + // initialize store + this.members = []; + return this; + }, + // Get the length of a set + length: function length() { + return this.members.length; + }, + // Checks if a given element is present in set + has: function has(element) { + return this.index(element) >= 0; + }, + // retuns index of given element in set + index: function index(element) { + return this.members.indexOf(element); + }, + // Get member at given index + get: function get(i) { + return this.members[i]; + }, + // Get first member + first: function first() { + return this.get(0); + }, + // Get last member + last: function last() { + return this.get(this.members.length - 1); + }, + // Default value + valueOf: function valueOf() { + return this.members; + } + }, + // Add parent method + construct: { + // Create a new set + set: function set(members) { + return new SVG.Set(members); + } + } + }); + SVG.FX.Set = SVG.invent({ + // Initialize node + create: function create(set) { + // store reference to set + this.set = set; + } + }); // Alias methods + + SVG.Set.inherit = function () { + var methods = []; // gather shape methods + + for (var m in SVG.Shape.prototype) { + if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') { + methods.push(m); + } + } // apply shape aliasses + + + methods.forEach(function (method) { + SVG.Set.prototype[method] = function () { + for (var i = 0, il = this.members.length; i < il; i++) { + if (this.members[i] && typeof this.members[i][method] === 'function') { + this.members[i][method].apply(this.members[i], arguments); + } + } + + return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this; + }; + }); // clear methods for the next round + + methods = []; // gather fx methods + + for (var m in SVG.FX.prototype) { + if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') { + methods.push(m); + } + } // apply fx aliasses + + + methods.forEach(function (method) { + SVG.FX.Set.prototype[method] = function () { + for (var i = 0, il = this.set.members.length; i < il; i++) { + this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments); + } + + return this; + }; + }); + }; + + SVG.extend(SVG.Element, {}); + SVG.extend(SVG.Element, { + // Remember arbitrary data + remember: function remember(k, v) { + // remember every item in an object individually + if (_typeof(arguments[0]) === 'object') { + for (var v_ in k) { + this.remember(v_, k[v_]); + } + } // retrieve memory + else if (arguments.length == 1) { + return this.memory()[k]; + } // store memory + else { + this.memory()[k] = v; + } + + return this; + }, + // Erase a given memory + forget: function forget() { + if (arguments.length == 0) { + this._memory = {}; + } else { + for (var i = arguments.length - 1; i >= 0; i--) { + delete this.memory()[arguments[i]]; + } + } + + return this; + }, + // Initialize or return local memory object + memory: function memory() { + return this._memory || (this._memory = {}); + } + }); // Method for getting an element by id + + SVG.get = function (id) { + var node = document.getElementById(idFromReference(id) || id); + return SVG.adopt(node); + }; // Select elements by query string + + + SVG.select = function (query, parent) { + return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) { + return SVG.adopt(node); + })); + }; + + SVG.extend(SVG.Parent, { + // Scoped select method + select: function select(query) { + return SVG.select(query, this.node); + } + }); + + function pathRegReplace(a, b, c, d) { + return c + d.replace(SVG.regex.dots, ' .'); + } // creates deep clone of array + + + function _is(el, obj) { + return el instanceof obj; + } // tests if a given selector matches an element + + + function _matches(el, selector) { + return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); + } // Convert dash-separated-string to camelCase + + + function camelCase(s) { + return s.toLowerCase().replace(/-(.)/g, function (m, g) { + return g.toUpperCase(); + }); + } // Capitalize first letter of a string + + + function capitalize(s) { + return s.charAt(0).toUpperCase() + s.slice(1); + } // Ensure to six-based hex + + + function fullHex(hex) { + return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex; + } // Component to hex value + + + function compToHex(comp) { + var hex = comp.toString(16); + return hex.length == 1 ? '0' + hex : hex; + } // Calculate proportional width and height values when necessary + + + function proportionalSize(element, width, height) { + if (width == null || height == null) { + var box = element.bbox(); + + if (width == null) { + width = box.width / box.height * height; + } else if (height == null) { + height = box.height / box.width * width; + } + } + + return { + width: width, + height: height + }; + } // Delta transform point + + + function deltaTransformPoint(matrix, x, y) { + return { + x: x * matrix.a + y * matrix.c + 0, + y: x * matrix.b + y * matrix.d + 0 + }; + } // Map matrix array to object + + + function arrayToMatrix(a) { + return { + a: a[0], + b: a[1], + c: a[2], + d: a[3], + e: a[4], + f: a[5] + }; + } // Parse matrix if required + + + function parseMatrix(matrix) { + if (!(matrix instanceof SVG.Matrix)) { + matrix = new SVG.Matrix(matrix); + } + + return matrix; + } // Add centre point to transform object + + + function arrayToString(a) { + for (var i = 0, il = a.length, s = ''; i < il; i++) { + s += a[i][0]; + + if (a[i][1] != null) { + s += a[i][1]; + + if (a[i][2] != null) { + s += ' '; + s += a[i][2]; + + if (a[i][3] != null) { + s += ' '; + s += a[i][3]; + s += ' '; + s += a[i][4]; + + if (a[i][5] != null) { + s += ' '; + s += a[i][5]; + s += ' '; + s += a[i][6]; + + if (a[i][7] != null) { + s += ' '; + s += a[i][7]; + } + } + } + } + } + } + + return s + ' '; + } // Deep new id assignment + + + function assignNewId(node) { + // do the same for SVG child nodes as well + for (var i = node.childNodes.length - 1; i >= 0; i--) { + if (node.childNodes[i] instanceof window.SVGElement) { + assignNewId(node.childNodes[i]); + } + } + + return SVG.adopt(node).id(SVG.eid(node.nodeName)); + } // Add more bounding box properties + + + function fullBox(b) { + if (b.x == null) { + b.x = 0; + b.y = 0; + b.width = 0; + b.height = 0; + } + + b.w = b.width; + b.h = b.height; + b.x2 = b.x + b.width; + b.y2 = b.y + b.height; + b.cx = b.x + b.width / 2; + b.cy = b.y + b.height / 2; + return b; + } // Get id from reference string + + + function idFromReference(url) { + var m = (url || '').toString().match(SVG.regex.reference); + if (m) return m[1]; + } // If values like 1e-88 are passed, this is not a valid 32 bit float, + // but in those cases, we are so close to 0 that 0 works well! + + + function float32String(v) { + return Math.abs(v) > 1e-37 ? v : 0; + } // Create matrix array for looping + + + var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10 + + if (typeof window.CustomEvent !== 'function') { + // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent + var CustomEventPoly = function CustomEventPoly(event, options) { + options = options || { + bubbles: false, + cancelable: false, + detail: undefined + }; + var e = document.createEvent('CustomEvent'); + e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail); + return e; + }; + + CustomEventPoly.prototype = window.Event.prototype; + SVG.CustomEvent = CustomEventPoly; + } else { + SVG.CustomEvent = window.CustomEvent; + } + + return SVG; + }); + + /*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ + (function() { + + // Main filter class + SVG.Filter = SVG.invent({ + create: 'filter', + inherit: SVG.Parent, + extend: { + // Static strings + source: 'SourceGraphic', + sourceAlpha: 'SourceAlpha', + background: 'BackgroundImage', + backgroundAlpha: 'BackgroundAlpha', + fill: 'FillPaint', + stroke: 'StrokePaint', + + autoSetIn: true, + // Custom put method for leaner code + put: function(element, i) { + this.add(element, i); + + if(!element.attr('in') && this.autoSetIn){ + element.attr('in',this.source); + } + if(!element.attr('result')){ + element.attr('result',element); + } + + return element + }, + // Blend effect + blend: function(in1, in2, mode) { + return this.put(new SVG.BlendEffect(in1, in2, mode)) + }, + // ColorMatrix effect + colorMatrix: function(type, values) { + return this.put(new SVG.ColorMatrixEffect(type, values)) + }, + // ConvolveMatrix effect + convolveMatrix: function(matrix) { + return this.put(new SVG.ConvolveMatrixEffect(matrix)) + }, + // ComponentTransfer effect + componentTransfer: function(components) { + return this.put(new SVG.ComponentTransferEffect(components)) + }, + // Composite effect + composite: function(in1, in2, operator) { + return this.put(new SVG.CompositeEffect(in1, in2, operator)) + }, + // Flood effect + flood: function(color, opacity) { + return this.put(new SVG.FloodEffect(color, opacity)) + }, + // Offset effect + offset: function(x, y) { + return this.put(new SVG.OffsetEffect(x,y)) + }, + // Image effect + image: function(src) { + return this.put(new SVG.ImageEffect(src)) + }, + // Merge effect + merge: function() { + //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments + var args = [undefined]; + for(var i in arguments) args.push(arguments[i]); + return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args))) + }, + // Gaussian Blur effect + gaussianBlur: function(x,y) { + return this.put(new SVG.GaussianBlurEffect(x,y)) + }, + // Morphology effect + morphology: function(operator,radius){ + return this.put(new SVG.MorphologyEffect(operator,radius)) + }, + // DiffuseLighting effect + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength)) + }, + // DisplacementMap effect + displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){ + return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector)) + }, + // SpecularLighting effect + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength)) + }, + // Tile effect + tile: function(){ + return this.put(new SVG.TileEffect()); + }, + // Turbulence effect + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type)) + }, + // Default string value + toString: function() { + return 'url(#' + this.attr('id') + ')' + } + } + }); + + //add .filter function + SVG.extend(SVG.Defs, { + // Define filter + filter: function(block) { + var filter = this.put(new SVG.Filter); + + /* invoke passed block */ + if (typeof block === 'function') + block.call(filter, filter); + + return filter + } + }); + SVG.extend(SVG.Container, { + // Define filter on defs + filter: function(block) { + return this.defs().filter(block) + } + }); + SVG.extend(SVG.Element, SVG.G, SVG.Nested, { + // Create filter element in defs and store reference + filter: function(block) { + this.filterer = block instanceof SVG.Element ? + block : this.doc().filter(block); + + if(this.doc() && this.filterer.doc() !== this.doc()){ + this.doc().defs().add(this.filterer); + } + + this.attr('filter', this.filterer); + + return this.filterer + }, + // Remove filter + unfilter: function(remove) { + /* also remove the filter node */ + if (this.filterer && remove === true) + this.filterer.remove(); + + /* delete reference to filterer */ + delete this.filterer; + + /* remove filter attribute */ + return this.attr('filter', null) + } + }); + + // Create SVG.Effect class + SVG.Effect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Element, + extend: { + // Set in attribute + in: function(effect) { + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect) + }, + // Named result + result: function(result) { + return result == null? this.attr('result') : this.attr('result',result) + }, + // Stringification + toString: function() { + return this.result() + } + } + }); + + // create class for parent effects like merge + // Inherit from SVG.Parent + SVG.ParentEffect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Parent, + extend: { + // Set in attribute + in: function(effect) { + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect) + }, + // Named result + result: function(result) { + return result == null? this.attr('result') : this.attr('result',result) + }, + // Stringification + toString: function() { + return this.result() + } + } + }); + + //chaining + var chainingEffects = { + // Blend effect + blend: function(in2, mode) { + return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input + }, + // ColorMatrix effect + colorMatrix: function(type, values) { + return this.parent() && this.parent().colorMatrix(type, values).in(this) + }, + // ConvolveMatrix effect + convolveMatrix: function(matrix) { + return this.parent() && this.parent().convolveMatrix(matrix).in(this) + }, + // ComponentTransfer effect + componentTransfer: function(components) { + return this.parent() && this.parent().componentTransfer(components).in(this) + }, + // Composite effect + composite: function(in2, operator) { + return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input + }, + // Flood effect + flood: function(color, opacity) { + return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs + }, + // Offset effect + offset: function(x, y) { + return this.parent() && this.parent().offset(x,y).in(this) + }, + // Image effect + image: function(src) { + return this.parent() && this.parent().image(src) //this effect dont have inputs + }, + // Merge effect + merge: function() { + return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument + }, + // Gaussian Blur effect + gaussianBlur: function(x,y) { + return this.parent() && this.parent().gaussianBlur(x,y).in(this) + }, + // Morphology effect + morphology: function(operator,radius){ + return this.parent() && this.parent().morphology(operator,radius).in(this) + }, + // DiffuseLighting effect + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this) + }, + // DisplacementMap effect + displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){ + return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input + }, + // SpecularLighting effect + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this) + }, + // Tile effect + tile: function(){ + return this.parent() && this.parent().tile().in(this) + }, + // Turbulence effect + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this) + } + }; + SVG.extend(SVG.Effect,chainingEffects); + SVG.extend(SVG.ParentEffect,chainingEffects); + + //crea class for child effects, like MergeNode, FuncR and lights + SVG.ChildEffect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Element, + extend: { + in: function(effect){ + this.attr('in',effect); + } + //dont include any "result" functions because these types of nodes dont have them + } + }); + + // Create all different effects + var effects = { + blend: function(in1,in2,mode){ + this.attr({ + in: in1, + in2: in2, + mode: mode || 'normal' + }); + }, + colorMatrix: function(type,values){ + if (type == 'matrix') + values = normaliseMatrix(values); + + this.attr({ + type: type + , values: typeof values == 'undefined' ? null : values + }); + }, + convolveMatrix: function(matrix){ + matrix = normaliseMatrix(matrix); + + this.attr({ + order: Math.sqrt(matrix.split(' ').length) + , kernelMatrix: matrix + }); + }, + composite: function(in1, in2, operator){ + this.attr({ + in: in1, + in2: in2, + operator: operator + }); + }, + flood: function(color,opacity){ + this.attr('flood-color',color); + if(opacity != null) this.attr('flood-opacity',opacity); + }, + offset: function(x,y){ + this.attr({ + dx: x, + dy: y + }); + }, + image: function(src){ + this.attr('href', src, SVG.xlink); + }, + displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){ + this.attr({ + in: in1, + in2: in2, + scale: scale, + xChannelSelector: xChannelSelector, + yChannelSelector: yChannelSelector + }); + }, + gaussianBlur: function(x,y){ + if(x != null || y != null) + this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments))); + else + this.attr('stdDeviation', '0 0'); + }, + morphology: function(operator,radius){ + this.attr({ + operator: operator, + radius: radius + }); + }, + tile: function(){ + + }, + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + this.attr({ + numOctaves: numOctaves, + seed: seed, + stitchTiles: stitchTiles, + baseFrequency: baseFrequency, + type: type + }); + } + }; + + // Create all parent effects + var parentEffects = { + merge: function(){ + var children; + + //test to see if we have a set + if(arguments[0] instanceof SVG.Set){ + var that = this; + arguments[0].each(function(i){ + if(this instanceof SVG.MergeNode) + that.put(this); + else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect) + that.put(new SVG.MergeNode(this)); + }); + } + else { + //if the first argument is an array use it + if(Array.isArray(arguments[0])) + children = arguments[0]; + else + children = arguments; + + for(var i = 0; i < children.length; i++){ + if(children[i] instanceof SVG.MergeNode){ + this.put(children[i]); + } + else this.put(new SVG.MergeNode(children[i])); + } + } + }, + componentTransfer: function(compontents){ + /* create rgb set */ + this.rgb = new SVG.Set + + /* create components */ + ;(['r', 'g', 'b', 'a']).forEach(function(c) { + /* create component */ + this[c] = new SVG['Func' + c.toUpperCase()]('identity'); + + /* store component in set */ + this.rgb.add(this[c]); + + /* add component node */ + this.node.appendChild(this[c].node); + }.bind(this)); //lost context in foreach + + /* set components */ + if (compontents) { + if (compontents.rgb) { + (['r', 'g', 'b']).forEach(function(c) { + this[c].attr(compontents.rgb); + }.bind(this)); + + delete compontents.rgb; + } + + /* set individual components */ + for (var c in compontents) + this[c].attr(compontents[c]); + } + }, + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + this.attr({ + surfaceScale: surfaceScale, + diffuseConstant: diffuseConstant, + kernelUnitLength: kernelUnitLength + }); + }, + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + this.attr({ + surfaceScale: surfaceScale, + diffuseConstant: diffuseConstant, + specularExponent: specularExponent, + kernelUnitLength: kernelUnitLength + }); + }, + }; + + // Create child effects like PointLight and MergeNode + var childEffects = { + distantLight: function(azimuth, elevation){ + this.attr({ + azimuth: azimuth, + elevation: elevation + }); + }, + pointLight: function(x,y,z){ + this.attr({ + x: x, + y: y, + z: z + }); + }, + spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){ + this.attr({ + x: x, + y: y, + z: z, + pointsAtX: pointsAtX, + pointsAtY: pointsAtY, + pointsAtZ: pointsAtZ + }); + }, + mergeNode: function(in1){ + this.attr('in',in1); + } + } + + // Create compontent functions + ;(['r', 'g', 'b', 'a']).forEach(function(c) { + /* create class */ + childEffects['Func' + c.toUpperCase()] = function(type) { + this.attr('type',type); + + // take diffent arguments based on the type + switch(type){ + case 'table': + this.attr('tableValues',arguments[1]); + break + case 'linear': + this.attr('slope',arguments[1]); + this.attr('intercept',arguments[2]); + break + case 'gamma': + this.attr('amplitude',arguments[1]); + this.attr('exponent',arguments[2]); + this.attr('offset',arguments[2]); + break + } + }; + }); + + //create effects + foreach(effects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name + 'Effect'] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + + //set the result + this.result(this.attr('id') + 'Out'); + }, + inherit: SVG.Effect, + extend: proto + }); + }); + + //create parent effects + foreach(parentEffects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name + 'Effect'] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + + //set the result + this.result(this.attr('id') + 'Out'); + }, + inherit: SVG.ParentEffect, + extend: proto + }); + }); + + //create child effects + foreach(childEffects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + }, + inherit: SVG.ChildEffect, + extend: proto + }); + }); + + // Effect-specific extensions + SVG.extend(SVG.MergeEffect,{ + in: function(effect){ + if(effect instanceof SVG.MergeNode) + this.add(effect,0); + else + this.add(new SVG.MergeNode(effect),0); + + return this + } + }); + SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{ + in2: function(effect){ + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in2')+'"]').get(0) || this.attr('in2') : this.attr('in2', effect) + } + }); + + // Presets + SVG.filter = { + sepiatone: [ .343, .669, .119, 0, 0 + , .249, .626, .130, 0, 0 + , .172, .334, .111, 0, 0 + , .000, .000, .000, 1, 0 ] + }; + + // Helpers + function normaliseMatrix(matrix) { + /* convert possible array value to string */ + if (Array.isArray(matrix)) + matrix = new SVG.Array(matrix); + + /* ensure there are no leading, tailing or double spaces */ + return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ') + } + + function listString(list) { + if (!Array.isArray(list)) + return list + + for (var i = 0, l = list.length, s = []; i < l; i++) + s.push(list[i]); + + return s.join(' ') + } + + function foreach(){ //loops through mutiple objects + var fn = function(){}; + if(typeof arguments[arguments.length-1] == 'function'){ + fn = arguments[arguments.length-1]; + Array.prototype.splice.call(arguments,arguments.length-1,1); + } + for(var k in arguments){ + for(var i in arguments[k]){ + fn(arguments[k][i],i,arguments[k]); + } + } + } + + }).call(undefined); + + (function() { + + SVG.extend(SVG.PathArray, { + morph: function(array) { + + var startArr = this.value + , destArr = this.parse(array); + + var startOffsetM = 0 + , destOffsetM = 0; + + var startOffsetNextM = false + , destOffsetNextM = false; + + while(true){ + // stop if there is no M anymore + if(startOffsetM === false && destOffsetM === false) break + + // find the next M in path array + startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1); + destOffsetNextM = findNextM( destArr, destOffsetM === false ? false : destOffsetM+1); + + // We have to add one M to the startArray + if(startOffsetM === false){ + var bbox = new SVG.PathArray(result.start).bbox(); + + // when the last block had no bounding box we simply take the first M we got + if(bbox.height == 0 || bbox.width == 0){ + startOffsetM = startArr.push(startArr[0]) - 1; + }else { + // we take the middle of the bbox instead when we got one + startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1; + } + } + + // We have to add one M to the destArray + if( destOffsetM === false){ + var bbox = new SVG.PathArray(result.dest).bbox(); + + if(bbox.height == 0 || bbox.width == 0){ + destOffsetM = destArr.push(destArr[0]) - 1; + }else { + destOffsetM = destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1; + } + } + + // handle block from M to next M + var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM); + + // update the arrays to their new values + startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM)); + destArr = destArr.slice(0, destOffsetM).concat(result.dest , destOffsetNextM === false ? [] : destArr.slice( destOffsetNextM)); + + // update offsets + startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length; + destOffsetM = destOffsetNextM === false ? false : destOffsetM + result.dest.length; + + } + + // copy back arrays + this.value = startArr; + this.destination = new SVG.PathArray(); + this.destination.value = destArr; + + return this + } + }); + + + + // sorry for the long declaration + // slices out one block (from M to M) and syncronize it so the types and length match + function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined$1){ + + // slice out the block we need + var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined$1) + , destArrTemp = destArr.slice( destOffsetM, destOffsetNextM || undefined$1); + + var i = 0 + , posStart = {pos:[0,0], start:[0,0]} + , posDest = {pos:[0,0], start:[0,0]}; + + do{ + + // convert shorthand types to long form + startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]); + destArrTemp[i] = simplyfy.call(posDest , destArrTemp[i]); + + // check if both shape types match + // 2 elliptical arc curve commands ('A'), are considered different if the + // flags (large-arc-flag, sweep-flag) don't match + if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' || + (startArrTemp[i][0] == 'A' && + (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5]) + ) + ) { + + // if not, convert shapes to beziere + Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i]))); + Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i]))); + + } else { + + // only update positions otherwise + startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]); + destArrTemp[i] = setPosAndReflection.call(posDest , destArrTemp[i]); + + } + + // we are at the end at both arrays. stop here + if(++i == startArrTemp.length && i == destArrTemp.length) break + + // destArray is longer. Add one element + if(i == startArrTemp.length){ + startArrTemp.push([ + 'C', + posStart.pos[0], + posStart.pos[1], + posStart.pos[0], + posStart.pos[1], + posStart.pos[0], + posStart.pos[1], + ]); + } + + // startArr is longer. Add one element + if(i == destArrTemp.length){ + destArrTemp.push([ + 'C', + posDest.pos[0], + posDest.pos[1], + posDest.pos[0], + posDest.pos[1], + posDest.pos[0], + posDest.pos[1] + ]); + } + + + }while(true) + + // return the updated block + return {start:startArrTemp, dest:destArrTemp} + } + + // converts shorthand types to long form + function simplyfy(val){ + + switch(val[0]){ + case 'z': // shorthand line to start + case 'Z': + val[0] = 'L'; + val[1] = this.start[0]; + val[2] = this.start[1]; + break + case 'H': // shorthand horizontal line + val[0] = 'L'; + val[2] = this.pos[1]; + break + case 'V': // shorthand vertical line + val[0] = 'L'; + val[2] = val[1]; + val[1] = this.pos[0]; + break + case 'T': // shorthand quadratic beziere + val[0] = 'Q'; + val[3] = val[1]; + val[4] = val[2]; + val[1] = this.reflection[1]; + val[2] = this.reflection[0]; + break + case 'S': // shorthand cubic beziere + val[0] = 'C'; + val[6] = val[4]; + val[5] = val[3]; + val[4] = val[2]; + val[3] = val[1]; + val[2] = this.reflection[1]; + val[1] = this.reflection[0]; + break + } + + return val + + } + + // updates reflection point and current position + function setPosAndReflection(val){ + + var len = val.length; + + this.pos = [ val[len-2], val[len-1] ]; + + if('SCQT'.indexOf(val[0]) != -1) + this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ]; + + return val + } + + // converts all types to cubic beziere + function toBeziere(val){ + var retVal = [val]; + + switch(val[0]){ + case 'M': // special handling for M + this.pos = this.start = [val[1], val[2]]; + return retVal + case 'L': + val[5] = val[3] = val[1]; + val[6] = val[4] = val[2]; + val[1] = this.pos[0]; + val[2] = this.pos[1]; + break + case 'Q': + val[6] = val[4]; + val[5] = val[3]; + val[4] = val[4] * 1/3 + val[2] * 2/3; + val[3] = val[3] * 1/3 + val[1] * 2/3; + val[2] = this.pos[1] * 1/3 + val[2] * 2/3; + val[1] = this.pos[0] * 1/3 + val[1] * 2/3; + break + case 'A': + retVal = arcToBeziere(this.pos, val); + val = retVal[0]; + break + } + + val[0] = 'C'; + this.pos = [val[5], val[6]]; + this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]]; + + return retVal + + } + + // finds the next position of type M + function findNextM(arr, offset){ + + if(offset === false) return false + + for(var i = offset, len = arr.length;i < len;++i){ + + if(arr[i][0] == 'M') return i + + } + + return false + } + + + + // Convert an arc segment into equivalent cubic Bezier curves + // Depending on the arc, up to 4 curves might be used to represent it since a + // curve gives a good approximation for only a quarter of an ellipse + // The curves are returned as an array of SVG curve commands: + // [ ['C', x1, y1, x2, y2, x, y] ... ] + function arcToBeziere(pos, val) { + // Parameters extraction, handle out-of-range parameters as specified in the SVG spec + // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters + var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360 + , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7] + , A = new SVG.Point(pos), B = new SVG.Point(x, y) + , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd + , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il + , retVal = [], x1, y1, x2, y2; + + // Ensure radii are non-zero + if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) { + // treat this arc as a straight line segment + return [['C', A.x, A.y, B.x, B.y, B.x, B.y]] + } + + // Ensure radii are large enough using the algorithm provided in the SVG spec + // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii + primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation)); + lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry); + if(lambda > 1) { + lambda = Math.sqrt(lambda); + rx = lambda*rx; + ry = lambda*ry; + } + + // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse + mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation); + A = A.transform(mat); + B = B.transform(mat); + + // Calculate the horizontal and vertical distance between the initial and final point of the arc + k = [B.x-A.x, B.y-A.y]; + + // Find the length of the chord formed by A and B + cSquare = k[0]*k[0] + k[1]*k[1]; + c = Math.sqrt(cSquare); + + // Calculate the ratios of the horizontal and vertical distance on the length of the chord + k[0] /= c; + k[1] /= c; + + // Calculate the distance between the circle center and the chord midpoint + // using this formula: t = sqrt(r^2 - c^2 / 4) + // where t is the distance between the cirle center and the chord midpoint, + // r is the rayon of the circle and c is the chord length + // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php + // Because of the imprecision of floating point numbers, cSquare might end + // up being slightly above 4 which would result in a negative radicand + // To prevent that, a test is made before computing the square root + t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0; + + // For most situations, there are actually two different ellipses that + // satisfy the constraints imposed by the points A and B, the radii rx and ry, + // and the xAxisRotation + // When the flags largeArcFlag and sweepFlag are equal, it means that the + // second ellipse is used as a solution + // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands + if(largeArcFlag === sweepFlag) { + t *= -1; + } + + // Calculate the coordinates of the center of the circle from the midpoint of the chord + // This is done by multiplying the ratios calculated previously by the distance between + // the circle center and the chord midpoint and using these values to go from the midpoint + // to the center of the circle + // The negative of the vertical distance ratio is used to modify the x coordinate while + // the horizontal distance ratio is used to modify the y coordinate + // That is because the center of the circle is perpendicular to the chord and perpendicular + // lines are negative reciprocals + O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]); + // Move the center of the circle at the origin + OA = new SVG.Point(A.x-O.x, A.y-O.y); + OB = new SVG.Point(B.x-O.x, B.y-O.y); + + // Calculate the start and end angle + tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y)); + if (OA.y < 0) { + tetaStart *= -1; + } + tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y)); + if (OB.y < 0) { + tetaEnd *= -1; + } + + // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction, + // make sure that the end angle is above the start angle + if (sweepFlag && tetaStart > tetaEnd) { + tetaEnd += 2*Math.PI; + } + // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction, + // make sure that the end angle is below the start angle + if (!sweepFlag && tetaStart < tetaEnd) { + tetaEnd -= 2*Math.PI; + } + + // Find the number of Bezier curves that are required to represent the arc + // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle + nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI); + + // Calculate the coordinates of the points of all the Bezier curves required to represent the arc + // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic + arcSegPoints = []; + angle = tetaStart; + deltaTeta = (tetaEnd-tetaStart)/nbSectors; + f = 4*Math.tan(deltaTeta/4)/3; + for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint + cosAngle = Math.cos(angle); + sinAngle = Math.sin(angle); + + pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle); + arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)]; + + angle += deltaTeta; + } + + // Remove the first control point of the first segment point and remove the second control point of the last segment point + // These two control points are not used in the approximation of the arc, that is why they are removed + arcSegPoints[0][0] = arcSegPoints[0][1].clone(); + arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone(); + + // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse + mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation); + for (i = 0, il = arcSegPoints.length; i < il; i++) { + arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat); + arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat); + arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat); + } + + + // Convert the segments points to SVG curve commands + for (i = 1, il = arcSegPoints.length; i < il; i++) { + pt = arcSegPoints[i-1][2]; + x1 = pt.x; + y1 = pt.y; + + pt = arcSegPoints[i][0]; + x2 = pt.x; + y2 = pt.y; + + pt = arcSegPoints[i][1]; + x = pt.x; + y = pt.y; + + retVal.push(['C', x1, y1, x2, y2, x, y]); + } + + return retVal + } + }()); + + /*! svg.draggable.js - v2.2.2 - 2019-01-08 + * https://github.com/svgdotjs/svg.draggable.js + * Copyright (c) 2019 Wout Fierens; Licensed MIT */ + (function() { + + // creates handler, saves it + function DragHandler(el){ + el.remember('_draggable', this); + this.el = el; + } + + + // Sets new parameter, starts dragging + DragHandler.prototype.init = function(constraint, val){ + var _this = this; + this.constraint = constraint; + this.value = val; + this.el.on('mousedown.drag', function(e){ _this.start(e); }); + this.el.on('touchstart.drag', function(e){ _this.start(e); }); + }; + + // transforms one point from screen to user coords + DragHandler.prototype.transformPoint = function(event, offset){ + event = event || window.event; + var touches = event.changedTouches && event.changedTouches[0] || event; + this.p.x = touches.clientX - (offset || 0); + this.p.y = touches.clientY; + return this.p.matrixTransform(this.m) + }; + + // gets elements bounding box with special handling of groups, nested and use + DragHandler.prototype.getBBox = function(){ + + var box = this.el.bbox(); + + if(this.el instanceof SVG.Nested) box = this.el.rbox(); + + if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) { + box.x = this.el.x(); + box.y = this.el.y(); + } + + return box + }; + + // start dragging + DragHandler.prototype.start = function(e){ + + // check for left button + if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){ + if((e.which || e.buttons) != 1){ + return + } + } + + var _this = this; + + // fire beforedrag event + this.el.fire('beforedrag', { event: e, handler: this }); + if(this.el.event().defaultPrevented) return; + + // prevent browser drag behavior as soon as possible + e.preventDefault(); + + // prevent propagation to a parent that might also have dragging enabled + e.stopPropagation(); + + // search for parent on the fly to make sure we can call + // draggable() even when element is not in the dom currently + this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc); + this.p = this.parent.node.createSVGPoint(); + + // save current transformation matrix + this.m = this.el.node.getScreenCTM().inverse(); + + var box = this.getBBox(); + + var anchorOffset; + + // fix text-anchor in text-element (#37) + if(this.el instanceof SVG.Text){ + anchorOffset = this.el.node.getComputedTextLength(); + + switch(this.el.attr('text-anchor')){ + case 'middle': + anchorOffset /= 2; + break + case 'start': + anchorOffset = 0; + break; + } + } + + this.startPoints = { + // We take absolute coordinates since we are just using a delta here + point: this.transformPoint(e, anchorOffset), + box: box, + transform: this.el.transform() + }; + + // add drag and end events to window + SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); }); + SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); }); + SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); }); + SVG.on(window, 'touchend.drag', function(e){ _this.end(e); }); + + // fire dragstart event + this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this}); + }; + + // while dragging + DragHandler.prototype.drag = function(e){ + + var box = this.getBBox() + , p = this.transformPoint(e) + , x = this.startPoints.box.x + p.x - this.startPoints.point.x + , y = this.startPoints.box.y + p.y - this.startPoints.point.y + , c = this.constraint + , gx = p.x - this.startPoints.point.x + , gy = p.y - this.startPoints.point.y; + + this.el.fire('dragmove', { + event: e + , p: p + , m: this.m + , handler: this + }); + + if(this.el.event().defaultPrevented) return p + + // move the element to its new position, if possible by constraint + if (typeof c == 'function') { + + var coord = c.call(this.el, x, y, this.m); + + // bool, just show us if movement is allowed or not + if (typeof coord == 'boolean') { + coord = { + x: coord, + y: coord + }; + } + + // if true, we just move. If !false its a number and we move it there + if (coord.x === true) { + this.el.x(x); + } else if (coord.x !== false) { + this.el.x(coord.x); + } + + if (coord.y === true) { + this.el.y(y); + } else if (coord.y !== false) { + this.el.y(coord.y); + } + + } else if (typeof c == 'object') { + + // keep element within constrained box + if (c.minX != null && x < c.minX) { + x = c.minX; + gx = x - this.startPoints.box.x; + } else if (c.maxX != null && x > c.maxX - box.width) { + x = c.maxX - box.width; + gx = x - this.startPoints.box.x; + } if (c.minY != null && y < c.minY) { + y = c.minY; + gy = y - this.startPoints.box.y; + } else if (c.maxY != null && y > c.maxY - box.height) { + y = c.maxY - box.height; + gy = y - this.startPoints.box.y; + } + + if (c.snapToGrid != null) { + x = x - (x % c.snapToGrid); + y = y - (y % c.snapToGrid); + gx = gx - (gx % c.snapToGrid); + gy = gy - (gy % c.snapToGrid); + } + + if(this.el instanceof SVG.G) + this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true); + else + this.el.move(x, y); + } + + // so we can use it in the end-method, too + return p + }; + + DragHandler.prototype.end = function(e){ + + // final drag + var p = this.drag(e); + + // fire dragend event + this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this }); + + // unbind events + SVG.off(window, 'mousemove.drag'); + SVG.off(window, 'touchmove.drag'); + SVG.off(window, 'mouseup.drag'); + SVG.off(window, 'touchend.drag'); + + }; + + SVG.extend(SVG.Element, { + // Make element draggable + // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move. + // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y. + draggable: function(value, constraint) { + + // Check the parameters and reassign if needed + if (typeof value == 'function' || typeof value == 'object') { + constraint = value; + value = true; + } + + var dragHandler = this.remember('_draggable') || new DragHandler(this); + + // When no parameter is given, value is true + value = typeof value === 'undefined' ? true : value; + + if(value) dragHandler.init(constraint || {}, value); + else { + this.off('mousedown.drag'); + this.off('touchstart.drag'); + } + + return this + } + + }); + + }).call(undefined); + + (function() { + + function SelectHandler(el) { + + this.el = el; + el.remember('_selectHandler', this); + this.pointSelection = {isSelected: false}; + this.rectSelection = {isSelected: false}; + + // helper list with position settings of each type of point + this.pointsList = { + lt: [ 0, 0 ], + rt: [ 'width', 0 ], + rb: [ 'width', 'height' ], + lb: [ 0, 'height' ], + t: [ 'width', 0 ], + r: [ 'width', 'height' ], + b: [ 'width', 'height' ], + l: [ 0, 'height' ] + }; + + // helper function to get point coordinates based on settings above and an object (bbox in our case) + this.pointCoord = function (setting, object, isPointCentered) { + var coord = typeof setting !== 'string' ? setting : object[setting]; + // Top, bottom, right and left points are placed in the center of element width/height + return isPointCentered ? coord / 2 : coord + }; + + this.pointCoords = function (point, object) { + var settings = this.pointsList[point]; + + return { + x: this.pointCoord(settings[0], object, (point === 't' || point === 'b')), + y: this.pointCoord(settings[1], object, (point === 'r' || point === 'l')) + } + }; + } + + SelectHandler.prototype.init = function (value, options) { + + var bbox = this.el.bbox(); + this.options = {}; + + // store defaults list of points in order to verify users config + var points = this.el.selectize.defaults.points; + + // Merging the defaults and the options-object together + for (var i in this.el.selectize.defaults) { + this.options[i] = this.el.selectize.defaults[i]; + if (options[i] !== undefined) { + this.options[i] = options[i]; + } + } + + // prepare & validate list of points to be added (or excluded) + var pointsLists = ['points', 'pointsExclude']; + + for (var i in pointsLists) { + var option = this.options[pointsLists[i]]; + + if (typeof option === 'string') { + if (option.length > 0) { + // if set as comma separated string list => convert it into an array + option = option.split(/\s*,\s*/i); + } else { + option = []; + } + } else if (typeof option === 'boolean' && pointsLists[i] === 'points') { + // this is not needed, but let's have it for legacy support + option = option ? points : []; + } + + this.options[pointsLists[i]] = option; + } + + // intersect correct all points options with users config (exclude unwanted points) + // ES5 -> NO arrow functions nor Array.includes() + this.options.points = [ points, this.options.points ].reduce( + function (a, b) { + return a.filter( + function (c) { + return b.indexOf(c) > -1; + } + ) + } + ); + + // exclude pointsExclude, if wanted + this.options.points = [ this.options.points, this.options.pointsExclude ].reduce( + function (a, b) { + return a.filter( + function (c) { + return b.indexOf(c) < 0; + } + ) + } + ); + + this.parent = this.el.parent(); + this.nested = (this.nested || this.parent.group()); + this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y)); + + // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving + if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) { + this.selectPoints(value); + } else { + this.selectRect(value); + } + + this.observe(); + this.cleanup(); + + }; + + SelectHandler.prototype.selectPoints = function (value) { + + this.pointSelection.isSelected = value; + + // When set is already there we dont have to create one + if (this.pointSelection.set) { + return this; + } + + // Create our set of elements + this.pointSelection.set = this.parent.set(); + // draw the points and mark the element as selected + this.drawPoints(); + + return this; + + }; + + // create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon + SelectHandler.prototype.getPointArray = function () { + var bbox = this.el.bbox(); + + return this.el.array().valueOf().map(function (el) { + return [el[0] - bbox.x, el[1] - bbox.y]; + }); + }; + + // Draws a points + SelectHandler.prototype.drawPoints = function () { + + var _this = this, array = this.getPointArray(); + + // go through the array of points + for (var i = 0, len = array.length; i < len; ++i) { + + var curriedEvent = (function (k) { + return function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire('point', {x: x, y: y, i: k, event: ev}); + }; + })(i); + + // add every point to the set + // add css-classes and a touchstart-event which fires our event for moving points + var point = this.drawPoint(array[i][0], array[i][1]) + .addClass(this.options.classPoints) + .addClass(this.options.classPoints + '_point') + .on('touchstart', curriedEvent) + .on('mousedown', curriedEvent); + this.pointSelection.set.add(point); + } + }; + + // The function to draw single point + SelectHandler.prototype.drawPoint = function (cx, cy) { + var pointType = this.options.pointType; + + switch (pointType) { + case 'circle': + return this.drawCircle(cx, cy); + case 'rect': + return this.drawRect(cx, cy); + default: + if (typeof pointType === 'function') { + return pointType.call(this, cx, cy); + } + + throw new Error('Unknown ' + pointType + ' point type!'); + } + }; + + // The function to draw the circle point + SelectHandler.prototype.drawCircle = function (cx, cy) { + return this.nested.circle(this.options.pointSize) + .center(cx, cy); + }; + + // The function to draw the rect point + SelectHandler.prototype.drawRect = function (cx, cy) { + return this.nested.rect(this.options.pointSize, this.options.pointSize) + .center(cx, cy); + }; + + // every time a point is moved, we have to update the positions of our point + SelectHandler.prototype.updatePointSelection = function () { + var array = this.getPointArray(); + + this.pointSelection.set.each(function (i) { + if (this.cx() === array[i][0] && this.cy() === array[i][1]) { + return; + } + this.center(array[i][0], array[i][1]); + }); + }; + + SelectHandler.prototype.updateRectSelection = function () { + var _this = this, bbox = this.el.bbox(); + + this.rectSelection.set.get(0).attr({ + width: bbox.width, + height: bbox.height + }); + + // set.get(1) is always in the upper left corner. no need to move it + if (this.options.points.length) { + this.options.points.map(function (point, index) { + var coords = _this.pointCoords(point, bbox); + + _this.rectSelection.set.get(index + 1).center(coords.x, coords.y); + }); + } + + if (this.options.rotationPoint) { + var length = this.rectSelection.set.length(); + + this.rectSelection.set.get(length - 1).center(bbox.width / 2, 20); + } + }; + + SelectHandler.prototype.selectRect = function (value) { + + var _this = this, bbox = this.el.bbox(); + + this.rectSelection.isSelected = value; + + // when set is already p + this.rectSelection.set = this.rectSelection.set || this.parent.set(); + + // helperFunction to create a mouse-down function which triggers the event specified in `eventName` + function getMoseDownFunc(eventName) { + return function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire(eventName, {x: x, y: y, event: ev}); + }; + } + + // create the selection-rectangle and add the css-class + if (!this.rectSelection.set.get(0)) { + this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect)); + } + + // Draw Points at the edges, if enabled + if (this.options.points.length && this.rectSelection.set.length() < 2) { + var ename ="touchstart", mname = "mousedown"; + + this.options.points.map(function (point, index) { + var coords = _this.pointCoords(point, bbox); + + var pointElement = _this.drawPoint(coords.x, coords.y) + .attr('class', _this.options.classPoints + '_' + point) + .on(mname, getMoseDownFunc(point)) + .on(ename, getMoseDownFunc(point)); + _this.rectSelection.set.add(pointElement); + }); + + this.rectSelection.set.each(function () { + this.addClass(_this.options.classPoints); + }); + } + + // draw rotationPint, if enabled + if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) { + + var curriedEvent = function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire('rot', {x: x, y: y, event: ev}); + }; + + var pointElement = this.drawPoint(bbox.width / 2, 20) + .attr('class', this.options.classPoints + '_rot') + .on("touchstart", curriedEvent) + .on("mousedown", curriedEvent); + this.rectSelection.set.add(pointElement); + } + + }; + + SelectHandler.prototype.handler = function () { + + var bbox = this.el.bbox(); + this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y)); + + if (this.rectSelection.isSelected) { + this.updateRectSelection(); + } + + if (this.pointSelection.isSelected) { + this.updatePointSelection(); + } + + }; + + SelectHandler.prototype.observe = function () { + var _this = this; + + if (MutationObserver) { + if (this.rectSelection.isSelected || this.pointSelection.isSelected) { + this.observerInst = this.observerInst || new MutationObserver(function () { + _this.handler(); + }); + this.observerInst.observe(this.el.node, {attributes: true}); + } else { + try { + this.observerInst.disconnect(); + delete this.observerInst; + } catch (e) { + } + } + } else { + this.el.off('DOMAttrModified.select'); + + if (this.rectSelection.isSelected || this.pointSelection.isSelected) { + this.el.on('DOMAttrModified.select', function () { + _this.handler(); + }); + } + } + }; + + SelectHandler.prototype.cleanup = function () { + + //var _this = this; + + if (!this.rectSelection.isSelected && this.rectSelection.set) { + // stop watching the element, remove the selection + this.rectSelection.set.each(function () { + this.remove(); + }); + + this.rectSelection.set.clear(); + delete this.rectSelection.set; + } + + if (!this.pointSelection.isSelected && this.pointSelection.set) { + // Remove all points, clear the set, stop watching the element + this.pointSelection.set.each(function () { + this.remove(); + }); + + this.pointSelection.set.clear(); + delete this.pointSelection.set; + } + + if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) { + this.nested.remove(); + delete this.nested; + + } + }; + + + SVG.extend(SVG.Element, { + // Select element with mouse + selectize: function (value, options) { + + // Check the parameters and reassign if needed + if (typeof value === 'object') { + options = value; + value = true; + } + + var selectHandler = this.remember('_selectHandler') || new SelectHandler(this); + + selectHandler.init(value === undefined ? true : value, options || {}); + + return this; + + } + }); + + SVG.Element.prototype.selectize.defaults = { + points: ['lt', 'rt', 'rb', 'lb', 't', 'r', 'b', 'l'], // which points to draw, default all + pointsExclude: [], // easier option if to exclude few than rewrite all + classRect: 'svg_select_boundingRect', // Css-class added to the rect + classPoints: 'svg_select_points', // Css-class added to the points + pointSize: 7, // size of point + rotationPoint: true, // If true, rotation point is drawn. Needed for rotation! + deepSelect: false, // If true, moving of single points is possible (only line, polyline, polyon) + pointType: 'circle' // Point type: circle or rect, default circle + }; + }()); + + (function() { + (function () { + + function ResizeHandler(el) { + + el.remember('_resizeHandler', this); + + this.el = el; + this.parameters = {}; + this.lastUpdateCall = null; + this.p = el.doc().node.createSVGPoint(); + } + + ResizeHandler.prototype.transformPoint = function(x, y, m){ + + this.p.x = x - (this.offset.x - window.pageXOffset); + this.p.y = y - (this.offset.y - window.pageYOffset); + + return this.p.matrixTransform(m || this.m); + + }; + + ResizeHandler.prototype._extractPosition = function(event) { + // Extract a position from a mouse/touch event. + // Returns { x: .., y: .. } + return { + x: event.clientX != null ? event.clientX : event.touches[0].clientX, + y: event.clientY != null ? event.clientY : event.touches[0].clientY + } + }; + + ResizeHandler.prototype.init = function (options) { + + var _this = this; + + this.stop(); + + if (options === 'stop') { + return; + } + + this.options = {}; + + // Merge options and defaults + for (var i in this.el.resize.defaults) { + this.options[i] = this.el.resize.defaults[i]; + if (typeof options[i] !== 'undefined') { + this.options[i] = options[i]; + } + } + + // We listen to all these events which are specifying different edges + this.el.on('lt.resize', function(e){ _this.resize(e || window.event); }); // Left-Top + this.el.on('rt.resize', function(e){ _this.resize(e || window.event); }); // Right-Top + this.el.on('rb.resize', function(e){ _this.resize(e || window.event); }); // Right-Bottom + this.el.on('lb.resize', function(e){ _this.resize(e || window.event); }); // Left-Bottom + + this.el.on('t.resize', function(e){ _this.resize(e || window.event); }); // Top + this.el.on('r.resize', function(e){ _this.resize(e || window.event); }); // Right + this.el.on('b.resize', function(e){ _this.resize(e || window.event); }); // Bottom + this.el.on('l.resize', function(e){ _this.resize(e || window.event); }); // Left + + this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation + + this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving + + // This call ensures, that the plugin reacts to a change of snapToGrid immediately + this.update(); + + }; + + ResizeHandler.prototype.stop = function(){ + this.el.off('lt.resize'); + this.el.off('rt.resize'); + this.el.off('rb.resize'); + this.el.off('lb.resize'); + + this.el.off('t.resize'); + this.el.off('r.resize'); + this.el.off('b.resize'); + this.el.off('l.resize'); + + this.el.off('rot.resize'); + + this.el.off('point.resize'); + + return this; + }; + + ResizeHandler.prototype.resize = function (event) { + + var _this = this; + + this.m = this.el.node.getScreenCTM().inverse(); + this.offset = { x: window.pageXOffset, y: window.pageYOffset }; + + var txPt = this._extractPosition(event.detail.event); + this.parameters = { + type: this.el.type, // the type of element + p: this.transformPoint(txPt.x, txPt.y), + x: event.detail.x, // x-position of the mouse when resizing started + y: event.detail.y, // y-position of the mouse when resizing started + box: this.el.bbox(), // The bounding-box of the element + rotation: this.el.transform().rotation // The current rotation of the element + }; + + // Add font-size parameter if the element type is text + if (this.el.type === "text") { + this.parameters.fontSize = this.el.attr()["font-size"]; + } + + // the i-param in the event holds the index of the point which is moved, when using `deepSelect` + if (event.detail.i !== undefined) { + + // get the point array + var array = this.el.array().valueOf(); + + // Save the index and the point which is moved + this.parameters.i = event.detail.i; + this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]]; + } + + // Lets check which edge of the bounding-box was clicked and resize the this.el according to this + switch (event.type) { + + // Left-Top-Edge + case 'lt': + // We build a calculating function for every case which gives us the new position of the this.el + this.calc = function (diffX, diffY) { + // The procedure is always the same + // First we snap the edge to the given grid (snapping to 1px grid is normal resizing) + var snap = this.snapToGrid(diffX, diffY); + + // Now we check if the new height and width still valid (> 0) + if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) { + // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized) + + /* + * but first check if the element is text box, so we can change the font size instead of + * the width and height + */ + + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize - snap[0]); + return; + } + + snap = this.checkAspectRatio(snap); + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]); + } + }; + break; + + // Right-Top + case 'rt': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1 << 1); + if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize + snap[0]); + return; + } + + snap = this.checkAspectRatio(snap, true); + + this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]); + } + }; + break; + + // Right-Bottom + case 'rb': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize + snap[0]); + return; + } + + snap = this.checkAspectRatio(snap); + + this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]); + } + }; + break; + + // Left-Bottom + case 'lb': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1); + if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize - snap[0]); + return; + } + + snap = this.checkAspectRatio(snap, true); + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]); + } + }; + break; + + // Top + case 't': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1 << 1); + if (this.parameters.box.height - snap[1] > 0) { + // Disable the font-resizing if it is not from the corner of bounding-box + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]); + } + }; + break; + + // Right + case 'r': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.width + snap[0] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]); + } + }; + break; + + // Bottom + case 'b': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]); + } + }; + break; + + // Left + case 'l': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1); + if (this.parameters.box.width - snap[0] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]); + } + }; + break; + + // Rotation + case 'rot': + // s.a. + this.calc = function (diffX, diffY) { + + // yes this is kinda stupid but we need the mouse coords back... + var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y}; + + // start minus middle + var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2)); + + // end minus middle + var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2)); + + var angle = this.parameters.rotation + (pAngle - sAngle) * 180 / Math.PI + this.options.snapToAngle / 2; + + // We have to move the element to the center of the box first and change the rotation afterwards + // because rotation always works around a rotation-center, which is changed when moving the element + // We also set the new rotation center to the center of the box. + this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(angle - (angle % this.options.snapToAngle), this.parameters.box.cx, this.parameters.box.cy); + }; + break; + + // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object) + case 'point': + this.calc = function (diffX, diffY) { + + // Snapping the point to the grid + var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]); + + // Get the point array + var array = this.el.array().valueOf(); + + // Changing the moved point in the array + array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0]; + array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1]; + + // And plot the new this.el + this.el.plot(array); + }; + } + + this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event}); + // When resizing started, we have to register events for... + // Touches. + SVG.on(window, 'touchmove.resize', function(e) { + _this.update(e || window.event); + }); + SVG.on(window, 'touchend.resize', function() { + _this.done(); + }); + // Mouse. + SVG.on(window, 'mousemove.resize', function (e) { + _this.update(e || window.event); + }); + SVG.on(window, 'mouseup.resize', function () { + _this.done(); + }); + + }; + + // The update-function redraws the element every time the mouse is moving + ResizeHandler.prototype.update = function (event) { + + if (!event) { + if (this.lastUpdateCall) { + this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]); + } + return; + } + + // Calculate the difference between the mouseposition at start and now + var txPt = this._extractPosition(event); + var p = this.transformPoint(txPt.x, txPt.y); + + var diffX = p.x - this.parameters.p.x, + diffY = p.y - this.parameters.p.y; + + this.lastUpdateCall = [diffX, diffY]; + + // Calculate the new position and height / width of the element + this.calc(diffX, diffY); + + // Emit an event to say we have changed. + this.el.fire('resizing', {dx: diffX, dy: diffY, event: event}); + }; + + // Is called on mouseup. + // Removes the update-function from the mousemove event + ResizeHandler.prototype.done = function () { + this.lastUpdateCall = null; + SVG.off(window, 'mousemove.resize'); + SVG.off(window, 'mouseup.resize'); + SVG.off(window, 'touchmove.resize'); + SVG.off(window, 'touchend.resize'); + this.el.fire('resizedone'); + }; + + // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit) + // In this cases the temp-values are calculated differently + ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) { + + var temp; + + // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value + if (typeof pointCoordsY !== 'undefined') { + // Note that flag = pointCoordsX in this case + temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid]; + } else { + // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge) + flag = flag == null ? 1 | 1 << 1 : flag; + temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid]; + } + + if(diffX < 0) { + temp[0] -= this.options.snapToGrid; + } + if(diffY < 0) { + temp[1] -= this.options.snapToGrid; + } + + diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ? + temp[0] : + temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid)); + diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ? + temp[1] : + temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid)); + + return this.constraintToBox(diffX, diffY, flag, pointCoordsY); + + }; + + // keep element within constrained box + ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) { + //return [diffX, diffY] + var c = this.options.constraint || {}; + var orgX, orgY; + + if (typeof pointCoordsY !== 'undefined') { + orgX = flag; + orgY = pointCoordsY; + } else { + orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width); + orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height); + } + + if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) { + diffX = c.minX - orgX; + } + + if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) { + diffX = c.maxX - orgX; + } + + if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) { + diffY = c.minY - orgY; + } + + if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) { + diffY = c.maxY - orgY; + } + + return [diffX, diffY]; + }; + + ResizeHandler.prototype.checkAspectRatio = function (snap, isReverse) { + if (!this.options.saveAspectRatio) { + return snap; + } + + var updatedSnap = snap.slice(); + var aspectRatio = this.parameters.box.width / this.parameters.box.height; + var newW = this.parameters.box.width + snap[0]; + var newH = this.parameters.box.height - snap[1]; + var newAspectRatio = newW / newH; + + if (newAspectRatio < aspectRatio) { + // Height is too big. Adapt it + updatedSnap[1] = newW / aspectRatio - this.parameters.box.height; + isReverse && (updatedSnap[1] = -updatedSnap[1]); + } else if (newAspectRatio > aspectRatio) { + // Width is too big. Adapt it + updatedSnap[0] = this.parameters.box.width - newH * aspectRatio; + isReverse && (updatedSnap[0] = -updatedSnap[0]); + } + + return updatedSnap; + }; + + SVG.extend(SVG.Element, { + // Resize element with mouse + resize: function (options) { + + (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {}); + + return this; + + } + + }); + + SVG.Element.prototype.resize.defaults = { + snapToAngle: 0.1, // Specifies the speed the rotation is happening when moving the mouse + snapToGrid: 1, // Snaps to a grid of `snapToGrid` Pixels + constraint: {}, // keep element within constrained box + saveAspectRatio: false // Save aspect ratio when resizing using lt, rt, rb or lb points + }; + + }).call(this); + }()); + + if (typeof window.Apex === 'undefined') { + window.Apex = {}; + } + + var InitCtxVariables = /*#__PURE__*/function () { + function InitCtxVariables(ctx) { + _classCallCheck(this, InitCtxVariables); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(InitCtxVariables, [{ + key: "initModules", + value: function initModules() { + this.ctx.publicMethods = ['updateOptions', 'updateSeries', 'appendData', 'appendSeries', 'toggleSeries', 'showSeries', 'hideSeries', 'setLocale', 'resetSeries', 'zoomX', 'toggleDataPointSelection', 'dataURI', 'exportToCSV', 'addXaxisAnnotation', 'addYaxisAnnotation', 'addPointAnnotation', 'clearAnnotations', 'removeAnnotation', 'paper', 'destroy']; + this.ctx.eventList = ['click', 'mousedown', 'mousemove', 'mouseleave', 'touchstart', 'touchmove', 'touchleave', 'mouseup', 'touchend']; + this.ctx.animations = new Animations(this.ctx); + this.ctx.axes = new Axes(this.ctx); + this.ctx.core = new Core(this.ctx.el, this.ctx); + this.ctx.config = new Config({}); + this.ctx.data = new Data(this.ctx); + this.ctx.grid = new Grid(this.ctx); + this.ctx.graphics = new Graphics(this.ctx); + this.ctx.coreUtils = new CoreUtils(this.ctx); + this.ctx.crosshairs = new Crosshairs(this.ctx); + this.ctx.events = new Events(this.ctx); + this.ctx.exports = new Exports(this.ctx); + this.ctx.localization = new Localization(this.ctx); + this.ctx.options = new Options(); + this.ctx.responsive = new Responsive(this.ctx); + this.ctx.series = new Series(this.ctx); + this.ctx.theme = new Theme(this.ctx); + this.ctx.formatters = new Formatters(this.ctx); + this.ctx.titleSubtitle = new TitleSubtitle(this.ctx); + this.ctx.legend = new Legend(this.ctx); + this.ctx.toolbar = new Toolbar(this.ctx); + this.ctx.tooltip = new Tooltip(this.ctx); + this.ctx.dimensions = new Dimensions(this.ctx); + this.ctx.updateHelpers = new UpdateHelpers(this.ctx); + this.ctx.zoomPanSelection = new ZoomPanSelection(this.ctx); + this.ctx.w.globals.tooltip = new Tooltip(this.ctx); + } + }]); + + return InitCtxVariables; + }(); + + var Destroy = /*#__PURE__*/function () { + function Destroy(ctx) { + _classCallCheck(this, Destroy); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Destroy, [{ + key: "clear", + value: function clear(_ref) { + var isUpdating = _ref.isUpdating; + + if (this.ctx.zoomPanSelection) { + this.ctx.zoomPanSelection.destroy(); + } + + if (this.ctx.toolbar) { + this.ctx.toolbar.destroy(); + } + + this.ctx.animations = null; + this.ctx.axes = null; + this.ctx.annotations = null; + this.ctx.core = null; + this.ctx.data = null; + this.ctx.grid = null; + this.ctx.series = null; + this.ctx.responsive = null; + this.ctx.theme = null; + this.ctx.formatters = null; + this.ctx.titleSubtitle = null; + this.ctx.legend = null; + this.ctx.dimensions = null; + this.ctx.options = null; + this.ctx.crosshairs = null; + this.ctx.zoomPanSelection = null; + this.ctx.updateHelpers = null; + this.ctx.toolbar = null; + this.ctx.localization = null; + this.ctx.w.globals.tooltip = null; + this.clearDomElements({ + isUpdating: isUpdating + }); + } + }, { + key: "killSVG", + value: function killSVG(draw) { + draw.each(function (i, children) { + this.removeClass('*'); + this.off(); + this.stop(); + }, true); + draw.ungroup(); + draw.clear(); + } + }, { + key: "clearDomElements", + value: function clearDomElements(_ref2) { + var _this = this; + + var isUpdating = _ref2.isUpdating; + var elSVG = this.w.globals.dom.Paper.node; // fixes apexcharts.js#1654 & vue-apexcharts#256 + + if (elSVG.parentNode && elSVG.parentNode.parentNode && !isUpdating) { + elSVG.parentNode.parentNode.style.minHeight = 'unset'; + } // detach root event + + + var baseEl = this.w.globals.dom.baseEl; + + if (baseEl) { + // see https://github.com/apexcharts/vue-apexcharts/issues/275 + this.ctx.eventList.forEach(function (event) { + baseEl.removeEventListener(event, _this.ctx.events.documentEvent); + }); + } + + var domEls = this.w.globals.dom; + + if (this.ctx.el !== null) { + // remove all child elements - resetting the whole chart + while (this.ctx.el.firstChild) { + this.ctx.el.removeChild(this.ctx.el.firstChild); + } + } + + this.killSVG(domEls.Paper); + domEls.Paper.remove(); + domEls.elWrap = null; + domEls.elGraphical = null; + domEls.elLegendWrap = null; + domEls.elLegendForeign = null; + domEls.baseEl = null; + domEls.elGridRect = null; + domEls.elGridRectMask = null; + domEls.elGridRectMarkerMask = null; + domEls.elForecastMask = null; + domEls.elNonForecastMask = null; + domEls.elDefs = null; + } + }]); + + return Destroy; + }(); + + // Helpers to react to element resizes, regardless of what caused them + // TODO Currently this creates a new ResizeObserver every time we want to observe an element for resizes + // Ideally, we should be able to use a single observer for all elements + var ros = new WeakMap(); // Map callbacks to ResizeObserver instances for easy removal + + function addResizeListener(el, fn) { + var called = false; + + if (el.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) { + var elRect = el.getBoundingClientRect(); + + if (el.style.display === 'none' || elRect.width === 0) { + // if elRect.width=0, the chart is not rendered at all + // (it has either display none or hidden in a different tab) + // fixes https://github.com/apexcharts/apexcharts.js/issues/2825 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2991 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2992 + called = true; + } + } + + var ro = new ResizeObserver(function (r) { + // ROs fire immediately after being created, + // per spec: https://drafts.csswg.org/resize-observer/#ref-for-element%E2%91%A3 + // we don't want that so we just discard the first run + if (called) { + fn.call(el, r); + } + + called = true; + }); + + if (el.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + // Document fragment, observe children instead (needed for Shadow DOM, see #1332) + Array.from(el.children).forEach(function (c) { + return ro.observe(c); + }); + } else { + ro.observe(el); + } + + ros.set(fn, ro); + } + function removeResizeListener(el, fn) { + var ro = ros.get(fn); + + if (ro) { + ro.disconnect(); + ros.delete(fn); + } + } + + var css_248z = "@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: \" \";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n"; + + /** + * + * @module ApexCharts + **/ + + var ApexCharts$1 = /*#__PURE__*/function () { + function ApexCharts(el, opts) { + _classCallCheck(this, ApexCharts); + + this.opts = opts; + this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase. + + this.w = new Base(opts).init(); + this.el = el; + this.w.globals.cuid = Utils$1.randomId(); + this.w.globals.chartID = this.w.config.chart.id ? Utils$1.escapeString(this.w.config.chart.id) : this.w.globals.cuid; + var initCtx = new InitCtxVariables(this); + initCtx.initModules(); + this.create = Utils$1.bind(this.create, this); + this.windowResizeHandler = this._windowResizeHandler.bind(this); + this.parentResizeHandler = this._parentResizeCallback.bind(this); + } + /** + * The primary method user will call to render the chart. + */ + + + _createClass(ApexCharts, [{ + key: "render", + value: function render() { + var _this = this; + + // main method + return new Promise(function (resolve, reject) { + // only draw chart, if element found + if (_this.el !== null) { + if (typeof Apex._chartInstances === 'undefined') { + Apex._chartInstances = []; + } + + if (_this.w.config.chart.id) { + Apex._chartInstances.push({ + id: _this.w.globals.chartID, + group: _this.w.config.chart.group, + chart: _this + }); + } // set the locale here + + + _this.setLocale(_this.w.config.chart.defaultLocale); + + var beforeMount = _this.w.config.chart.events.beforeMount; + + if (typeof beforeMount === 'function') { + beforeMount(_this, _this.w); + } + + _this.events.fireEvent('beforeMount', [_this, _this.w]); + + window.addEventListener('resize', _this.windowResizeHandler); + addResizeListener(_this.el.parentNode, _this.parentResizeHandler); // Add CSS if not already added + + if (!_this.css) { + var rootNode = _this.el.getRootNode && _this.el.getRootNode(); + + var inShadowRoot = Utils$1.is('ShadowRoot', rootNode); + var doc = _this.el.ownerDocument; + var globalCSS = doc.getElementById('apexcharts-css'); + + if (inShadowRoot || !globalCSS) { + _this.css = document.createElement('style'); + _this.css.id = 'apexcharts-css'; + _this.css.textContent = css_248z; + + if (inShadowRoot) { + // We are in Shadow DOM, add to shadow root + rootNode.prepend(_this.css); + } else { + // Add to of element's document + doc.head.appendChild(_this.css); + } + } + } + + var graphData = _this.create(_this.w.config.series, {}); + + if (!graphData) return resolve(_this); + + _this.mount(graphData).then(function () { + if (typeof _this.w.config.chart.events.mounted === 'function') { + _this.w.config.chart.events.mounted(_this, _this.w); + } + + _this.events.fireEvent('mounted', [_this, _this.w]); + + resolve(graphData); + }).catch(function (e) { + reject(e); // handle error in case no data or element not found + }); + } else { + reject(new Error('Element not found')); + } + }); + } + }, { + key: "create", + value: function create(ser, opts) { + var w = this.w; + var initCtx = new InitCtxVariables(this); + initCtx.initModules(); + var gl = this.w.globals; + gl.noData = false; + gl.animationEnded = false; + this.responsive.checkResponsiveConfig(opts); + + if (w.config.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(w.config); + defaults.convertCatToNumericXaxis(w.config, this.ctx); + } + + if (this.el === null) { + gl.animationEnded = true; + return null; + } + + this.core.setupElements(); + + if (w.config.chart.type === 'treemap') { + w.config.grid.show = false; + w.config.yaxis[0].show = false; + } + + if (gl.svgWidth === 0) { + // if the element is hidden, skip drawing + gl.animationEnded = true; + return null; + } + + var combo = CoreUtils.checkComboSeries(ser); + gl.comboCharts = combo.comboCharts; + gl.comboBarCount = combo.comboBarCount; + var allSeriesAreEmpty = ser.every(function (s) { + return s.data && s.data.length === 0; + }); + + if (ser.length === 0 || allSeriesAreEmpty) { + this.series.handleNoData(); + } + + this.events.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time + + this.data.parseData(ser); // this is a good time to set theme colors first + + this.theme.init(); // as markers accepts array, we need to setup global markers for easier access + + var markers = new Markers(this); + markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width + + this.formatters.setLabelFormatters(); + this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area + // if there is some data to show or user collapsed all series, then proceed drawing legend + + if (!gl.noData || gl.collapsedSeries.length === gl.series.length || w.config.legend.showForSingleSeries) { + this.legend.init(); + } // check whether in multiple series, all series share the same X + + + this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals + + if (gl.axisCharts) { + this.core.coreCalculations(); + + if (w.config.xaxis.type !== 'category') { + // as we have minX and maxX values, determine the default DateTimeFormat for time series + this.formatters.setLabelFormatters(); + } + + this.ctx.toolbar.minX = w.globals.minX; + this.ctx.toolbar.maxX = w.globals.maxX; + } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function + // Also we need to do this before calculating Dimensions plotCoords() method of Dimensions + + + this.formatters.heatmapLabelFormatters(); // get the largest marker size which will be needed in dimensions calc + + var coreUtils = new CoreUtils(this); + coreUtils.getLargestMarkerSize(); // We got plottable area here, next task would be to calculate axis areas + + this.dimensions.plotCoords(); + var xyRatios = this.core.xySettings(); + this.grid.createGridMask(); + var elGraph = this.core.plotChartType(ser, xyRatios); + var dataLabels = new DataLabels(this); + dataLabels.bringForward(); + + if (w.config.dataLabels.background.enabled) { + dataLabels.dataLabelsBackground(); + } // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends + + + this.core.shiftGraphPosition(); + var dim = { + plot: { + left: w.globals.translateX, + top: w.globals.translateY, + width: w.globals.gridWidth, + height: w.globals.gridHeight + } + }; + return { + elGraph: elGraph, + xyRatios: xyRatios, + dimensions: dim + }; + } + }, { + key: "mount", + value: function mount() { + var _this2 = this; + + var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var me = this; + var w = me.w; + return new Promise(function (resolve, reject) { + // no data to display + if (me.el === null) { + return reject(new Error('Not enough data to display or target element not found')); + } else if (graphData === null || w.globals.allSeriesCollapsed) { + me.series.handleNoData(); + } + + me.grid = new Grid(me); + var elgrid = me.grid.drawGrid(); + me.annotations = new Annotations(me); + me.annotations.drawImageAnnos(); + me.annotations.drawTextAnnos(); + + if (w.config.grid.position === 'back' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el); + } + + if (Array.isArray(graphData.elGraph)) { + for (var g = 0; g < graphData.elGraph.length; g++) { + w.globals.dom.elGraphical.add(graphData.elGraph[g]); + } + } else { + w.globals.dom.elGraphical.add(graphData.elGraph); + } + + if (w.config.grid.position === 'front' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el); + } + + if (elgrid && elgrid.elGridBorders && elgrid.elGridBorders.node) { + w.globals.dom.elGraphical.add(elgrid.elGridBorders); + } + + if (w.config.xaxis.crosshairs.position === 'front') { + me.crosshairs.drawXCrosshairs(); + } + + if (w.config.yaxis[0].crosshairs.position === 'front') { + me.crosshairs.drawYCrosshairs(); + } + + if (w.config.chart.type !== 'treemap') { + me.axes.drawAxis(w.config.chart.type, elgrid); + } + + var xAxis = new XAxis(_this2.ctx, elgrid); + var yaxis = new YAxis(_this2.ctx, elgrid); + + if (elgrid !== null) { + xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth); + yaxis.setYAxisTextAlignments(); + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + yaxis.yAxisTitleRotate(index, yaxe.opposite); + } + }); + } + + me.annotations.drawAxesAnnotations(); + + if (!w.globals.noData) { + // draw tooltips at the end + if (w.config.tooltip.enabled && !w.globals.noData) { + me.w.globals.tooltip.drawTooltip(graphData.xyRatios); + } + + if (w.globals.axisCharts && (w.globals.isXNumeric || w.config.xaxis.convertedCatToNumeric || w.globals.isRangeBar)) { + if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) { + me.zoomPanSelection.init({ + xyRatios: graphData.xyRatios + }); + } + } else { + var tools = w.config.chart.toolbar.tools; + var toolsArr = ['zoom', 'zoomin', 'zoomout', 'selection', 'pan', 'reset']; + toolsArr.forEach(function (t) { + tools[t] = false; + }); + } + + if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) { + me.toolbar.createToolbar(); + } + } + + if (w.globals.memory.methodsToExec.length > 0) { + w.globals.memory.methodsToExec.forEach(function (fn) { + fn.method(fn.params, false, fn.context); + }); + } + + if (!w.globals.axisCharts && !w.globals.noData) { + me.core.resizeNonAxisCharts(); + } + + resolve(me); + }); + } + /** + * Destroy the chart instance by removing all elements which also clean up event listeners on those elements. + */ + + }, { + key: "destroy", + value: function destroy() { + window.removeEventListener('resize', this.windowResizeHandler); + removeResizeListener(this.el.parentNode, this.parentResizeHandler); // remove the chart's instance from the global Apex._chartInstances + + var chartID = this.w.config.chart.id; + + if (chartID) { + Apex._chartInstances.forEach(function (c, i) { + if (c.id === Utils$1.escapeString(chartID)) { + Apex._chartInstances.splice(i, 1); + } + }); + } + + new Destroy(this.ctx).clear({ + isUpdating: false + }); + } + /** + * Allows users to update Options after the chart has rendered. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + */ + + }, { + key: "updateOptions", + value: function updateOptions(options) { + var _this3 = this; + + var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var w = this.w; // when called externally, clear some global variables + // fixes apexcharts.js#1488 + + w.globals.selection = undefined; + + if (options.series) { + this.series.resetSeries(false, true, false); + + if (options.series.length && options.series[0].data) { + options.series = options.series.map(function (s, i) { + return _this3.updateHelpers._extendSeries(s, i); + }); + } // user updated the series via updateOptions() function. + // Hence, we need to reset axis min/max to avoid zooming issues + + + this.updateHelpers.revertDefaultAxisMinMax(); + } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max + + + if (options.xaxis) { + options = this.updateHelpers.forceXAxisUpdate(options); + } + + if (options.yaxis) { + options = this.updateHelpers.forceYAxisUpdate(options); + } + + if (w.globals.collapsedSeriesIndices.length > 0) { + this.series.clearPreviousPaths(); + } + /* update theme mode#459 */ + + + if (options.theme) { + options = this.theme.updateThemeOptions(options); + } + + return this.updateHelpers._updateOptions(options, redraw, animate, updateSyncedCharts, overwriteInitialConfig); + } + /** + * Allows users to update Series after the chart has rendered. + * + * @param {array} series - New series which will override the existing + */ + + }, { + key: "updateSeries", + value: function updateSeries() { + var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + this.series.resetSeries(false); + this.updateHelpers.revertDefaultAxisMinMax(); + return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries); + } + /** + * Allows users to append a new series after the chart has rendered. + * + * @param {array} newSerie - New serie which will be appended to the existing series + */ + + }, { + key: "appendSeries", + value: function appendSeries(newSerie) { + var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var newSeries = this.w.config.series.slice(); + newSeries.push(newSerie); + this.series.resetSeries(false); + this.updateHelpers.revertDefaultAxisMinMax(); + return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries); + } + /** + * Allows users to append Data to series. + * + * @param {array} newData - New data in the same format as series + */ + + }, { + key: "appendData", + value: function appendData(newData) { + var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var me = this; + me.w.globals.dataChanged = true; + me.series.getPreviousPaths(); + var newSeries = me.w.config.series.slice(); + + for (var i = 0; i < newSeries.length; i++) { + if (newData[i] !== null && typeof newData[i] !== 'undefined') { + for (var j = 0; j < newData[i].data.length; j++) { + newSeries[i].data.push(newData[i].data[j]); + } + } + } + + me.w.config.series = newSeries; + + if (overwriteInitialSeries) { + me.w.globals.initialSeries = Utils$1.clone(me.w.config.series); + } + + return this.update(); + } + }, { + key: "update", + value: function update(options) { + var _this4 = this; + + return new Promise(function (resolve, reject) { + new Destroy(_this4.ctx).clear({ + isUpdating: true + }); + + var graphData = _this4.create(_this4.w.config.series, options); + + if (!graphData) return resolve(_this4); + + _this4.mount(graphData).then(function () { + if (typeof _this4.w.config.chart.events.updated === 'function') { + _this4.w.config.chart.events.updated(_this4, _this4.w); + } + + _this4.events.fireEvent('updated', [_this4, _this4.w]); + + _this4.w.globals.isDirty = true; + resolve(_this4); + }).catch(function (e) { + reject(e); + }); + }); + } + /** + * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan. + */ + + }, { + key: "getSyncedCharts", + value: function getSyncedCharts() { + var chartGroups = this.getGroupedCharts(); + var allCharts = [this]; + + if (chartGroups.length) { + allCharts = []; + chartGroups.forEach(function (ch) { + allCharts.push(ch); + }); + } + + return allCharts; + } + /** + * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering) + */ + + }, { + key: "getGroupedCharts", + value: function getGroupedCharts() { + var _this5 = this; + + return Apex._chartInstances.filter(function (ch) { + if (ch.group) { + return true; + } + }).map(function (ch) { + return _this5.w.config.chart.group === ch.group ? ch.chart : _this5; + }); + } + }, { + key: "toggleSeries", + value: function toggleSeries(seriesName) { + return this.series.toggleSeries(seriesName); + } + }, { + key: "highlightSeriesOnLegendHover", + value: function highlightSeriesOnLegendHover(e, targetElement) { + return this.series.toggleSeriesOnHover(e, targetElement); + } + }, { + key: "showSeries", + value: function showSeries(seriesName) { + this.series.showSeries(seriesName); + } + }, { + key: "hideSeries", + value: function hideSeries(seriesName) { + this.series.hideSeries(seriesName); + } + }, { + key: "resetSeries", + value: function resetSeries() { + var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var shouldResetZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + this.series.resetSeries(shouldUpdateChart, shouldResetZoom); + } // Public method to add event listener on chart context + + }, { + key: "addEventListener", + value: function addEventListener(name, handler) { + this.events.addEventListener(name, handler); + } // Public method to remove event listener on chart context + + }, { + key: "removeEventListener", + value: function removeEventListener(name, handler) { + this.events.removeEventListener(name, handler); + } + }, { + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "addPointAnnotation", + value: function addPointAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addPointAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "clearAnnotations", + value: function clearAnnotations() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.clearAnnotations(me); + } + }, { + key: "removeAnnotation", + value: function removeAnnotation(id) { + var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.removeAnnotation(me, id); + } + }, { + key: "getChartArea", + value: function getChartArea() { + var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner'); + return el; + } + }, { + key: "getSeriesTotalXRange", + value: function getSeriesTotalXRange(minX, maxX) { + return this.coreUtils.getSeriesTotalsXRange(minX, maxX); + } + }, { + key: "getHighestValueInSeries", + value: function getHighestValueInSeries() { + var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var range = new Range(this.ctx); + return range.getMinYMaxY(seriesIndex).highestY; + } + }, { + key: "getLowestValueInSeries", + value: function getLowestValueInSeries() { + var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var range = new Range(this.ctx); + return range.getMinYMaxY(seriesIndex).lowestY; + } + }, { + key: "getSeriesTotal", + value: function getSeriesTotal() { + return this.w.globals.seriesTotals; + } + }, { + key: "toggleDataPointSelection", + value: function toggleDataPointSelection(seriesIndex, dataPointIndex) { + return this.updateHelpers.toggleDataPointSelection(seriesIndex, dataPointIndex); + } + }, { + key: "zoomX", + value: function zoomX(min, max) { + this.ctx.toolbar.zoomUpdateOptions(min, max); + } + }, { + key: "setLocale", + value: function setLocale(localeName) { + this.localization.setCurrentLocaleValues(localeName); + } + }, { + key: "dataURI", + value: function dataURI(options) { + var exp = new Exports(this.ctx); + return exp.dataURI(options); + } + }, { + key: "exportToCSV", + value: function exportToCSV() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var exp = new Exports(this.ctx); + return exp.exportToCSV(options); + } + }, { + key: "paper", + value: function paper() { + return this.w.globals.dom.Paper; + } + }, { + key: "_parentResizeCallback", + value: function _parentResizeCallback() { + if (this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize) { + this._windowResize(); + } + } + /** + * Handle window resize and re-draw the whole chart. + */ + + }, { + key: "_windowResize", + value: function _windowResize() { + var _this6 = this; + + clearTimeout(this.w.globals.resizeTimer); + this.w.globals.resizeTimer = window.setTimeout(function () { + _this6.w.globals.resized = true; + _this6.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay). + + _this6.ctx.update(); + }, 150); + } + }, { + key: "_windowResizeHandler", + value: function _windowResizeHandler() { + var redraw = this.w.config.chart.redrawOnWindowResize; + + if (typeof redraw === 'function') { + redraw = redraw(); + } + + redraw && this._windowResize(); + } + }], [{ + key: "getChartByID", + value: function getChartByID(id) { + var chartId = Utils$1.escapeString(id); + + var c = Apex._chartInstances.filter(function (ch) { + return ch.id === chartId; + })[0]; + + return c && c.chart; + } + /** + * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute + */ + + }, { + key: "initOnLoad", + value: function initOnLoad() { + var els = document.querySelectorAll('[data-apexcharts]'); + + for (var i = 0; i < els.length; i++) { + var el = els[i]; + var options = JSON.parse(els[i].getAttribute('data-options')); + var apexChart = new ApexCharts(el, options); + apexChart.render(); + } + } + /** + * This static method allows users to call chart methods without necessarily from the + * instance of the chart in case user has assigned chartID to the targeted chart. + * The chartID is used for mapping the instance stored in Apex._chartInstances global variable + * + * This is helpful in cases when you don't have reference of the chart instance + * easily and need to call the method from anywhere. + * For eg, in React/Vue applications when you have many parent/child components, + * and need easy reference to other charts for performing dynamic operations + * + * @param {string} chartID - The unique identifier which will be used to call methods + * on that chart instance + * @param {function} fn - The method name to call + * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order. + */ + + }, { + key: "exec", + value: function exec(chartID, fn) { + var chart = this.getChartByID(chartID); + if (!chart) return; // turn on the global exec flag to indicate this method was called + + chart.w.globals.isExecCalled = true; + var ret = null; + + if (chart.publicMethods.indexOf(fn) !== -1) { + for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + opts[_key - 2] = arguments[_key]; + } + + ret = chart[fn].apply(chart, opts); + } + + return ret; + } + }, { + key: "merge", + value: function merge(target, source) { + return Utils$1.extend(target, source); + } + }]); + + return ApexCharts; + }(); + + return ApexCharts$1; + +})); diff --git a/public/libs/bootstrap/dist/js/bootstrap.bundle.js b/public/libs/bootstrap/dist/js/bootstrap.bundle.js new file mode 100644 index 0000000..111a2ca --- /dev/null +++ b/public/libs/bootstrap/dist/js/bootstrap.bundle.js @@ -0,0 +1,6314 @@ +/*! + * Bootstrap v5.3.1 (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 (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory()); +})(this, (function () { 'use strict'; + + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + /** + * Constants + */ + + const elementMap = new Map(); + const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); + } + const instanceMap = elementMap.get(element); + + // make it clear we only want one instance per element + // can be removed later when multiple key/instances are fine to be used + if (!instanceMap.has(key) && instanceMap.size !== 0) { + // eslint-disable-next-line no-console + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); + + // free up element references if there are no instances left for an element + if (instanceMap.size === 0) { + elementMap.delete(element); + } + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const MAX_UID = 1000000; + const MILLISECONDS_MULTIPLIER = 1000; + const TRANSITION_END = 'transitionend'; + + /** + * Properly escape IDs selectors to handle weird IDs + * @param {string} selector + * @returns {string} + */ + const parseSelector = selector => { + if (selector && window.CSS && window.CSS.escape) { + // document.querySelector needs escaping to handle IDs (html5+) containing for instance / + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); + } + return selector; + }; + + // Shout-out Angus Croll (https://goo.gl/pxwQGp) + const toType = object => { + if (object === null || object === undefined) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + + /** + * Public Util API + */ + + const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + const getTransitionDurationFromElement = element => { + if (!element) { + return 0; + } + + // Get transition-duration of the element + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + + // Return 0 if element or transition duration is not found + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } + + // If multiple durations are defined, take the first + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + const isElement$1 = object => { + if (!object || typeof object !== 'object') { + return false; + } + if (typeof object.jquery !== 'undefined') { + object = object[0]; + } + return typeof object.nodeType !== 'undefined'; + }; + const getElement = object => { + // it's a jQuery object or a node element + if (isElement$1(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === 'string' && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + const isVisible = element => { + if (!isElement$1(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + // Handle `details` element as its content may falsie appear visible when it is closed + const closedDetails = element.closest('details:not([open])'); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest('summary'); + if (summary && summary.parentNode !== closedDetails) { + return false; + } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains('disabled')) { + return true; + } + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } + + // Can find the shadow root otherwise it'll return the document + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } + + // when we don't find a shadow root + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + const noop = () => {}; + + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + const reflow = element => { + element.offsetHeight; // eslint-disable-line no-unused-expressions + }; + + const getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return window.jQuery; + } + return null; + }; + const DOMContentLoadedCallbacks = []; + const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + // add listener on the first call when the document is in loading state + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + for (const callback of DOMContentLoadedCallbacks) { + callback(); + } + }); + } + DOMContentLoadedCallbacks.push(callback); + } else { + callback(); + } + }; + const isRTL = () => document.documentElement.dir === 'rtl'; + const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + /* istanbul ignore if */ + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; + }; + const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + /** + * Return the previous/next element of a list. + * + * @param {array} list The list of elements + * @param activeElement The active element + * @param shouldGetNext Choose to get next or previous element + * @param isCycleAllowed + * @return {Element|elem} The proper element + */ + const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + const listLength = list.length; + let index = list.indexOf(activeElement); + + // if the element does not exist in the list return an element + // depending on the direction and if cycle is allowed + if (index === -1) { + return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + } + index += shouldGetNext ? 1 : -1; + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + return list[Math.max(0, Math.min(index, listLength - 1))]; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/event-handler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const namespaceRegex = /[^.]*(?=\..*)\.|.*/; + const stripNameRegex = /\..*/; + const stripUidRegex = /::\d+$/; + const eventRegistry = {}; // Events storage + let uidEvent = 1; + const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); + + /** + * Private methods + */ + + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; + } + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; + } + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { + delegateTarget: element + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; + } + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { + delegateTarget: target + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; + } + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); + } + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === 'string'; + // TODO: tooltip passes `false` instead of selector, so we need to check + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; + } + return [isDelegated, callable, typeEvent]; + } + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + + // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position + // this prevents the handler from being dispatched the same way as mouseover or mouseout does + if (originalTypeEvent in customEvents) { + const wrapFunction = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); + } + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; + } + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + } + function getTypeEvent(event) { + // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; + } + const EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith('.'); + if (typeof callable !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { + bubbles, + cancelable: true + }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; + } + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (_unused) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + function normalizeData(value) { + if (value === 'true') { + return true; + } + if (value === 'false') { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === '' || value === 'null') { + return null; + } + if (typeof value !== 'string') { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (_unused) { + return value; + } + } + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); + } + const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/config.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Class definition + */ + + class Config { + // Getters + 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(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse + + return { + ...this.constructor.Default, + ...(typeof jsonConfig === 'object' ? jsonConfig : {}), + ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}), + ...(typeof config === 'object' ? config : {}) + }; + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement$1(value) ? 'element' : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + } + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap base-component.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const VERSION = '5.3.1'; + + /** + * Class definition + */ + + class BaseComponent extends Config { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + Data.set(this._element, this.constructor.DATA_KEY, this); + } + + // Public + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + + // Static + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + if (!selector || selector === '#') { + let hrefAttribute = element.getAttribute('href'); + + // The only valid content that could double as a selector are IDs or classes, + // so everything starting with `#` or `.`. If a "real" URL is used as the selector, + // `document.querySelector` will rightfully complain it is invalid. + // See https://github.com/twbs/bootstrap/issues/32273 + if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + return null; + } + + // Just in case some CMS puts out a full URL with the anchor appended + if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { + hrefAttribute = `#${hrefAttribute.split('#')[1]}`; + } + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; + } + return parseSelector(selector); + }; + const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); + + // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$f = 'alert'; + const DATA_KEY$a = 'bs.alert'; + const EVENT_KEY$b = `.${DATA_KEY$a}`; + const EVENT_CLOSE = `close${EVENT_KEY$b}`; + const EVENT_CLOSED = `closed${EVENT_KEY$b}`; + const CLASS_NAME_FADE$5 = 'fade'; + const CLASS_NAME_SHOW$8 = 'show'; + + /** + * Class definition + */ + + class Alert extends BaseComponent { + // Getters + static get NAME() { + return NAME$f; + } + + // Public + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + if (closeEvent.defaultPrevented) { + return; + } + this._element.classList.remove(CLASS_NAME_SHOW$8); + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } + + // Private + _destroyElement() { + this._element.remove(); + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } + } + + /** + * Data API implementation + */ + + enableDismissTrigger(Alert, 'close'); + + /** + * jQuery + */ + + defineJQueryPlugin(Alert); + + /** + * -------------------------------------------------------------------------- + * Bootstrap button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$e = 'button'; + const DATA_KEY$9 = 'bs.button'; + const EVENT_KEY$a = `.${DATA_KEY$9}`; + const DATA_API_KEY$6 = '.data-api'; + const CLASS_NAME_ACTIVE$3 = 'active'; + const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; + const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; + + /** + * Class definition + */ + + class Button extends BaseComponent { + // Getters + static get NAME() { + return NAME$e; + } + + // Public + toggle() { + // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + if (config === 'toggle') { + data[config](); + } + }); + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); + }); + + /** + * jQuery + */ + + defineJQueryPlugin(Button); + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/swipe.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$d = 'swipe'; + const EVENT_KEY$9 = '.bs.swipe'; + const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; + const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; + const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; + const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; + const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; + const POINTER_TYPE_TOUCH = 'touch'; + const POINTER_TYPE_PEN = 'pen'; + const CLASS_NAME_POINTER_EVENT = 'pointer-event'; + const SWIPE_THRESHOLD = 40; + const Default$c = { + endCallback: null, + leftCallback: null, + rightCallback: null + }; + const DefaultType$c = { + endCallback: '(function|null)', + leftCallback: '(function|null)', + rightCallback: '(function|null)' + }; + + /** + * Class definition + */ + + class Swipe extends Config { + constructor(element, config) { + super(); + this._element = element; + if (!element || !Swipe.isSupported()) { + return; + } + this._config = this._getConfig(config); + this._deltaX = 0; + this._supportPointerEvents = Boolean(window.PointerEvent); + this._initEvents(); + } + + // Getters + static get Default() { + return Default$c; + } + static get DefaultType() { + return DefaultType$c; + } + static get NAME() { + return NAME$d; + } + + // Public + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); + } + + // Private + _start(event) { + if (!this._supportPointerEvents) { + this._deltaX = event.touches[0].clientX; + return; + } + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX; + } + } + _end(event) { + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX - this._deltaX; + } + this._handleSwipe(); + execute(this._config.endCallback); + } + _move(event) { + this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; + } + _handleSwipe() { + const absDeltaX = Math.abs(this._deltaX); + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + const direction = absDeltaX / this._deltaX; + this._deltaX = 0; + if (!direction) { + return; + } + execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); + } + _initEvents() { + if (this._supportPointerEvents) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); + } + } + _eventIsPointerPenTouch(event) { + return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + } + + // Static + static isSupported() { + return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$c = 'carousel'; + const DATA_KEY$8 = 'bs.carousel'; + const EVENT_KEY$8 = `.${DATA_KEY$8}`; + const DATA_API_KEY$5 = '.data-api'; + const ARROW_LEFT_KEY$1 = 'ArrowLeft'; + const ARROW_RIGHT_KEY$1 = 'ArrowRight'; + const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + const ORDER_NEXT = 'next'; + const ORDER_PREV = 'prev'; + const DIRECTION_LEFT = 'left'; + const DIRECTION_RIGHT = 'right'; + const EVENT_SLIDE = `slide${EVENT_KEY$8}`; + const EVENT_SLID = `slid${EVENT_KEY$8}`; + const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; + const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; + const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; + const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; + const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; + const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; + const CLASS_NAME_CAROUSEL = 'carousel'; + const CLASS_NAME_ACTIVE$2 = 'active'; + const CLASS_NAME_SLIDE = 'slide'; + const CLASS_NAME_END = 'carousel-item-end'; + const CLASS_NAME_START = 'carousel-item-start'; + const CLASS_NAME_NEXT = 'carousel-item-next'; + const CLASS_NAME_PREV = 'carousel-item-prev'; + const SELECTOR_ACTIVE = '.active'; + const SELECTOR_ITEM = '.carousel-item'; + const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; + const SELECTOR_ITEM_IMG = '.carousel-item img'; + const SELECTOR_INDICATORS = '.carousel-indicators'; + const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; + const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; + const KEY_TO_DIRECTION = { + [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, + [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT + }; + const Default$b = { + interval: 5000, + keyboard: true, + pause: 'hover', + ride: false, + touch: true, + wrap: true + }; + const DefaultType$b = { + interval: '(number|boolean)', + // TODO:v6 remove boolean support + keyboard: 'boolean', + pause: '(string|boolean)', + ride: '(boolean|string)', + touch: 'boolean', + wrap: 'boolean' + }; + + /** + * Class definition + */ + + class Carousel extends BaseComponent { + constructor(element, config) { + super(element, config); + this._interval = null; + this._activeElement = null; + this._isSliding = false; + this.touchTimeout = null; + this._swipeHelper = null; + this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); + this._addEventListeners(); + if (this._config.ride === CLASS_NAME_CAROUSEL) { + this.cycle(); + } + } + + // Getters + static get Default() { + return Default$b; + } + static get DefaultType() { + return DefaultType$b; + } + static get NAME() { + return NAME$c; + } + + // Public + next() { + this._slide(ORDER_NEXT); + } + nextWhenVisible() { + // FIXME TODO use `document.visibilityState` + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && isVisible(this._element)) { + this.next(); + } + } + prev() { + this._slide(ORDER_PREV); + } + pause() { + if (this._isSliding) { + triggerTransitionEnd(this._element); + } + this._clearInterval(); + } + cycle() { + this._clearInterval(); + this._updateInterval(); + this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); + } + _maybeEnableCycle() { + if (!this._config.ride) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); + return; + } + this.cycle(); + } + to(index) { + const items = this._getItems(); + if (index > items.length - 1 || index < 0) { + return; + } + if (this._isSliding) { + EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); + return; + } + const activeIndex = this._getItemIndex(this._getActive()); + if (activeIndex === index) { + return; + } + const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; + this._slide(order, items[index]); + } + dispose() { + if (this._swipeHelper) { + this._swipeHelper.dispose(); + } + super.dispose(); + } + + // Private + _configAfterMerge(config) { + config.defaultInterval = config.interval; + return config; + } + _addEventListeners() { + if (this._config.keyboard) { + EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); + } + if (this._config.pause === 'hover') { + EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); + EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); + } + if (this._config.touch && Swipe.isSupported()) { + this._addTouchEventListeners(); + } + } + _addTouchEventListeners() { + for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { + EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); + } + const endCallBack = () => { + if (this._config.pause !== 'hover') { + return; + } + + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + + this.pause(); + if (this.touchTimeout) { + clearTimeout(this.touchTimeout); + } + this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); + }; + const swipeConfig = { + leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), + rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), + endCallback: endCallBack + }; + this._swipeHelper = new Swipe(this._element, swipeConfig); + } + _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + const direction = KEY_TO_DIRECTION[event.key]; + if (direction) { + event.preventDefault(); + this._slide(this._directionToOrder(direction)); + } + } + _getItemIndex(element) { + return this._getItems().indexOf(element); + } + _setActiveIndicatorElement(index) { + if (!this._indicatorsElement) { + return; + } + const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); + if (newActiveIndicator) { + newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); + newActiveIndicator.setAttribute('aria-current', 'true'); + } + } + _updateInterval() { + const element = this._activeElement || this._getActive(); + if (!element) { + return; + } + const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); + this._config.interval = elementInterval || this._config.defaultInterval; + } + _slide(order, element = null) { + if (this._isSliding) { + return; + } + const activeElement = this._getActive(); + const isNext = order === ORDER_NEXT; + const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); + if (nextElement === activeElement) { + return; + } + const nextElementIndex = this._getItemIndex(nextElement); + const triggerEvent = eventName => { + return EventHandler.trigger(this._element, eventName, { + relatedTarget: nextElement, + direction: this._orderToDirection(order), + from: this._getItemIndex(activeElement), + to: nextElementIndex + }); + }; + const slideEvent = triggerEvent(EVENT_SLIDE); + if (slideEvent.defaultPrevented) { + return; + } + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + // TODO: change tests that use empty divs to avoid this check + return; + } + const isCycling = Boolean(this._interval); + this.pause(); + this._isSliding = true; + this._setActiveIndicatorElement(nextElementIndex); + this._activeElement = nextElement; + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + const completeCallBack = () => { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + this._isSliding = false; + triggerEvent(EVENT_SLID); + }; + this._queueCallback(completeCallBack, activeElement, this._isAnimated()); + if (isCycling) { + this.cycle(); + } + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_SLIDE); + } + _getActive() { + return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + } + _getItems() { + return SelectorEngine.find(SELECTOR_ITEM, this._element); + } + _clearInterval() { + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + } + _directionToOrder(direction) { + if (isRTL()) { + return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; + } + return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; + } + _orderToDirection(order) { + if (isRTL()) { + return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Carousel.getOrCreateInstance(this, config); + if (typeof config === 'number') { + data.to(config); + return; + } + if (typeof config === 'string') { + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; + } + event.preventDefault(); + const carousel = Carousel.getOrCreateInstance(target); + const slideIndex = this.getAttribute('data-bs-slide-to'); + if (slideIndex) { + carousel.to(slideIndex); + carousel._maybeEnableCycle(); + return; + } + if (Manipulator.getDataAttribute(this, 'slide') === 'next') { + carousel.next(); + carousel._maybeEnableCycle(); + return; + } + carousel.prev(); + carousel._maybeEnableCycle(); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { + const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); + for (const carousel of carousels) { + Carousel.getOrCreateInstance(carousel); + } + }); + + /** + * jQuery + */ + + defineJQueryPlugin(Carousel); + + /** + * -------------------------------------------------------------------------- + * Bootstrap collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$b = 'collapse'; + const DATA_KEY$7 = 'bs.collapse'; + const EVENT_KEY$7 = `.${DATA_KEY$7}`; + const DATA_API_KEY$4 = '.data-api'; + const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; + const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; + const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; + const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; + const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; + const CLASS_NAME_SHOW$7 = 'show'; + const CLASS_NAME_COLLAPSE = 'collapse'; + const CLASS_NAME_COLLAPSING = 'collapsing'; + const CLASS_NAME_COLLAPSED = 'collapsed'; + const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; + const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; + const WIDTH = 'width'; + const HEIGHT = 'height'; + const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; + const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; + const Default$a = { + parent: null, + toggle: true + }; + const DefaultType$a = { + parent: '(null|element)', + toggle: 'boolean' + }; + + /** + * Class definition + */ + + class Collapse extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isTransitioning = false; + this._triggerArray = []; + const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); + for (const elem of toggleList) { + const selector = SelectorEngine.getSelectorFromElement(elem); + const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); + if (selector !== null && filterElement.length) { + this._triggerArray.push(elem); + } + } + this._initializeChildren(); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); + } + if (this._config.toggle) { + this.toggle(); + } + } + + // Getters + static get Default() { + return Default$a; + } + static get DefaultType() { + return DefaultType$a; + } + static get NAME() { + return NAME$b; + } + + // Public + toggle() { + if (this._isShown()) { + this.hide(); + } else { + this.show(); + } + } + show() { + if (this._isTransitioning || this._isShown()) { + return; + } + let activeChildren = []; + + // find active children + if (this._config.parent) { + activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { + toggle: false + })); + } + if (activeChildren.length && activeChildren[0]._isTransitioning) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); + if (startEvent.defaultPrevented) { + return; + } + for (const activeInstance of activeChildren) { + activeInstance.hide(); + } + const dimension = this._getDimension(); + this._element.classList.remove(CLASS_NAME_COLLAPSE); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.style[dimension] = 0; + this._addAriaAndCollapsedClass(this._triggerArray, true); + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + this._element.style[dimension] = ''; + EventHandler.trigger(this._element, EVENT_SHOWN$6); + }; + const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + const scrollSize = `scroll${capitalizedDimension}`; + this._queueCallback(complete, this._element, true); + this._element.style[dimension] = `${this._element[scrollSize]}px`; + } + hide() { + if (this._isTransitioning || !this._isShown()) { + return; + } + const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); + if (startEvent.defaultPrevented) { + return; + } + const dimension = this._getDimension(); + this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; + reflow(this._element); + this._element.classList.add(CLASS_NAME_COLLAPSING); + this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + for (const trigger of this._triggerArray) { + const element = SelectorEngine.getElementFromSelector(trigger); + if (element && !this._isShown(element)) { + this._addAriaAndCollapsedClass([trigger], false); + } + } + this._isTransitioning = true; + const complete = () => { + this._isTransitioning = false; + this._element.classList.remove(CLASS_NAME_COLLAPSING); + this._element.classList.add(CLASS_NAME_COLLAPSE); + EventHandler.trigger(this._element, EVENT_HIDDEN$6); + }; + this._element.style[dimension] = ''; + this._queueCallback(complete, this._element, true); + } + _isShown(element = this._element) { + return element.classList.contains(CLASS_NAME_SHOW$7); + } + + // Private + _configAfterMerge(config) { + config.toggle = Boolean(config.toggle); // Coerce string values + config.parent = getElement(config.parent); + return config; + } + _getDimension() { + return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; + } + _initializeChildren() { + if (!this._config.parent) { + return; + } + const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); + for (const element of children) { + const selected = SelectorEngine.getElementFromSelector(element); + if (selected) { + this._addAriaAndCollapsedClass([element], this._isShown(selected)); + } + } + } + _getFirstLevelChildren(selector) { + const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + // remove children if greater depth + return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); + } + _addAriaAndCollapsedClass(triggerArray, isOpen) { + if (!triggerArray.length) { + return; + } + for (const element of triggerArray) { + element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); + element.setAttribute('aria-expanded', isOpen); + } + } + + // Static + static jQueryInterface(config) { + const _config = {}; + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } + return this.each(function () { + const data = Collapse.getOrCreateInstance(this, _config); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + } + }); + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { + event.preventDefault(); + } + for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { + Collapse.getOrCreateInstance(element, { + toggle: false + }).toggle(); + } + }); + + /** + * jQuery + */ + + defineJQueryPlugin(Collapse); + + var top = 'top'; + var bottom = 'bottom'; + var right = 'right'; + var left = 'left'; + var auto = 'auto'; + var basePlacements = [top, bottom, right, left]; + var start = 'start'; + var end = 'end'; + var clippingParents = 'clippingParents'; + var viewport = 'viewport'; + var popper = 'popper'; + var reference = 'reference'; + var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); // modifiers that need to read the DOM + + var beforeRead = 'beforeRead'; + var read = 'read'; + var afterRead = 'afterRead'; // pure-logic modifiers + + var beforeMain = 'beforeMain'; + var main = 'main'; + var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + + var beforeWrite = 'beforeWrite'; + var write = 'write'; + var afterWrite = 'afterWrite'; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + + function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; + } + + function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; + } + + function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; + } + + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } + + function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; + } + + // and applies them to the HTMLElements such as popper and arrow + + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); + } + + function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } // eslint-disable-next-line import/no-unused-modules + + + const applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] + }; + + function getBasePlacement(placement) { + return placement.split('-')[0]; + } + + var max = Math.max; + var min = Math.min; + var round = Math.round; + + function getUAString() { + var uaData = navigator.userAgentData; + + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + + return navigator.userAgent; + } + + function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); + } + + function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } + + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; + } + + var _ref = isElement(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; + } + + // means it doesn't take into account transforms. + + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; + } + + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; + } + + function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); + } + + function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; + } + + function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; + } + + function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); + } + + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle$1(element).position === 'fixed') { + return null; + } + + return element.offsetParent; + } // `.offsetParent` reports `null` for fixed elements, while absolute elements + // return the containing block + + + function getContainingBlock(element) { + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); + + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle$1(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = getParentNode(element); + + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; + } // Gets the closest ancestor positioned element. Handles some edge cases, + // such as table ancestors and cross browser bugs. + + + function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; + } + + function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; + } + + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); + } + function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; + } + + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } + + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } + + function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); + } + + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; + + function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); + } + + function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (!contains(state.elements.popper, arrowElement)) { + return; + } + + state.elements.arrow = arrowElement; + } // eslint-disable-next-line import/no-unused-modules + + + const arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + + function getVariation(placement) { + return placement.split('-')[1]; + } + + var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' + }; // Round the offsets to the nearest suitable subpixel based on the DPR. + // Zooming can change the DPR, but it seems to report a value that will + // cleanly divide the values into the appropriate subpixels. + + function roundOffsetsByDPR(_ref, win) { + var x = _ref.x, + y = _ref.y; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + + function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }, getWindow(popper)) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + } + + function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} + }; + + var passive = { + passive: true + }; + + function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; + } // eslint-disable-next-line import/no-unused-modules + + + const eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} + }; + + var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); + } + + var hash = { + start: 'end', + end: 'start' + }; + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); + } + + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; + } + + function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } + + function getViewportRect(element, strategy) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; + } + + // of the `` and `` rect bounds if horizontally scrollable + + function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; + } + + function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); + } + + function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); + } + + /* + given a DOM element, return the list of all scroll parents, up the list of ancesors + until we get to the top window object. This list is what we attach scroll listeners + to, because if any of these parent elements scroll, we'll need to re-calculate the + reference element's position. + */ + + function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); + } + + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); + } + + function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + + function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } // A "clipping parent" is an overflowable container with the characteristic of + // clipping (or hiding) overflowing elements with a position different from + // `initial` + + + function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); + } // Gets the maximum area that the element is visible in due to any number of + // clipping parents + + + function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; + } + + function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; + } + + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; + } + + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); + } + + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } + + function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } // eslint-disable-next-line import/no-unused-modules + + + const flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } + }; + + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; + } + + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); + } + + function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); + } // eslint-disable-next-line import/no-unused-modules + + + const hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide + }; + + function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } + + function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset + }; + + function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + const popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} + }; + + function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; + } + + function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _offsetModifierState$2; + + var _mainSide = mainAxis === 'x' ? top : left; + + var _altSide = mainAxis === 'x' ? bottom : right; + + var _offset = popperOffsets[altAxis]; + + var _len = altAxis === 'y' ? 'height' : 'width'; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + const preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] + }; + + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } + + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } + } + + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } // Returns the composite rect of an element relative to its offsetParent. + // Composite means it takes into account transforms as well as layout. + + + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; + } + + function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; + } + + function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); + } + + function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; + } + + function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); + } + + var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' + }; + + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); + } + + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref) { + var name = _ref.name, + _ref$options = _ref.options, + options = _ref$options === void 0 ? {} : _ref$options, + effect = _ref.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; + } + var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers + }); // eslint-disable-next-line import/no-unused-modules + + const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + afterMain, + afterRead, + afterWrite, + applyStyles: applyStyles$1, + arrow: arrow$1, + auto, + basePlacements, + beforeMain, + beforeRead, + beforeWrite, + bottom, + clippingParents, + computeStyles: computeStyles$1, + createPopper, + createPopperBase: createPopper$2, + createPopperLite: createPopper$1, + detectOverflow, + end, + eventListeners, + flip: flip$1, + hide: hide$1, + left, + main, + modifierPhases, + offset: offset$1, + placements, + popper, + popperGenerator, + popperOffsets: popperOffsets$1, + preventOverflow: preventOverflow$1, + read, + reference, + right, + start, + top, + variationPlacements, + viewport, + write + }, Symbol.toStringTag, { value: 'Module' })); + + /** + * -------------------------------------------------------------------------- + * Bootstrap dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$a = 'dropdown'; + const DATA_KEY$6 = 'bs.dropdown'; + const EVENT_KEY$6 = `.${DATA_KEY$6}`; + const DATA_API_KEY$3 = '.data-api'; + const ESCAPE_KEY$2 = 'Escape'; + const TAB_KEY$1 = 'Tab'; + const ARROW_UP_KEY$1 = 'ArrowUp'; + const ARROW_DOWN_KEY$1 = 'ArrowDown'; + const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button + + const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; + const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; + const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; + const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; + const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; + const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; + const CLASS_NAME_SHOW$6 = 'show'; + const CLASS_NAME_DROPUP = 'dropup'; + const CLASS_NAME_DROPEND = 'dropend'; + const CLASS_NAME_DROPSTART = 'dropstart'; + const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; + const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; + const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; + const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; + const SELECTOR_MENU = '.dropdown-menu'; + const SELECTOR_NAVBAR = '.navbar'; + const SELECTOR_NAVBAR_NAV = '.navbar-nav'; + const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; + const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; + const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; + const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; + const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; + const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; + const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; + const PLACEMENT_TOPCENTER = 'top'; + const PLACEMENT_BOTTOMCENTER = 'bottom'; + const Default$9 = { + autoClose: true, + boundary: 'clippingParents', + display: 'dynamic', + offset: [0, 2], + popperConfig: null, + reference: 'toggle' + }; + const DefaultType$9 = { + autoClose: '(boolean|string)', + boundary: '(string|element)', + display: 'string', + offset: '(array|string|function)', + popperConfig: '(null|object|function)', + reference: '(string|element|object)' + }; + + /** + * Class definition + */ + + class Dropdown extends BaseComponent { + constructor(element, config) { + super(element, config); + this._popper = null; + this._parent = this._element.parentNode; // dropdown wrapper + // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ + this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); + this._inNavbar = this._detectNavbar(); + } + + // Getters + static get Default() { + return Default$9; + } + static get DefaultType() { + return DefaultType$9; + } + static get NAME() { + return NAME$a; + } + + // Public + toggle() { + return this._isShown() ? this.hide() : this.show(); + } + show() { + if (isDisabled(this._element) || this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); + if (showEvent.defaultPrevented) { + return; + } + this._createPopper(); + + // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + this._element.focus(); + this._element.setAttribute('aria-expanded', true); + this._menu.classList.add(CLASS_NAME_SHOW$6); + this._element.classList.add(CLASS_NAME_SHOW$6); + EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); + } + hide() { + if (isDisabled(this._element) || !this._isShown()) { + return; + } + const relatedTarget = { + relatedTarget: this._element + }; + this._completeHide(relatedTarget); + } + dispose() { + if (this._popper) { + this._popper.destroy(); + } + super.dispose(); + } + update() { + this._inNavbar = this._detectNavbar(); + if (this._popper) { + this._popper.update(); + } + } + + // Private + _completeHide(relatedTarget) { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); + if (hideEvent.defaultPrevented) { + return; + } + + // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + if (this._popper) { + this._popper.destroy(); + } + this._menu.classList.remove(CLASS_NAME_SHOW$6); + this._element.classList.remove(CLASS_NAME_SHOW$6); + this._element.setAttribute('aria-expanded', 'false'); + Manipulator.removeDataAttribute(this._menu, 'popper'); + EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); + } + _getConfig(config) { + config = super._getConfig(config); + if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { + // Popper virtual elements require a getBoundingClientRect method + throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); + } + return config; + } + _createPopper() { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); + } + let referenceElement = this._element; + if (this._config.reference === 'parent') { + referenceElement = this._parent; + } else if (isElement$1(this._config.reference)) { + referenceElement = getElement(this._config.reference); + } else if (typeof this._config.reference === 'object') { + referenceElement = this._config.reference; + } + const popperConfig = this._getPopperConfig(); + this._popper = createPopper(referenceElement, this._menu, popperConfig); + } + _isShown() { + return this._menu.classList.contains(CLASS_NAME_SHOW$6); + } + _getPlacement() { + const parentDropdown = this._parent; + if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { + return PLACEMENT_RIGHT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { + return PLACEMENT_LEFT; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { + return PLACEMENT_TOPCENTER; + } + if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { + return PLACEMENT_BOTTOMCENTER; + } + + // We need to trim the value because custom properties can also include spaces + const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; + if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { + return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; + } + return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; + } + _detectNavbar() { + return this._element.closest(SELECTOR_NAVBAR) !== null; + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _getPopperConfig() { + const defaultBsPopperConfig = { + placement: this._getPlacement(), + modifiers: [{ + name: 'preventOverflow', + options: { + boundary: this._config.boundary + } + }, { + name: 'offset', + options: { + offset: this._getOffset() + } + }] + }; + + // Disable Popper if we have a static display or Dropdown is in Navbar + if (this._inNavbar || this._config.display === 'static') { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove + defaultBsPopperConfig.modifiers = [{ + name: 'applyStyles', + enabled: false + }]; + } + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _selectMenuItem({ + key, + target + }) { + const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); + if (!items.length) { + return; + } + + // if target isn't included in items (e.g. when expanding the dropdown) + // allow cycling to get the last item in case key equals ARROW_UP_KEY + getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Dropdown.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + static clearMenus(event) { + if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { + return; + } + const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); + for (const toggle of openToggles) { + const context = Dropdown.getInstance(toggle); + if (!context || context._config.autoClose === false) { + continue; + } + const composedPath = event.composedPath(); + const isMenuTarget = composedPath.includes(context._menu); + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } + + // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + const relatedTarget = { + relatedTarget: context._element + }; + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } + context._completeHide(relatedTarget); + } + } + static dataApiKeydownHandler(event) { + // If not an UP | DOWN | ESCAPE key => not a dropdown command + // If input/textarea && if key is other than ESCAPE => not a dropdown command + + const isInput = /input|textarea/i.test(event.target.tagName); + const isEscapeEvent = event.key === ESCAPE_KEY$2; + const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); + if (!isUpOrDownEvent && !isEscapeEvent) { + return; + } + if (isInput && !isEscapeEvent) { + return; + } + event.preventDefault(); + + // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ + const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); + const instance = Dropdown.getOrCreateInstance(getToggleButton); + if (isUpOrDownEvent) { + event.stopPropagation(); + instance.show(); + instance._selectMenuItem(event); + return; + } + if (instance._isShown()) { + // else is escape and we check if it is shown + event.stopPropagation(); + instance.hide(); + getToggleButton.focus(); + } + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); + EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); + EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { + event.preventDefault(); + Dropdown.getOrCreateInstance(this).toggle(); + }); + + /** + * jQuery + */ + + defineJQueryPlugin(Dropdown); + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/backdrop.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$9 = 'backdrop'; + const CLASS_NAME_FADE$4 = 'fade'; + const CLASS_NAME_SHOW$5 = 'show'; + const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; + const Default$8 = { + className: 'modal-backdrop', + clickCallback: null, + isAnimated: false, + isVisible: true, + // if false, we use the backdrop helper without adding any element to the dom + rootElement: 'body' // give the choice to place backdrop under different elements + }; + + const DefaultType$8 = { + className: 'string', + clickCallback: '(function|null)', + isAnimated: 'boolean', + isVisible: 'boolean', + rootElement: '(element|string)' + }; + + /** + * Class definition + */ + + class Backdrop extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } + + // Getters + static get Default() { + return Default$8; + } + static get DefaultType() { + return DefaultType$8; + } + static get NAME() { + return NAME$9; + } + + // Public + show(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._append(); + const element = this._getElement(); + if (this._config.isAnimated) { + reflow(element); + } + element.classList.add(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + execute(callback); + }); + } + hide(callback) { + if (!this._config.isVisible) { + execute(callback); + return; + } + this._getElement().classList.remove(CLASS_NAME_SHOW$5); + this._emulateAnimation(() => { + this.dispose(); + execute(callback); + }); + } + dispose() { + if (!this._isAppended) { + return; + } + EventHandler.off(this._element, EVENT_MOUSEDOWN); + this._element.remove(); + this._isAppended = false; + } + + // Private + _getElement() { + if (!this._element) { + const backdrop = document.createElement('div'); + backdrop.className = this._config.className; + if (this._config.isAnimated) { + backdrop.classList.add(CLASS_NAME_FADE$4); + } + this._element = backdrop; + } + return this._element; + } + _configAfterMerge(config) { + // use getElement() with the default "body" to get a fresh Element on each instantiation + config.rootElement = getElement(config.rootElement); + return config; + } + _append() { + if (this._isAppended) { + return; + } + const element = this._getElement(); + this._config.rootElement.append(element); + EventHandler.on(element, EVENT_MOUSEDOWN, () => { + execute(this._config.clickCallback); + }); + this._isAppended = true; + } + _emulateAnimation(callback) { + executeAfterTransition(callback, this._getElement(), this._config.isAnimated); + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/focustrap.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$8 = 'focustrap'; + const DATA_KEY$5 = 'bs.focustrap'; + const EVENT_KEY$5 = `.${DATA_KEY$5}`; + const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; + const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; + const TAB_KEY = 'Tab'; + const TAB_NAV_FORWARD = 'forward'; + const TAB_NAV_BACKWARD = 'backward'; + const Default$7 = { + autofocus: true, + trapElement: null // The element to trap focus inside of + }; + + const DefaultType$7 = { + autofocus: 'boolean', + trapElement: 'element' + }; + + /** + * Class definition + */ + + class FocusTrap extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + + // Getters + static get Default() { + return Default$7; + } + static get DefaultType() { + return DefaultType$7; + } + static get NAME() { + return NAME$8; + } + + // Public + activate() { + if (this._isActive) { + return; + } + if (this._config.autofocus) { + this._config.trapElement.focus(); + } + EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop + EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); + EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); + this._isActive = true; + } + deactivate() { + if (!this._isActive) { + return; + } + this._isActive = false; + EventHandler.off(document, EVENT_KEY$5); + } + + // Private + _handleFocusin(event) { + const { + trapElement + } = this._config; + if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { + return; + } + const elements = SelectorEngine.focusableChildren(trapElement); + if (elements.length === 0) { + trapElement.focus(); + } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { + elements[elements.length - 1].focus(); + } else { + elements[0].focus(); + } + } + _handleKeydown(event) { + if (event.key !== TAB_KEY) { + return; + } + this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/scrollBar.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; + const SELECTOR_STICKY_CONTENT = '.sticky-top'; + const PROPERTY_PADDING = 'padding-right'; + const PROPERTY_MARGIN = 'margin-right'; + + /** + * Class definition + */ + + class ScrollBarHelper { + constructor() { + this._element = document.body; + } + + // Public + getWidth() { + // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes + const documentWidth = document.documentElement.clientWidth; + return Math.abs(window.innerWidth - documentWidth); + } + hide() { + const width = this.getWidth(); + this._disableOverFlow(); + // give padding to element to balance the hidden scrollbar width + this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth + this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); + this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); + } + reset() { + this._resetElementAttributes(this._element, 'overflow'); + this._resetElementAttributes(this._element, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); + } + isOverflowing() { + return this.getWidth() > 0; + } + + // Private + _disableOverFlow() { + this._saveInitialAttribute(this._element, 'overflow'); + this._element.style.overflow = 'hidden'; + } + _setElementAttributes(selector, styleProperty, callback) { + const scrollbarWidth = this.getWidth(); + const manipulationCallBack = element => { + if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + return; + } + this._saveInitialAttribute(element, styleProperty); + const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); + element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _saveInitialAttribute(element, styleProperty) { + const actualValue = element.style.getPropertyValue(styleProperty); + if (actualValue) { + Manipulator.setDataAttribute(element, styleProperty, actualValue); + } + } + _resetElementAttributes(selector, styleProperty) { + const manipulationCallBack = element => { + const value = Manipulator.getDataAttribute(element, styleProperty); + // We only want to remove the property if the value is `null`; the value can also be zero + if (value === null) { + element.style.removeProperty(styleProperty); + return; + } + Manipulator.removeDataAttribute(element, styleProperty); + element.style.setProperty(styleProperty, value); + }; + this._applyManipulationCallback(selector, manipulationCallBack); + } + _applyManipulationCallback(selector, callBack) { + if (isElement$1(selector)) { + callBack(selector); + return; + } + for (const sel of SelectorEngine.find(selector, this._element)) { + callBack(sel); + } + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$7 = 'modal'; + const DATA_KEY$4 = 'bs.modal'; + const EVENT_KEY$4 = `.${DATA_KEY$4}`; + const DATA_API_KEY$2 = '.data-api'; + const ESCAPE_KEY$1 = 'Escape'; + const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; + const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; + const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; + const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; + const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; + const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; + const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; + const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; + const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; + const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; + const CLASS_NAME_OPEN = 'modal-open'; + const CLASS_NAME_FADE$3 = 'fade'; + const CLASS_NAME_SHOW$4 = 'show'; + const CLASS_NAME_STATIC = 'modal-static'; + const OPEN_SELECTOR$1 = '.modal.show'; + const SELECTOR_DIALOG = '.modal-dialog'; + const SELECTOR_MODAL_BODY = '.modal-body'; + const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; + const Default$6 = { + backdrop: true, + focus: true, + keyboard: true + }; + const DefaultType$6 = { + backdrop: '(boolean|string)', + focus: 'boolean', + keyboard: 'boolean' + }; + + /** + * Class definition + */ + + class Modal extends BaseComponent { + constructor(element, config) { + super(element, config); + this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._isShown = false; + this._isTransitioning = false; + this._scrollBar = new ScrollBarHelper(); + this._addEventListeners(); + } + + // Getters + static get Default() { + return Default$6; + } + static get DefaultType() { + return DefaultType$6; + } + static get NAME() { + return NAME$7; + } + + // Public + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown || this._isTransitioning) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._isTransitioning = true; + this._scrollBar.hide(); + document.body.classList.add(CLASS_NAME_OPEN); + this._adjustDialog(); + this._backdrop.show(() => this._showElement(relatedTarget)); + } + hide() { + if (!this._isShown || this._isTransitioning) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); + if (hideEvent.defaultPrevented) { + return; + } + this._isShown = false; + this._isTransitioning = true; + this._focustrap.deactivate(); + this._element.classList.remove(CLASS_NAME_SHOW$4); + this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); + } + dispose() { + EventHandler.off(window, EVENT_KEY$4); + EventHandler.off(this._dialog, EVENT_KEY$4); + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + handleUpdate() { + this._adjustDialog(); + } + + // Private + _initializeBackDrop() { + return new Backdrop({ + isVisible: Boolean(this._config.backdrop), + // 'static' option will be translated to true, and booleans will keep their value, + isAnimated: this._isAnimated() + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _showElement(relatedTarget) { + // try to append dynamic modal + if (!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', true); + this._element.setAttribute('role', 'dialog'); + this._element.scrollTop = 0; + const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + if (modalBody) { + modalBody.scrollTop = 0; + } + reflow(this._element); + this._element.classList.add(CLASS_NAME_SHOW$4); + const transitionComplete = () => { + if (this._config.focus) { + this._focustrap.activate(); + } + this._isTransitioning = false; + EventHandler.trigger(this._element, EVENT_SHOWN$4, { + relatedTarget + }); + }; + this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { + if (event.key !== ESCAPE_KEY$1) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + this._triggerBackdropTransition(); + }); + EventHandler.on(window, EVENT_RESIZE$1, () => { + if (this._isShown && !this._isTransitioning) { + this._adjustDialog(); + } + }); + EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { + // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks + EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { + if (this._element !== event.target || this._element !== event2.target) { + return; + } + if (this._config.backdrop === 'static') { + this._triggerBackdropTransition(); + return; + } + if (this._config.backdrop) { + this.hide(); + } + }); + }); + } + _hideModal() { + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', true); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + this._isTransitioning = false; + this._backdrop.hide(() => { + document.body.classList.remove(CLASS_NAME_OPEN); + this._resetAdjustments(); + this._scrollBar.reset(); + EventHandler.trigger(this._element, EVENT_HIDDEN$4); + }); + } + _isAnimated() { + return this._element.classList.contains(CLASS_NAME_FADE$3); + } + _triggerBackdropTransition() { + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); + if (hideEvent.defaultPrevented) { + return; + } + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const initialOverflowY = this._element.style.overflowY; + // return if the following background transition hasn't yet completed + if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { + return; + } + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } + this._element.classList.add(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.classList.remove(CLASS_NAME_STATIC); + this._queueCallback(() => { + this._element.style.overflowY = initialOverflowY; + }, this._dialog); + }, this._dialog); + this._element.focus(); + } + + /** + * The following methods are used to handle overflowing modals + */ + + _adjustDialog() { + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + const scrollbarWidth = this._scrollBar.getWidth(); + const isBodyOverflowing = scrollbarWidth > 0; + if (isBodyOverflowing && !isModalOverflowing) { + const property = isRTL() ? 'paddingLeft' : 'paddingRight'; + this._element.style[property] = `${scrollbarWidth}px`; + } + if (!isBodyOverflowing && isModalOverflowing) { + const property = isRTL() ? 'paddingRight' : 'paddingLeft'; + this._element.style[property] = `${scrollbarWidth}px`; + } + } + _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + + // Static + static jQueryInterface(config, relatedTarget) { + return this.each(function () { + const data = Modal.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](relatedTarget); + }); + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + EventHandler.one(target, EVENT_SHOW$4, showEvent => { + if (showEvent.defaultPrevented) { + // only register focus restorer if modal will actually get shown + return; + } + EventHandler.one(target, EVENT_HIDDEN$4, () => { + if (isVisible(this)) { + this.focus(); + } + }); + }); + + // avoid conflict when clicking modal toggler while another one is open + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + if (alreadyOpen) { + Modal.getInstance(alreadyOpen).hide(); + } + const data = Modal.getOrCreateInstance(target); + data.toggle(this); + }); + enableDismissTrigger(Modal); + + /** + * jQuery + */ + + defineJQueryPlugin(Modal); + + /** + * -------------------------------------------------------------------------- + * Bootstrap offcanvas.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$6 = 'offcanvas'; + const DATA_KEY$3 = 'bs.offcanvas'; + const EVENT_KEY$3 = `.${DATA_KEY$3}`; + const DATA_API_KEY$1 = '.data-api'; + const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; + const ESCAPE_KEY = 'Escape'; + const CLASS_NAME_SHOW$3 = 'show'; + const CLASS_NAME_SHOWING$1 = 'showing'; + const CLASS_NAME_HIDING = 'hiding'; + const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; + const OPEN_SELECTOR = '.offcanvas.show'; + const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; + const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; + const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; + const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; + const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; + const EVENT_RESIZE = `resize${EVENT_KEY$3}`; + const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; + const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; + const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; + const Default$5 = { + backdrop: true, + keyboard: true, + scroll: false + }; + const DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + scroll: 'boolean' + }; + + /** + * Class definition + */ + + class Offcanvas extends BaseComponent { + constructor(element, config) { + super(element, config); + this._isShown = false; + this._backdrop = this._initializeBackDrop(); + this._focustrap = this._initializeFocusTrap(); + this._addEventListeners(); + } + + // Getters + static get Default() { + return Default$5; + } + static get DefaultType() { + return DefaultType$5; + } + static get NAME() { + return NAME$6; + } + + // Public + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + show(relatedTarget) { + if (this._isShown) { + return; + } + const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + relatedTarget + }); + if (showEvent.defaultPrevented) { + return; + } + this._isShown = true; + this._backdrop.show(); + if (!this._config.scroll) { + new ScrollBarHelper().hide(); + } + this._element.setAttribute('aria-modal', true); + this._element.setAttribute('role', 'dialog'); + this._element.classList.add(CLASS_NAME_SHOWING$1); + const completeCallBack = () => { + if (!this._config.scroll || this._config.backdrop) { + this._focustrap.activate(); + } + this._element.classList.add(CLASS_NAME_SHOW$3); + this._element.classList.remove(CLASS_NAME_SHOWING$1); + EventHandler.trigger(this._element, EVENT_SHOWN$3, { + relatedTarget + }); + }; + this._queueCallback(completeCallBack, this._element, true); + } + hide() { + if (!this._isShown) { + return; + } + const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + if (hideEvent.defaultPrevented) { + return; + } + this._focustrap.deactivate(); + this._element.blur(); + this._isShown = false; + this._element.classList.add(CLASS_NAME_HIDING); + this._backdrop.hide(); + const completeCallback = () => { + this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); + this._element.removeAttribute('aria-modal'); + this._element.removeAttribute('role'); + if (!this._config.scroll) { + new ScrollBarHelper().reset(); + } + EventHandler.trigger(this._element, EVENT_HIDDEN$3); + }; + this._queueCallback(completeCallback, this._element, true); + } + dispose() { + this._backdrop.dispose(); + this._focustrap.deactivate(); + super.dispose(); + } + + // Private + _initializeBackDrop() { + const clickCallback = () => { + if (this._config.backdrop === 'static') { + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + return; + } + this.hide(); + }; + + // 'static' option will be translated to true, and booleans will keep their value + const isVisible = Boolean(this._config.backdrop); + return new Backdrop({ + className: CLASS_NAME_BACKDROP, + isVisible, + isAnimated: true, + rootElement: this._element.parentNode, + clickCallback: isVisible ? clickCallback : null + }); + } + _initializeFocusTrap() { + return new FocusTrap({ + trapElement: this._element + }); + } + _addEventListeners() { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { + if (event.key !== ESCAPE_KEY) { + return; + } + if (this._config.keyboard) { + this.hide(); + return; + } + EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); + }); + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Offcanvas.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } + } + + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { + const target = SelectorEngine.getElementFromSelector(this); + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + EventHandler.one(target, EVENT_HIDDEN$3, () => { + // focus on trigger when it is closed + if (isVisible(this)) { + this.focus(); + } + }); + + // avoid conflict when clicking a toggler of an offcanvas, while another is open + const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + if (alreadyOpen && alreadyOpen !== target) { + Offcanvas.getInstance(alreadyOpen).hide(); + } + const data = Offcanvas.getOrCreateInstance(target); + data.toggle(this); + }); + EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { + for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { + Offcanvas.getOrCreateInstance(selector).show(); + } + }); + EventHandler.on(window, EVENT_RESIZE, () => { + for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { + if (getComputedStyle(element).position !== 'fixed') { + Offcanvas.getOrCreateInstance(element).hide(); + } + } + }); + enableDismissTrigger(Offcanvas); + + /** + * jQuery + */ + + defineJQueryPlugin(Offcanvas); + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + // js-docs-start allow-list + const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + const DefaultAllowlist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + 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: [] + }; + // js-docs-end allow-list + + const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); + + /** + * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation + * contexts. + * + * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38 + */ + // eslint-disable-next-line unicorn/better-regex + const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; + const allowedAttribute = (attribute, allowedAttributeList) => { + const attributeName = attribute.nodeName.toLowerCase(); + if (allowedAttributeList.includes(attributeName)) { + if (uriAttributes.has(attributeName)) { + return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); + } + return true; + } + + // Check if a regular expression validates the attribute. + return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); + }; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { + if (!unsafeHtml.length) { + return unsafeHtml; + } + if (sanitizeFunction && typeof sanitizeFunction === 'function') { + return sanitizeFunction(unsafeHtml); + } + const domParser = new window.DOMParser(); + const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + const elements = [].concat(...createdDocument.body.querySelectorAll('*')); + for (const element of elements) { + const elementName = element.nodeName.toLowerCase(); + if (!Object.keys(allowList).includes(elementName)) { + element.remove(); + continue; + } + const attributeList = [].concat(...element.attributes); + const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); + for (const attribute of attributeList) { + if (!allowedAttribute(attribute, allowedAttributes)) { + element.removeAttribute(attribute.nodeName); + } + } + } + return createdDocument.body.innerHTML; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/template-factory.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$5 = 'TemplateFactory'; + const Default$4 = { + allowList: DefaultAllowlist, + content: {}, + // { selector : text , selector2 : text2 , } + extraClass: '', + html: false, + sanitize: true, + sanitizeFn: null, + template: '
    ' + }; + const DefaultType$4 = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }; + const DefaultContentType = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + + /** + * Class definition + */ + + class TemplateFactory extends Config { + constructor(config) { + super(); + this._config = this._getConfig(config); + } + + // Getters + static get Default() { + return Default$4; + } + static get DefaultType() { + return DefaultType$4; + } + static get NAME() { + return NAME$5; + } + + // Public + getContent() { + return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(content) { + this._checkContent(content); + this._config.content = { + ...this._config.content, + ...content + }; + return this; + } + toHtml() { + const templateWrapper = document.createElement('div'); + templateWrapper.innerHTML = this._maybeSanitize(this._config.template); + for (const [selector, text] of Object.entries(this._config.content)) { + this._setContent(templateWrapper, text, selector); + } + const template = templateWrapper.children[0]; + const extraClass = this._resolvePossibleFunction(this._config.extraClass); + if (extraClass) { + template.classList.add(...extraClass.split(' ')); + } + return template; + } + + // Private + _typeCheckConfig(config) { + super._typeCheckConfig(config); + this._checkContent(config.content); + } + _checkContent(arg) { + for (const [selector, content] of Object.entries(arg)) { + super._typeCheckConfig({ + selector, + entry: content + }, DefaultContentType); + } + } + _setContent(template, content, selector) { + const templateElement = SelectorEngine.findOne(selector, template); + if (!templateElement) { + return; + } + content = this._resolvePossibleFunction(content); + if (!content) { + templateElement.remove(); + return; + } + if (isElement$1(content)) { + this._putElementInTemplate(getElement(content), templateElement); + return; + } + if (this._config.html) { + templateElement.innerHTML = this._maybeSanitize(content); + return; + } + templateElement.textContent = content; + } + _maybeSanitize(arg) { + return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this]); + } + _putElementInTemplate(element, templateElement) { + if (this._config.html) { + templateElement.innerHTML = ''; + templateElement.append(element); + return; + } + templateElement.textContent = element.textContent; + } + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$4 = 'tooltip'; + const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); + const CLASS_NAME_FADE$2 = 'fade'; + const CLASS_NAME_MODAL = 'modal'; + const CLASS_NAME_SHOW$2 = 'show'; + const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; + const EVENT_MODAL_HIDE = 'hide.bs.modal'; + const TRIGGER_HOVER = 'hover'; + const TRIGGER_FOCUS = 'focus'; + const TRIGGER_CLICK = 'click'; + const TRIGGER_MANUAL = 'manual'; + const EVENT_HIDE$2 = 'hide'; + const EVENT_HIDDEN$2 = 'hidden'; + const EVENT_SHOW$2 = 'show'; + const EVENT_SHOWN$2 = 'shown'; + const EVENT_INSERTED = 'inserted'; + const EVENT_CLICK$1 = 'click'; + const EVENT_FOCUSIN$1 = 'focusin'; + const EVENT_FOCUSOUT$1 = 'focusout'; + const EVENT_MOUSEENTER = 'mouseenter'; + const EVENT_MOUSELEAVE = 'mouseleave'; + const AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: isRTL() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: isRTL() ? 'right' : 'left' + }; + const Default$3 = { + allowList: DefaultAllowlist, + animation: true, + boundary: 'clippingParents', + container: false, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: false, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: true, + sanitizeFn: null, + selector: false, + template: '', + title: '', + trigger: 'hover focus' + }; + const DefaultType$3 = { + 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 definition + */ + + class Tooltip extends BaseComponent { + constructor(element, config) { + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); + } + super(element, config); + + // Private + this._isEnabled = true; + this._timeout = 0; + this._isHovered = null; + this._activeTrigger = {}; + this._popper = null; + this._templateFactory = null; + this._newContent = null; + + // Protected + this.tip = null; + this._setListeners(); + if (!this._config.selector) { + this._fixTitle(); + } + } + + // Getters + static get Default() { + return Default$3; + } + static get DefaultType() { + return DefaultType$3; + } + static get NAME() { + return NAME$4; + } + + // Public + enable() { + this._isEnabled = true; + } + disable() { + this._isEnabled = false; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + if (!this._isEnabled) { + return; + } + this._activeTrigger.click = !this._activeTrigger.click; + if (this._isShown()) { + this._leave(); + return; + } + this._enter(); + } + dispose() { + clearTimeout(this._timeout); + EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._element.getAttribute('data-bs-original-title')) { + this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); + } + this._disposePopper(); + super.dispose(); + } + show() { + if (this._element.style.display === 'none') { + throw new Error('Please use show on visible elements'); + } + if (!(this._isWithContent() && this._isEnabled)) { + return; + } + const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); + const shadowRoot = findShadowRoot(this._element); + const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + if (showEvent.defaultPrevented || !isInTheDom) { + return; + } + + // TODO: v6 remove this or make it optional + this._disposePopper(); + const tip = this._getTipElement(); + this._element.setAttribute('aria-describedby', tip.getAttribute('id')); + const { + container + } = this._config; + if (!this._element.ownerDocument.documentElement.contains(this.tip)) { + container.append(tip); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + } + this._popper = this._createPopper(tip); + tip.classList.add(CLASS_NAME_SHOW$2); + + // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.on(element, 'mouseover', noop); + } + } + const complete = () => { + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); + if (this._isHovered === false) { + this._leave(); + } + this._isHovered = false; + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + hide() { + if (!this._isShown()) { + return; + } + const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); + if (hideEvent.defaultPrevented) { + return; + } + const tip = this._getTipElement(); + tip.classList.remove(CLASS_NAME_SHOW$2); + + // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + if ('ontouchstart' in document.documentElement) { + for (const element of [].concat(...document.body.children)) { + EventHandler.off(element, 'mouseover', noop); + } + } + this._activeTrigger[TRIGGER_CLICK] = false; + this._activeTrigger[TRIGGER_FOCUS] = false; + this._activeTrigger[TRIGGER_HOVER] = false; + this._isHovered = null; // it is a trick to support manual triggering + + const complete = () => { + if (this._isWithActiveTrigger()) { + return; + } + if (!this._isHovered) { + this._disposePopper(); + } + this._element.removeAttribute('aria-describedby'); + EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); + }; + this._queueCallback(complete, this.tip, this._isAnimated()); + } + update() { + if (this._popper) { + this._popper.update(); + } + } + + // Protected + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + if (!this.tip) { + this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); + } + return this.tip; + } + _createTipElement(content) { + const tip = this._getTemplateFactory(content).toHtml(); + + // TODO: remove this check in v6 + if (!tip) { + return null; + } + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); + // TODO: v6 the following can be achieved with CSS only + tip.classList.add(`bs-${this.constructor.NAME}-auto`); + const tipId = getUID(this.constructor.NAME).toString(); + tip.setAttribute('id', tipId); + if (this._isAnimated()) { + tip.classList.add(CLASS_NAME_FADE$2); + } + return tip; + } + setContent(content) { + this._newContent = content; + if (this._isShown()) { + this._disposePopper(); + this.show(); + } + } + _getTemplateFactory(content) { + if (this._templateFactory) { + this._templateFactory.changeContent(content); + } else { + this._templateFactory = new TemplateFactory({ + ...this._config, + // the `content` var has to be after `this._config` + // to override config.content in case of popover + content, + extraClass: this._resolvePossibleFunction(this._config.customClass) + }); + } + return this._templateFactory; + } + _getContentForTemplate() { + return { + [SELECTOR_TOOLTIP_INNER]: this._getTitle() + }; + } + _getTitle() { + return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); + } + + // Private + _initializeOnDelegatedTarget(event) { + return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); + } + _isAnimated() { + return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); + } + _isShown() { + return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); + } + _createPopper(tip) { + const placement = execute(this._config.placement, [this, tip, this._element]); + const attachment = AttachmentMap[placement.toUpperCase()]; + return createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + _getOffset() { + const { + offset + } = this._config; + if (typeof offset === 'string') { + return offset.split(',').map(value => Number.parseInt(value, 10)); + } + if (typeof offset === 'function') { + return popperData => offset(popperData, this._element); + } + return offset; + } + _resolvePossibleFunction(arg) { + return execute(arg, [this._element]); + } + _getPopperConfig(attachment) { + const defaultBsPopperConfig = { + placement: attachment, + 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: true, + phase: 'beforeMain', + fn: data => { + // Pre-set Popper's placement attribute in order to read the arrow sizes properly. + // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement + this._getTipElement().setAttribute('data-popper-placement', data.state.placement); + } + }] + }; + return { + ...defaultBsPopperConfig, + ...execute(this._config.popperConfig, [defaultBsPopperConfig]) + }; + } + _setListeners() { + const triggers = this._config.trigger.split(' '); + for (const trigger of triggers) { + if (trigger === 'click') { + EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context.toggle(); + }); + } else if (trigger !== TRIGGER_MANUAL) { + const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); + const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); + EventHandler.on(this._element, eventIn, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + context._enter(); + }); + EventHandler.on(this._element, eventOut, this._config.selector, event => { + const context = this._initializeOnDelegatedTarget(event); + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + context._leave(); + }); + } + } + this._hideModalHandler = () => { + if (this._element) { + this.hide(); + } + }; + EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + } + _fixTitle() { + const title = this._element.getAttribute('title'); + if (!title) { + return; + } + if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { + this._element.setAttribute('aria-label', title); + } + this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility + this._element.removeAttribute('title'); + } + _enter() { + if (this._isShown() || this._isHovered) { + this._isHovered = true; + return; + } + this._isHovered = true; + this._setTimeout(() => { + if (this._isHovered) { + this.show(); + } + }, this._config.delay.show); + } + _leave() { + if (this._isWithActiveTrigger()) { + return; + } + this._isHovered = false; + this._setTimeout(() => { + if (!this._isHovered) { + this.hide(); + } + }, this._config.delay.hide); + } + _setTimeout(handler, timeout) { + clearTimeout(this._timeout); + this._timeout = setTimeout(handler, timeout); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(true); + } + _getConfig(config) { + const dataAttributes = Manipulator.getDataAttributes(this._element); + for (const dataAttribute of Object.keys(dataAttributes)) { + if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { + delete dataAttributes[dataAttribute]; + } + } + config = { + ...dataAttributes, + ...(typeof config === 'object' && config ? config : {}) + }; + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + config.container = config.container === false ? document.body : getElement(config.container); + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } + return config; + } + _getDelegateConfig() { + const config = {}; + for (const [key, value] of Object.entries(this._config)) { + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + config.selector = false; + config.trigger = 'manual'; + + // In the future can be replaced with: + // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) + // `Object.fromEntries(keysWithDifferentValues)` + return config; + } + _disposePopper() { + if (this._popper) { + this._popper.destroy(); + this._popper = null; + } + if (this.tip) { + this.tip.remove(); + this.tip = null; + } + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Tooltip.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + + /** + * jQuery + */ + + defineJQueryPlugin(Tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$3 = 'popover'; + const SELECTOR_TITLE = '.popover-header'; + const SELECTOR_CONTENT = '.popover-body'; + const Default$2 = { + ...Tooltip.Default, + content: '', + offset: [0, 8], + placement: 'right', + template: '', + trigger: 'click' + }; + const DefaultType$2 = { + ...Tooltip.DefaultType, + content: '(null|string|element|function)' + }; + + /** + * Class definition + */ + + class Popover extends Tooltip { + // Getters + static get Default() { + return Default$2; + } + static get DefaultType() { + return DefaultType$2; + } + static get NAME() { + return NAME$3; + } + + // Overrides + _isWithContent() { + return this._getTitle() || this._getContent(); + } + + // Private + _getContentForTemplate() { + return { + [SELECTOR_TITLE]: this._getTitle(), + [SELECTOR_CONTENT]: this._getContent() + }; + } + _getContent() { + return this._resolvePossibleFunction(this._config.content); + } + + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Popover.getOrCreateInstance(this, config); + if (typeof config !== 'string') { + return; + } + if (typeof data[config] === 'undefined') { + throw new TypeError(`No method named "${config}"`); + } + data[config](); + }); + } + } + + /** + * jQuery + */ + + defineJQueryPlugin(Popover); + + /** + * -------------------------------------------------------------------------- + * Bootstrap scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$2 = 'scrollspy'; + const DATA_KEY$2 = 'bs.scrollspy'; + const EVENT_KEY$2 = `.${DATA_KEY$2}`; + const DATA_API_KEY = '.data-api'; + const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; + const EVENT_CLICK = `click${EVENT_KEY$2}`; + const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; + const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; + const CLASS_NAME_ACTIVE$1 = 'active'; + const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; + const SELECTOR_TARGET_LINKS = '[href]'; + const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; + const SELECTOR_NAV_LINKS = '.nav-link'; + const SELECTOR_NAV_ITEMS = '.nav-item'; + const SELECTOR_LIST_ITEMS = '.list-group-item'; + const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; + const SELECTOR_DROPDOWN = '.dropdown'; + const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; + const Default$1 = { + offset: null, + // TODO: v6 @deprecated, keep it for backwards compatibility reasons + rootMargin: '0px 0px -25%', + smoothScroll: false, + target: null, + threshold: [0.1, 0.5, 1] + }; + const DefaultType$1 = { + offset: '(number|null)', + // TODO v6 @deprecated, keep it for backwards compatibility reasons + rootMargin: 'string', + smoothScroll: 'boolean', + target: 'element', + threshold: 'array' + }; + + /** + * Class definition + */ + + class ScrollSpy extends BaseComponent { + constructor(element, config) { + super(element, config); + + // this._element is the observablesContainer and config.target the menu links wrapper + this._targetLinks = new Map(); + this._observableSections = new Map(); + this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; + this._activeTarget = null; + this._observer = null; + this._previousScrollData = { + visibleEntryTop: 0, + parentScrollTop: 0 + }; + this.refresh(); // initialize + } + + // Getters + static get Default() { + return Default$1; + } + static get DefaultType() { + return DefaultType$1; + } + static get NAME() { + return NAME$2; + } + + // Public + refresh() { + this._initializeTargetsAndObservables(); + this._maybeEnableSmoothScroll(); + if (this._observer) { + this._observer.disconnect(); + } else { + this._observer = this._getNewObserver(); + } + for (const section of this._observableSections.values()) { + this._observer.observe(section); + } + } + dispose() { + this._observer.disconnect(); + super.dispose(); + } + + // Private + _configAfterMerge(config) { + // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case + config.target = getElement(config.target) || document.body; + + // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only + config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; + if (typeof config.threshold === 'string') { + config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); + } + return config; + } + _maybeEnableSmoothScroll() { + if (!this._config.smoothScroll) { + return; + } + + // unregister any previous listeners + EventHandler.off(this._config.target, EVENT_CLICK); + EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { + const observableSection = this._observableSections.get(event.target.hash); + if (observableSection) { + event.preventDefault(); + const root = this._rootElement || window; + const height = observableSection.offsetTop - this._element.offsetTop; + if (root.scrollTo) { + root.scrollTo({ + top: height, + behavior: 'smooth' + }); + return; + } + + // Chrome 60 doesn't support `scrollTo` + root.scrollTop = height; + } + }); + } + _getNewObserver() { + const options = { + root: this._rootElement, + threshold: this._config.threshold, + rootMargin: this._config.rootMargin + }; + return new IntersectionObserver(entries => this._observerCallback(entries), options); + } + + // The logic of selection + _observerCallback(entries) { + const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); + const activate = entry => { + this._previousScrollData.visibleEntryTop = entry.target.offsetTop; + this._process(targetElement(entry)); + }; + const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; + const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; + this._previousScrollData.parentScrollTop = parentScrollTop; + for (const entry of entries) { + if (!entry.isIntersecting) { + this._activeTarget = null; + this._clearActiveClass(targetElement(entry)); + continue; + } + const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; + // if we are scrolling down, pick the bigger offsetTop + if (userScrollsDown && entryIsLowerThanPrevious) { + activate(entry); + // if parent isn't scrolled, let's keep the first visible item, breaking the iteration + if (!parentScrollTop) { + return; + } + continue; + } + + // if we are scrolling up, pick the smallest offsetTop + if (!userScrollsDown && !entryIsLowerThanPrevious) { + activate(entry); + } + } + } + _initializeTargetsAndObservables() { + this._targetLinks = new Map(); + this._observableSections = new Map(); + const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); + for (const anchor of targetLinks) { + // ensure that the anchor has an id and is not disabled + if (!anchor.hash || isDisabled(anchor)) { + continue; + } + const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); + + // ensure that the observableSection exists & is visible + if (isVisible(observableSection)) { + this._targetLinks.set(decodeURI(anchor.hash), anchor); + this._observableSections.set(anchor.hash, observableSection); + } + } + } + _process(target) { + if (this._activeTarget === target) { + return; + } + this._clearActiveClass(this._config.target); + this._activeTarget = target; + target.classList.add(CLASS_NAME_ACTIVE$1); + this._activateParents(target); + EventHandler.trigger(this._element, EVENT_ACTIVATE, { + relatedTarget: target + }); + } + _activateParents(target) { + // Activate dropdown parents + if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { + SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); + return; + } + for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { + // Set triggered links parents as active + // With both
      and