From bb3895a5ed5079348b39a6500805acc19ca9c676 Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Sun, 15 Sep 2024 15:22:43 +0300 Subject: [PATCH 1/8] bump version 0.2.9 (#748) --- loco-cli/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loco-cli/Cargo.toml b/loco-cli/Cargo.toml index 9c77c9ca1..6ce44bf06 100644 --- a/loco-cli/Cargo.toml +++ b/loco-cli/Cargo.toml @@ -2,7 +2,7 @@ [package] name = "loco-cli" -version = "0.2.8" +version = "0.2.9" edition = "2021" description = "loco cli website generator" license = "Apache-2.0" From cac1af7eb5c27b6f5533238df29a1013a5e5578b Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Mon, 16 Sep 2024 10:37:42 +0300 Subject: [PATCH 2/8] redesign website (#737) redesign website --- README.md | 70 +- docs-site/.gitignore | 1 + docs-site/config.toml | 228 +- docs-site/content/blog/angular-frontend.md | 3 +- docs-site/content/blog/axum-session.md | 2 +- docs-site/content/blog/deploy-aws.md | 2 +- docs-site/content/blog/frontend-website.md | 2 +- docs-site/content/blog/hello-world.md | 4 +- ...001-dynamic-responses-and-content-types.md | 2 +- .../content/casts/002-routes-and-prefixes.md | 2 +- .../casts/003-scaffolding-crud-with-html.md | 2 +- docs-site/content/casts/004-creating-tasks.md | 2 +- docs-site/content/casts/005-testing-tasks.md | 2 +- docs-site/content/casts/006-mailers.md | 2 +- docs-site/content/casts/007-htmx.md | 2 +- .../docs/{starters => extras}/_index.md | 4 +- .../{the-app => extras}/authentication.md | 4 +- .../docs/{the-app => extras}/channels.md | 2 +- .../middlewares.md => extras/pluggability.md} | 266 +- .../docs/getting-started/axum-users.md | 2 +- docs-site/content/docs/getting-started/cli.md | 120 - .../content/docs/getting-started/config.md | 118 - .../content/docs/getting-started/guide.md | 80 +- .../content/docs/getting-started/scaffold.md | 70 - .../content/docs/getting-started/starters.md | 43 +- .../docs/getting-started/tour/index.md | 80 +- .../docs/infrastructure}/_index.md | 4 +- .../docs/{the-app => infrastructure}/cache.md | 4 +- .../deployment.md | 10 +- .../{the-app => infrastructure}/storage.md | 2 +- docs-site/content/docs/processing/_index.md | 10 + .../docs/{the-app => processing}/mailers.md | 4 +- .../content/docs/processing/scheduler.md | 153 + .../docs/{the-app => processing}/task.md | 3 +- .../docs/{the-app => processing}/workers.md | 87 +- docs-site/content/docs/resources/_index.md | 2 +- docs-site/content/docs/resources/faq.md | 2 +- .../content/docs/resources/live-examples.md | 4 +- docs-site/content/docs/starters/rest-api.md | 16 - docs-site/content/docs/starters/saas.md | 59 - docs-site/content/docs/starters/service.md | 16 - docs-site/content/docs/the-app/_index.md | 2 +- docs-site/content/docs/the-app/controller.md | 2 +- docs-site/content/docs/the-app/errors.md | 113 - .../content/docs/the-app/initializers.md | 156 - docs-site/content/docs/the-app/models.md | 55 +- docs-site/content/docs/the-app/views.md | 2 +- .../content/docs/the-app/your-project.md | 287 + docs-site/package.json | 21 + docs-site/pnpm-lock.yaml | 1862 +++ ...c0d47a07719bd6d5a2240b829cad6a3f40684fa370 | 1 - docs-site/static/apple-touch-icon.png | Bin 0 -> 8140 bytes docs-site/static/bench-db-q.svg | 34 + docs-site/static/bench-no-db.svg | 34 + docs-site/static/bg.svg | 575 + docs-site/static/cloud-bg.svg | 66 + docs-site/static/cloud.svg | 10 + docs-site/static/favicon-16x16.png | Bin 0 -> 1198 bytes docs-site/static/favicon-32x32.png | Bin 0 -> 1323 bytes docs-site/static/header.svg | 18 + docs-site/static/icon.svg | 19 + docs-site/static/images/logo.png | Bin 164038 -> 0 bytes .../{themes/adidoks => }/static/js/main.js | 16 +- docs-site/static/js/search.js | 317 + docs-site/static/mountain-bg.svg | 13 + docs-site/static/plugins/elasticlunr.min.js | 10 + .../logo.4aeb53be0cc35cb8.png | Bin 3329 -> 0 bytes .../logo.8858825d70de731a.png | Bin 1021 -> 0 bytes .../logo.8da33dd02b6224b7.png | Bin 59979 -> 0 bytes docs-site/static/styles/styles.css | 2450 ++++ docs-site/static/syntax-theme-dark.css | 293 +- docs-site/static/syntax-theme-light.css | 2 + docs-site/static/top.svg | 4 + docs-site/styles/styles.css | 248 + docs-site/tailwind.config.js | 58 + .../{themes/adidoks => }/templates/404.html | 0 docs-site/templates/base.html | 45 + docs-site/templates/blog/page.html | 30 + docs-site/templates/blog/section.html | 48 + docs-site/templates/casts/page.html | 28 + docs-site/templates/casts/section.html | 54 + docs-site/templates/docs/page.html | 54 + docs-site/templates/docs/section.html | 49 + docs-site/templates/index.html | 182 + .../templates/macros/docs-edit-page.html | 9 + .../templates/macros/docs-navigation.html | 107 + docs-site/templates/macros/docs-sidebar.html | 40 + docs-site/templates/macros/docs-toc.html | 22 + docs-site/templates/macros/footer.html | 23 + docs-site/templates/macros/header.html | 141 + .../templates/macros/javascript.html | 2 +- .../macros/page-publish-metadata.html | 6 + .../templates/macros/youtube.html | 4 +- docs-site/templates/page.html | 60 + docs-site/templates/section.html | 50 + .../{.gitkeep => taxonomy_list.html} | 0 docs-site/templates/taxonomy_single.html | 0 docs-site/themes/adidoks/.gitignore | 3 - docs-site/themes/adidoks/CODE_OF_CONDUCT.md | 133 - docs-site/themes/adidoks/CONTRIBUTING.md | 28 - docs-site/themes/adidoks/LICENSE | 20 - docs-site/themes/adidoks/README.md | 177 - docs-site/themes/adidoks/config.toml | 132 - docs-site/themes/adidoks/config.toml.example | 143 - docs-site/themes/adidoks/content/_index.fi.md | 51 - docs-site/themes/adidoks/content/_index.md | 51 - .../themes/adidoks/content/authors/_index.md | 18 - .../adidoks/content/authors/aaran-xu.md | 11 - .../themes/adidoks/content/blog/_index.md | 7 - .../adidoks/content/blog/hello-world.md | 41 - .../adidoks/content/blog/markdown-syntax.md | 152 - .../adidoks/content/blog/math-typesetting.md | 48 - .../adidoks/content/blog/placeholder-text.md | 62 - .../content/blog/say-hello-to-zola-doks.md | 15 - .../themes/adidoks/content/docs/_index.md | 9 - .../docs/contributing/code-of-conduct.md | 146 - .../docs/contributing/how-to-contribute.md | 37 - .../content/docs/getting-started/_index.md | 10 - .../docs/getting-started/introduction.md | 31 - .../docs/getting-started/quick-start.md | 94 - .../adidoks/content/docs/help/_index.md | 10 - .../themes/adidoks/content/docs/help/faq.md | 39 - .../adidoks/content/privacy-policy/_index.md | 27 - docs-site/themes/adidoks/netlify.toml | 9 - docs-site/themes/adidoks/sass/_custom.scss | 39 - .../themes/adidoks/sass/bootstrap/LICENSE | 22 - .../themes/adidoks/sass/bootstrap/README.md | 239 - .../bootstrap/dist/css/bootstrap-grid.css | 4997 ------- .../bootstrap/dist/css/bootstrap-grid.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.min.css | 7 - .../dist/css/bootstrap-grid.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4996 ------- .../dist/css/bootstrap-grid.rtl.css.map | 1 - .../dist/css/bootstrap-grid.rtl.min.css | 7 - .../dist/css/bootstrap-grid.rtl.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-reboot.css | 426 - .../dist/css/bootstrap-reboot.css.map | 1 - .../dist/css/bootstrap-reboot.min.css | 8 - .../dist/css/bootstrap-reboot.min.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.css | 423 - .../dist/css/bootstrap-reboot.rtl.css.map | 1 - .../dist/css/bootstrap-reboot.rtl.min.css | 8 - .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 - .../dist/css/bootstrap-utilities.css | 4752 ------- .../dist/css/bootstrap-utilities.css.map | 1 - .../dist/css/bootstrap-utilities.min.css | 7 - .../dist/css/bootstrap-utilities.min.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.css | 4743 ------- .../dist/css/bootstrap-utilities.rtl.css.map | 1 - .../dist/css/bootstrap-utilities.rtl.min.css | 7 - .../css/bootstrap-utilities.rtl.min.css.map | 1 - .../sass/bootstrap/dist/css/bootstrap.css | 10819 ---------------- .../sass/bootstrap/dist/css/bootstrap.css.map | 1 - .../sass/bootstrap/dist/css/bootstrap.min.css | 7 - .../bootstrap/dist/css/bootstrap.min.css.map | 1 - .../sass/bootstrap/dist/css/bootstrap.rtl.css | 10795 --------------- .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 - .../bootstrap/dist/css/bootstrap.rtl.min.css | 7 - .../dist/css/bootstrap.rtl.min.css.map | 1 - .../bootstrap/dist/js/bootstrap.bundle.js | 6714 ---------- .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 - .../bootstrap/dist/js/bootstrap.bundle.min.js | 7 - .../dist/js/bootstrap.bundle.min.js.map | 1 - .../sass/bootstrap/dist/js/bootstrap.esm.js | 4944 ------- .../bootstrap/dist/js/bootstrap.esm.js.map | 1 - .../bootstrap/dist/js/bootstrap.esm.min.js | 7 - .../dist/js/bootstrap.esm.min.js.map | 1 - .../sass/bootstrap/dist/js/bootstrap.js | 4993 ------- .../sass/bootstrap/dist/js/bootstrap.js.map | 1 - .../sass/bootstrap/dist/js/bootstrap.min.js | 7 - .../bootstrap/dist/js/bootstrap.min.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/alert.js | 264 - .../sass/bootstrap/js/dist/alert.js.map | 1 - .../sass/bootstrap/js/dist/base-component.js | 62 - .../bootstrap/js/dist/base-component.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/button.js | 146 - .../sass/bootstrap/js/dist/button.js.map | 1 - .../sass/bootstrap/js/dist/carousel.js | 757 -- .../sass/bootstrap/js/dist/carousel.js.map | 1 - .../sass/bootstrap/js/dist/collapse.js | 551 - .../sass/bootstrap/js/dist/collapse.js.map | 1 - .../sass/bootstrap/js/dist/dom/data.js | 69 - .../sass/bootstrap/js/dist/dom/data.js.map | 1 - .../bootstrap/js/dist/dom/event-handler.js | 305 - .../js/dist/dom/event-handler.js.map | 1 - .../sass/bootstrap/js/dist/dom/manipulator.js | 89 - .../bootstrap/js/dist/dom/manipulator.js.map | 1 - .../bootstrap/js/dist/dom/selector-engine.js | 86 - .../js/dist/dom/selector-engine.js.map | 1 - .../sass/bootstrap/js/dist/dropdown.js | 662 - .../sass/bootstrap/js/dist/dropdown.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/modal.js | 752 -- .../sass/bootstrap/js/dist/modal.js.map | 1 - .../sass/bootstrap/js/dist/offcanvas.js | 509 - .../sass/bootstrap/js/dist/offcanvas.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/popover.js | 216 - .../sass/bootstrap/js/dist/popover.js.map | 1 - .../sass/bootstrap/js/dist/scrollspy.js | 400 - .../sass/bootstrap/js/dist/scrollspy.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/tab.js | 347 - .../adidoks/sass/bootstrap/js/dist/tab.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/toast.js | 335 - .../sass/bootstrap/js/dist/toast.js.map | 1 - .../adidoks/sass/bootstrap/js/dist/tooltip.js | 1055 -- .../sass/bootstrap/js/dist/tooltip.js.map | 1 - .../adidoks/sass/bootstrap/js/src/alert.js | 141 - .../sass/bootstrap/js/src/base-component.js | 46 - .../adidoks/sass/bootstrap/js/src/button.js | 95 - .../adidoks/sass/bootstrap/js/src/carousel.js | 624 - .../adidoks/sass/bootstrap/js/src/collapse.js | 410 - .../adidoks/sass/bootstrap/js/src/dom/data.js | 57 - .../bootstrap/js/src/dom/event-handler.js | 331 - .../sass/bootstrap/js/src/dom/manipulator.js | 80 - .../bootstrap/js/src/dom/selector-engine.js | 75 - .../adidoks/sass/bootstrap/js/src/dropdown.js | 543 - .../adidoks/sass/bootstrap/js/src/modal.js | 582 - .../sass/bootstrap/js/src/offcanvas.js | 279 - .../adidoks/sass/bootstrap/js/src/popover.js | 171 - .../sass/bootstrap/js/src/scrollspy.js | 319 - .../adidoks/sass/bootstrap/js/src/tab.js | 220 - .../adidoks/sass/bootstrap/js/src/toast.js | 219 - .../adidoks/sass/bootstrap/js/src/tooltip.js | 802 -- .../sass/bootstrap/js/src/util/index.js | 253 - .../sass/bootstrap/js/src/util/sanitizer.js | 127 - .../sass/bootstrap/js/src/util/scrollbar.js | 70 - .../adidoks/sass/bootstrap/package.json | 211 - .../sass/bootstrap/scss/_accordion.scss | 116 - .../adidoks/sass/bootstrap/scss/_alert.scss | 57 - .../adidoks/sass/bootstrap/scss/_badge.scss | 29 - .../sass/bootstrap/scss/_breadcrumb.scss | 28 - .../sass/bootstrap/scss/_button-group.scss | 139 - .../adidoks/sass/bootstrap/scss/_buttons.scss | 111 - .../adidoks/sass/bootstrap/scss/_card.scss | 215 - .../sass/bootstrap/scss/_carousel.scss | 229 - .../adidoks/sass/bootstrap/scss/_close.scss | 40 - .../sass/bootstrap/scss/_containers.scss | 41 - .../sass/bootstrap/scss/_dropdown.scss | 246 - .../adidoks/sass/bootstrap/scss/_forms.scss | 9 - .../sass/bootstrap/scss/_functions.scss | 205 - .../adidoks/sass/bootstrap/scss/_grid.scss | 22 - .../adidoks/sass/bootstrap/scss/_helpers.scss | 7 - .../adidoks/sass/bootstrap/scss/_images.scss | 42 - .../sass/bootstrap/scss/_list-group.scss | 174 - .../adidoks/sass/bootstrap/scss/_mixins.scss | 41 - .../adidoks/sass/bootstrap/scss/_modal.scss | 237 - .../adidoks/sass/bootstrap/scss/_nav.scss | 139 - .../adidoks/sass/bootstrap/scss/_navbar.scss | 306 - .../sass/bootstrap/scss/_offcanvas.scss | 77 - .../sass/bootstrap/scss/_pagination.scss | 64 - .../adidoks/sass/bootstrap/scss/_popover.scss | 158 - .../sass/bootstrap/scss/_progress.scss | 48 - .../adidoks/sass/bootstrap/scss/_reboot.scss | 621 - .../adidoks/sass/bootstrap/scss/_root.scss | 16 - .../sass/bootstrap/scss/_spinners.scss | 69 - .../adidoks/sass/bootstrap/scss/_tables.scss | 150 - .../adidoks/sass/bootstrap/scss/_toasts.scss | 51 - .../adidoks/sass/bootstrap/scss/_tooltip.scss | 115 - .../sass/bootstrap/scss/_transitions.scss | 21 - .../adidoks/sass/bootstrap/scss/_type.scss | 104 - .../sass/bootstrap/scss/_utilities.scss | 594 - .../sass/bootstrap/scss/_variables.scss | 1464 --- .../sass/bootstrap/scss/bootstrap-grid.scss | 65 - .../sass/bootstrap/scss/bootstrap-reboot.scss | 15 - .../bootstrap/scss/bootstrap-utilities.scss | 18 - .../sass/bootstrap/scss/bootstrap.scss | 52 - .../scss/forms/_floating-labels.scss | 61 - .../bootstrap/scss/forms/_form-check.scss | 152 - .../bootstrap/scss/forms/_form-control.scss | 219 - .../bootstrap/scss/forms/_form-range.scss | 91 - .../bootstrap/scss/forms/_form-select.scss | 67 - .../sass/bootstrap/scss/forms/_form-text.scss | 11 - .../bootstrap/scss/forms/_input-group.scss | 121 - .../sass/bootstrap/scss/forms/_labels.scss | 36 - .../bootstrap/scss/forms/_validation.scss | 12 - .../bootstrap/scss/helpers/_clearfix.scss | 3 - .../scss/helpers/_colored-links.scss | 12 - .../bootstrap/scss/helpers/_position.scss | 30 - .../sass/bootstrap/scss/helpers/_ratio.scss | 26 - .../scss/helpers/_stretched-link.scss | 15 - .../scss/helpers/_text-truncation.scss | 7 - .../scss/helpers/_visually-hidden.scss | 8 - .../sass/bootstrap/scss/mixins/_alert.scss | 11 - .../bootstrap/scss/mixins/_border-radius.scss | 78 - .../bootstrap/scss/mixins/_box-shadow.scss | 18 - .../bootstrap/scss/mixins/_breakpoints.scss | 127 - .../sass/bootstrap/scss/mixins/_buttons.scss | 133 - .../sass/bootstrap/scss/mixins/_caret.scss | 64 - .../sass/bootstrap/scss/mixins/_clearfix.scss | 9 - .../bootstrap/scss/mixins/_container.scss | 9 - .../bootstrap/scss/mixins/_deprecate.scss | 10 - .../sass/bootstrap/scss/mixins/_forms.scss | 134 - .../bootstrap/scss/mixins/_gradients.scss | 47 - .../sass/bootstrap/scss/mixins/_grid.scss | 120 - .../sass/bootstrap/scss/mixins/_image.scss | 16 - .../bootstrap/scss/mixins/_list-group.scss | 24 - .../sass/bootstrap/scss/mixins/_lists.scss | 7 - .../bootstrap/scss/mixins/_pagination.scss | 31 - .../bootstrap/scss/mixins/_reset-text.scss | 17 - .../sass/bootstrap/scss/mixins/_resize.scss | 6 - .../scss/mixins/_table-variants.scss | 21 - .../bootstrap/scss/mixins/_text-truncate.scss | 8 - .../bootstrap/scss/mixins/_transition.scss | 26 - .../bootstrap/scss/mixins/_utilities.scss | 68 - .../scss/mixins/_visually-hidden.scss | 29 - .../sass/bootstrap/scss/utilities/_api.scss | 47 - .../sass/bootstrap/scss/vendor/_rfs.scss | 312 - .../themes/adidoks/sass/common/_dark.scss | 329 - .../themes/adidoks/sass/common/_fonts.scss | 71 - .../themes/adidoks/sass/common/_global.scss | 256 - .../adidoks/sass/common/_variables.scss | 158 - .../adidoks/sass/components/_alerts.scss | 63 - .../adidoks/sass/components/_buttons.scss | 91 - .../themes/adidoks/sass/components/_code.scss | 62 - .../adidoks/sass/components/_comments.scss | 30 - .../themes/adidoks/sass/components/_doks.scss | 62 - .../adidoks/sass/components/_footnote.scss | 10 - .../adidoks/sass/components/_forms.scss | 19 - .../adidoks/sass/components/_images.scss | 48 - .../adidoks/sass/components/_search.scss | 77 - .../adidoks/sass/components/_syntax.scss | 131 - .../adidoks/sass/components/_tables.scss | 5 - .../themes/adidoks/sass/layouts/_footer.scss | 20 - .../themes/adidoks/sass/layouts/_header.scss | 267 - .../themes/adidoks/sass/layouts/_pages.scss | 106 - .../themes/adidoks/sass/layouts/_posts.scss | 28 - .../themes/adidoks/sass/layouts/_sidebar.scss | 107 - docs-site/themes/adidoks/sass/main.scss | 33 - .../adidoks/sass/theme/syntax-theme-dark.scss | 154 - .../sass/theme/syntax-theme-light.scss | 151 - docs-site/themes/adidoks/screenshot.png | Bin 225372 -> 0 bytes docs-site/themes/adidoks/static/_headers | 2 - .../adidoks/static/android-chrome-192x192.png | Bin 5765 -> 0 bytes .../adidoks/static/android-chrome-512x512.png | Bin 20786 -> 0 bytes .../adidoks/static/apple-touch-icon.png | Bin 5105 -> 0 bytes docs-site/themes/adidoks/static/doks.png | Bin 8211 -> 0 bytes docs-site/themes/adidoks/static/doks.svg | 1 - .../themes/adidoks/static/favicon-16x16.png | Bin 416 -> 0 bytes .../themes/adidoks/static/favicon-32x32.png | Bin 773 -> 0 bytes docs-site/themes/adidoks/static/favicon.ico | Bin 15406 -> 0 bytes .../fonts/vendor/jost/jost-v4-latin-500.woff | Bin 12888 -> 0 bytes .../fonts/vendor/jost/jost-v4-latin-500.woff2 | Bin 9828 -> 0 bytes .../vendor/jost/jost-v4-latin-500italic.woff | Bin 14504 -> 0 bytes .../vendor/jost/jost-v4-latin-500italic.woff2 | Bin 11108 -> 0 bytes .../fonts/vendor/jost/jost-v4-latin-700.woff | Bin 12928 -> 0 bytes .../fonts/vendor/jost/jost-v4-latin-700.woff2 | Bin 9820 -> 0 bytes .../vendor/jost/jost-v4-latin-700italic.woff | Bin 14616 -> 0 bytes .../vendor/jost/jost-v4-latin-700italic.woff2 | Bin 11112 -> 0 bytes .../vendor/jost/jost-v4-latin-italic.woff | Bin 13580 -> 0 bytes .../vendor/jost/jost-v4-latin-italic.woff2 | Bin 10352 -> 0 bytes .../vendor/jost/jost-v4-latin-regular.woff | Bin 11820 -> 0 bytes .../vendor/jost/jost-v4-latin-regular.woff2 | Bin 8864 -> 0 bytes docs-site/themes/adidoks/static/index.js | 146 - docs-site/themes/adidoks/static/js/search.js | 317 - docs-site/themes/adidoks/static/logo-doks.png | Bin 20786 -> 0 bytes .../adidoks/static/plugins/elasticlunr.min.js | 10 - .../themes/adidoks/static/site.webmanifest | 1 - .../adidoks/static/syntax-theme-dark.css | 151 - .../adidoks/static/syntax-theme-light.css | 151 - .../adidoks/templates/authors/list.html | 62 - .../adidoks/templates/authors/single.html | 72 - docs-site/themes/adidoks/templates/base.html | 47 - .../themes/adidoks/templates/blog/page.html | 36 - .../adidoks/templates/blog/section.html | 40 - .../themes/adidoks/templates/casts/page.html | 37 - .../adidoks/templates/casts/section.html | 42 - .../themes/adidoks/templates/docs/page.html | 40 - .../adidoks/templates/docs/section.html | 49 - docs-site/themes/adidoks/templates/index.html | 88 - .../templates/macros/docs-edit-page.html | 3 - .../templates/macros/docs-navigation.html | 107 - .../templates/macros/docs-sidebar.html | 42 - .../adidoks/templates/macros/docs-toc.html | 22 - .../adidoks/templates/macros/footer.html | 26 - .../themes/adidoks/templates/macros/head.html | 263 - .../adidoks/templates/macros/header.html | 70 - .../themes/adidoks/templates/macros/math.html | 26 - .../macros/page-publish-metadata.html | 3 - .../templates/macros/section-navigation.html | 22 - docs-site/themes/adidoks/templates/page.html | 57 - docs-site/themes/adidoks/templates/robots.txt | 4 - .../themes/adidoks/templates/section.html | 50 - docs-site/themes/adidoks/theme.toml | 17 - examples/demo/config/development.yaml | 12 +- examples/demo/config/scheduler.yaml | 6 +- examples/demo/config/test.yaml | 6 +- examples/demo/tests/cmd/scheduler.trycmd | 16 +- snipdoc.yml | 9 +- src/controller/fallback.html | 2 +- src/gen/templates/scheduler.t | 6 +- src/scheduler.rs | 9 +- ...heduler__tests__can_display_scheduler.snap | 2 +- starters/saas/config/development.yaml | 3 + tests/fixtures/scheduler/scheduler.yaml | 4 +- 393 files changed, 8020 insertions(+), 86612 deletions(-) rename docs-site/content/docs/{starters => extras}/_index.md (83%) rename docs-site/content/docs/{the-app => extras}/authentication.md (96%) rename docs-site/content/docs/{the-app => extras}/channels.md (99%) rename docs-site/content/docs/{the-app/middlewares.md => extras/pluggability.md} (61%) delete mode 100644 docs-site/content/docs/getting-started/cli.md delete mode 100644 docs-site/content/docs/getting-started/config.md delete mode 100644 docs-site/content/docs/getting-started/scaffold.md rename docs-site/{themes/adidoks/content/docs/contributing => content/docs/infrastructure}/_index.md (66%) rename docs-site/content/docs/{the-app => infrastructure}/cache.md (98%) rename docs-site/content/docs/{getting-started => infrastructure}/deployment.md (96%) rename docs-site/content/docs/{the-app => infrastructure}/storage.md (99%) create mode 100644 docs-site/content/docs/processing/_index.md rename docs-site/content/docs/{the-app => processing}/mailers.md (97%) create mode 100644 docs-site/content/docs/processing/scheduler.md rename docs-site/content/docs/{the-app => processing}/task.md (99%) rename docs-site/content/docs/{the-app => processing}/workers.md (57%) delete mode 100644 docs-site/content/docs/starters/rest-api.md delete mode 100644 docs-site/content/docs/starters/saas.md delete mode 100644 docs-site/content/docs/starters/service.md delete mode 100644 docs-site/content/docs/the-app/errors.md delete mode 100644 docs-site/content/docs/the-app/initializers.md create mode 100644 docs-site/content/docs/the-app/your-project.md create mode 100644 docs-site/package.json create mode 100644 docs-site/pnpm-lock.yaml delete mode 100644 docs-site/static/ahrefs_f06cfb9c2671c1b7a5b6eec0d47a07719bd6d5a2240b829cad6a3f40684fa370 create mode 100644 docs-site/static/apple-touch-icon.png create mode 100644 docs-site/static/bench-db-q.svg create mode 100644 docs-site/static/bench-no-db.svg create mode 100644 docs-site/static/bg.svg create mode 100644 docs-site/static/cloud-bg.svg create mode 100644 docs-site/static/cloud.svg create mode 100644 docs-site/static/favicon-16x16.png create mode 100644 docs-site/static/favicon-32x32.png create mode 100644 docs-site/static/header.svg create mode 100644 docs-site/static/icon.svg delete mode 100644 docs-site/static/images/logo.png rename docs-site/{themes/adidoks => }/static/js/main.js (58%) create mode 100644 docs-site/static/js/search.js create mode 100644 docs-site/static/mountain-bg.svg create mode 100644 docs-site/static/plugins/elasticlunr.min.js delete mode 100644 docs-site/static/processed_images/logo.4aeb53be0cc35cb8.png delete mode 100644 docs-site/static/processed_images/logo.8858825d70de731a.png delete mode 100644 docs-site/static/processed_images/logo.8da33dd02b6224b7.png create mode 100644 docs-site/static/styles/styles.css create mode 100644 docs-site/static/top.svg create mode 100644 docs-site/styles/styles.css create mode 100644 docs-site/tailwind.config.js rename docs-site/{themes/adidoks => }/templates/404.html (100%) create mode 100644 docs-site/templates/base.html create mode 100644 docs-site/templates/blog/page.html create mode 100644 docs-site/templates/blog/section.html create mode 100644 docs-site/templates/casts/page.html create mode 100644 docs-site/templates/casts/section.html create mode 100644 docs-site/templates/docs/page.html create mode 100644 docs-site/templates/docs/section.html create mode 100644 docs-site/templates/index.html create mode 100644 docs-site/templates/macros/docs-edit-page.html create mode 100644 docs-site/templates/macros/docs-navigation.html create mode 100644 docs-site/templates/macros/docs-sidebar.html create mode 100644 docs-site/templates/macros/docs-toc.html create mode 100644 docs-site/templates/macros/footer.html create mode 100644 docs-site/templates/macros/header.html rename docs-site/{themes/adidoks => }/templates/macros/javascript.html (97%) create mode 100644 docs-site/templates/macros/page-publish-metadata.html rename docs-site/{themes/adidoks => }/templates/macros/youtube.html (67%) create mode 100644 docs-site/templates/page.html create mode 100644 docs-site/templates/section.html rename docs-site/templates/{.gitkeep => taxonomy_list.html} (100%) create mode 100644 docs-site/templates/taxonomy_single.html delete mode 100644 docs-site/themes/adidoks/.gitignore delete mode 100644 docs-site/themes/adidoks/CODE_OF_CONDUCT.md delete mode 100644 docs-site/themes/adidoks/CONTRIBUTING.md delete mode 100644 docs-site/themes/adidoks/LICENSE delete mode 100644 docs-site/themes/adidoks/README.md delete mode 100644 docs-site/themes/adidoks/config.toml delete mode 100644 docs-site/themes/adidoks/config.toml.example delete mode 100644 docs-site/themes/adidoks/content/_index.fi.md delete mode 100644 docs-site/themes/adidoks/content/_index.md delete mode 100644 docs-site/themes/adidoks/content/authors/_index.md delete mode 100644 docs-site/themes/adidoks/content/authors/aaran-xu.md delete mode 100644 docs-site/themes/adidoks/content/blog/_index.md delete mode 100644 docs-site/themes/adidoks/content/blog/hello-world.md delete mode 100644 docs-site/themes/adidoks/content/blog/markdown-syntax.md delete mode 100644 docs-site/themes/adidoks/content/blog/math-typesetting.md delete mode 100644 docs-site/themes/adidoks/content/blog/placeholder-text.md delete mode 100644 docs-site/themes/adidoks/content/blog/say-hello-to-zola-doks.md delete mode 100644 docs-site/themes/adidoks/content/docs/_index.md delete mode 100644 docs-site/themes/adidoks/content/docs/contributing/code-of-conduct.md delete mode 100644 docs-site/themes/adidoks/content/docs/contributing/how-to-contribute.md delete mode 100644 docs-site/themes/adidoks/content/docs/getting-started/_index.md delete mode 100644 docs-site/themes/adidoks/content/docs/getting-started/introduction.md delete mode 100644 docs-site/themes/adidoks/content/docs/getting-started/quick-start.md delete mode 100644 docs-site/themes/adidoks/content/docs/help/_index.md delete mode 100644 docs-site/themes/adidoks/content/docs/help/faq.md delete mode 100644 docs-site/themes/adidoks/content/privacy-policy/_index.md delete mode 100644 docs-site/themes/adidoks/netlify.toml delete mode 100644 docs-site/themes/adidoks/sass/_custom.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/LICENSE delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/README.md delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.rtl.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.rtl.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.rtl.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.rtl.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.rtl.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.rtl.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.rtl.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.rtl.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.rtl.min.css delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap.rtl.min.css.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.bundle.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.bundle.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.bundle.min.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.bundle.min.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.esm.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.esm.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.esm.min.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.esm.min.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.min.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/dist/js/bootstrap.min.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/alert.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/alert.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/base-component.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/base-component.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/button.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/button.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/carousel.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/carousel.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/collapse.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/collapse.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/data.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/data.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/event-handler.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/event-handler.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/manipulator.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/manipulator.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/selector-engine.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dom/selector-engine.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dropdown.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/dropdown.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/modal.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/modal.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/offcanvas.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/offcanvas.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/popover.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/popover.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/scrollspy.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/scrollspy.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/tab.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/tab.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/toast.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/toast.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/tooltip.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/dist/tooltip.js.map delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/alert.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/base-component.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/button.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/carousel.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/collapse.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/dom/data.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/dom/event-handler.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/dom/manipulator.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/dom/selector-engine.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/dropdown.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/modal.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/offcanvas.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/popover.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/scrollspy.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/tab.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/toast.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/tooltip.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/util/index.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/util/sanitizer.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/js/src/util/scrollbar.js delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/package.json delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_accordion.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_alert.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_badge.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_breadcrumb.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_button-group.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_buttons.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_card.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_carousel.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_close.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_containers.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_dropdown.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_forms.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_functions.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_grid.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_helpers.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_images.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_list-group.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_mixins.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_modal.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_nav.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_navbar.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_offcanvas.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_pagination.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_popover.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_progress.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_reboot.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_root.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_spinners.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_tables.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_toasts.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_tooltip.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_transitions.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_type.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_utilities.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/_variables.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/bootstrap-grid.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/bootstrap-reboot.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/bootstrap-utilities.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/bootstrap.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_floating-labels.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_form-check.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_form-control.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_form-range.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_form-select.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_form-text.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_input-group.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_labels.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/forms/_validation.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_clearfix.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_colored-links.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_position.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_ratio.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_stretched-link.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_text-truncation.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/helpers/_visually-hidden.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_alert.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_border-radius.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_box-shadow.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_breakpoints.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_buttons.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_caret.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_clearfix.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_container.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_deprecate.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_forms.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_gradients.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_grid.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_image.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_list-group.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_lists.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_pagination.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_reset-text.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_resize.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_table-variants.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_text-truncate.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_transition.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_utilities.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/mixins/_visually-hidden.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/utilities/_api.scss delete mode 100644 docs-site/themes/adidoks/sass/bootstrap/scss/vendor/_rfs.scss delete mode 100644 docs-site/themes/adidoks/sass/common/_dark.scss delete mode 100644 docs-site/themes/adidoks/sass/common/_fonts.scss delete mode 100644 docs-site/themes/adidoks/sass/common/_global.scss delete mode 100644 docs-site/themes/adidoks/sass/common/_variables.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_alerts.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_buttons.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_code.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_comments.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_doks.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_footnote.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_forms.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_images.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_search.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_syntax.scss delete mode 100644 docs-site/themes/adidoks/sass/components/_tables.scss delete mode 100644 docs-site/themes/adidoks/sass/layouts/_footer.scss delete mode 100644 docs-site/themes/adidoks/sass/layouts/_header.scss delete mode 100644 docs-site/themes/adidoks/sass/layouts/_pages.scss delete mode 100644 docs-site/themes/adidoks/sass/layouts/_posts.scss delete mode 100644 docs-site/themes/adidoks/sass/layouts/_sidebar.scss delete mode 100644 docs-site/themes/adidoks/sass/main.scss delete mode 100644 docs-site/themes/adidoks/sass/theme/syntax-theme-dark.scss delete mode 100644 docs-site/themes/adidoks/sass/theme/syntax-theme-light.scss delete mode 100644 docs-site/themes/adidoks/screenshot.png delete mode 100644 docs-site/themes/adidoks/static/_headers delete mode 100644 docs-site/themes/adidoks/static/android-chrome-192x192.png delete mode 100644 docs-site/themes/adidoks/static/android-chrome-512x512.png delete mode 100644 docs-site/themes/adidoks/static/apple-touch-icon.png delete mode 100644 docs-site/themes/adidoks/static/doks.png delete mode 100644 docs-site/themes/adidoks/static/doks.svg delete mode 100644 docs-site/themes/adidoks/static/favicon-16x16.png delete mode 100644 docs-site/themes/adidoks/static/favicon-32x32.png delete mode 100644 docs-site/themes/adidoks/static/favicon.ico delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2 delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2 delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2 delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2 delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2 delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff delete mode 100644 docs-site/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2 delete mode 100644 docs-site/themes/adidoks/static/index.js delete mode 100644 docs-site/themes/adidoks/static/js/search.js delete mode 100644 docs-site/themes/adidoks/static/logo-doks.png delete mode 100644 docs-site/themes/adidoks/static/plugins/elasticlunr.min.js delete mode 100644 docs-site/themes/adidoks/static/site.webmanifest delete mode 100644 docs-site/themes/adidoks/static/syntax-theme-dark.css delete mode 100644 docs-site/themes/adidoks/static/syntax-theme-light.css delete mode 100644 docs-site/themes/adidoks/templates/authors/list.html delete mode 100644 docs-site/themes/adidoks/templates/authors/single.html delete mode 100644 docs-site/themes/adidoks/templates/base.html delete mode 100644 docs-site/themes/adidoks/templates/blog/page.html delete mode 100644 docs-site/themes/adidoks/templates/blog/section.html delete mode 100644 docs-site/themes/adidoks/templates/casts/page.html delete mode 100644 docs-site/themes/adidoks/templates/casts/section.html delete mode 100644 docs-site/themes/adidoks/templates/docs/page.html delete mode 100644 docs-site/themes/adidoks/templates/docs/section.html delete mode 100644 docs-site/themes/adidoks/templates/index.html delete mode 100644 docs-site/themes/adidoks/templates/macros/docs-edit-page.html delete mode 100644 docs-site/themes/adidoks/templates/macros/docs-navigation.html delete mode 100644 docs-site/themes/adidoks/templates/macros/docs-sidebar.html delete mode 100644 docs-site/themes/adidoks/templates/macros/docs-toc.html delete mode 100644 docs-site/themes/adidoks/templates/macros/footer.html delete mode 100644 docs-site/themes/adidoks/templates/macros/head.html delete mode 100644 docs-site/themes/adidoks/templates/macros/header.html delete mode 100644 docs-site/themes/adidoks/templates/macros/math.html delete mode 100644 docs-site/themes/adidoks/templates/macros/page-publish-metadata.html delete mode 100644 docs-site/themes/adidoks/templates/macros/section-navigation.html delete mode 100644 docs-site/themes/adidoks/templates/page.html delete mode 100644 docs-site/themes/adidoks/templates/robots.txt delete mode 100644 docs-site/themes/adidoks/templates/section.html delete mode 100644 docs-site/themes/adidoks/theme.toml diff --git a/README.md b/README.md index 539d7fdad..e23b707de 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ -

Loco

+

Welcome to Loco

@@ -18,13 +18,40 @@ English · [中文](./README-zh_CN.md) - # Loco - > Loco is strongly inspired by Rails. If you know Rails and Rust, you'll feel at home. If you only know Rails and new to Rust, you'll find Loco refreshing. We do not assume you know Rails. +## What's Loco? +`Loco` is strongly inspired by Rails. If you know Rails and Rust, you'll feel at home. If you only know Rails and new to Rust, you'll find Loco refreshing. We do not assume you know Rails. -To get started quickly and see Loco in action, check out our [casts video](https://loco.rs/casts/). It's a great way to familiarize yourself with the framework and see some of its key features in use. +For a deeper dive into how Loco works, including detailed guides, examples, and API references, check out our [documentation website](https://loco.rs). - ## Quick Start + +## Features of Loco: + +* `Convention Over Configuration:` Similar to Ruby on Rails, Loco emphasizes simplicity and productivity by reducing the need for boilerplate code. It uses sensible defaults, allowing developers to focus on writing business logic rather than spending time on configuration. + +* `Rapid Development:` Aim for high developer productivity, Loco’s design focuses on reducing boilerplate code and providing intuitive APIs, allowing developers to iterate quickly and build prototypes with minimal effort. + +* `ORM Integration:` Model your business with robust entities, eliminating the need to write SQL. Define relationships, validation, and custom logic directly on your entities for enhanced maintainability and scalability. + +* `Controllers`: Handle web requests parameters, body, validation, and render a response that is content-aware. We use Axum for the best performance, simplicity, and extensibility. Controllers also allow you to easily build middlewares, which can be used to add logic such as authentication, logging, or error handling before passing requests to the main controller actions. + +* `Views:` Loco can integrate with templating engines to generate dynamic HTML content from templates. + +* `Background Jobs:` Perform compute or I/O intensive jobs in the background with a Redis backed queue, or with threads. Implementing a worker is as simple as implementing a perform function for the Worker trait. + +* `Scheduler:` Simplifies the traditional, often cumbersome crontab system, making it easier and more elegant to schedule tasks or shell scripts. + +* `Mailers:` A mailer will deliver emails in the background using the existing loco background worker infrastructure. It will all be seamless for you. + +* `Storage:` In Loco Storage, we facilitate working with files through multiple operations. Storage can be in-memory, on disk, or use cloud services such as AWS S3, GCP, and Azure. + +* `Cache:` Loco provides an cache layer to improve application performance by storing frequently accessed data. + +So see more Loco features, check out our [documentation website](https://loco.rs/docs/the-app/your-project/). + + + +## Getting Started ```sh cargo install loco-cli @@ -32,37 +59,25 @@ cargo install sea-orm-cli # Only when DB is needed ``` - Now you can create your new app (choose "`SaaS` app"). +Now you can create your new app (choose "`SaaS` app"). + ```sh ❯ loco new ✔ ❯ App name? · myapp ✔ ❯ What would you like to build? · SaaS app (with DB and user auth) +✔ ❯ Select a DB Provider · Sqlite +✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) +✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) 🚂 Loco app generated successfully in: -myapp -``` - - - -To configure a database , please run a local postgres database with loco:loco and a db named [insert app]_development. - -```sh -docker run -d -p 5432:5432 \ - -e POSTGRES_USER=loco \ - -e POSTGRES_DB=myapp_development \ - -e POSTGRES_PASSWORD="loco" \ - postgres:15.3-alpine +myapp/ ``` - - A more advanced set of `compose.yaml` and `Dockerfiles` that include Redis and the `mailtutan` mailer are available for [each starter on GitHub](https://github.com/loco-rs/loco/blob/master/starters/saas/.devcontainer/compose.yaml). - Now `cd` into your `myapp` and start your app: - - + ```sh $ cargo loco start @@ -86,13 +101,6 @@ listening on port 5150 ``` -## Project Status -+ Stateless APIs -+ Complete `SaaS` products with user authentication -+ Purpose-built services such as ML inference endpoints -+ Full stack projects with separate frontend project integrated with Loco -+ Hobby projects full-stack with backend and HTML frontend - ## Powered by Loco + [SpectralOps](https://spectralops.io) - various services powered by Loco framework diff --git a/docs-site/.gitignore b/docs-site/.gitignore index 364fdec1a..b4184251f 100644 --- a/docs-site/.gitignore +++ b/docs-site/.gitignore @@ -1 +1,2 @@ public/ +node_modules/ \ No newline at end of file diff --git a/docs-site/config.toml b/docs-site/config.toml index 8dbffd789..531c61105 100644 --- a/docs-site/config.toml +++ b/docs-site/config.toml @@ -3,12 +3,6 @@ base_url = "https://loco.rs" title = "Loco" description = "Loco is a productivity-first web and service framework in Rust" -# The site theme to use. -theme = "adidoks" - -# The default language; used in feeds and search index -# Note: the search index doesn't support Chinese/Japanese/Korean Languages -default_language = "en" # Whether to automatically compile all Sass files in the sass directory compile_sass = true @@ -24,86 +18,21 @@ taxonomies = [ { name = "authors" }, # Basic definition: no feed or pagination ] + # Whether to build a search index to be used later on by a JavaScript library -# When set to "true", a search index is built from the pages and section -# content for `default_language`. build_search_index = true -[search] -# Whether to include the title of the page/section in the index -include_title = true -# Whether to include the description of the page/section in the index -include_description = false -# Whether to include the rendered content of the page/section in the index -include_content = true - [markdown] -# Whether to do syntax highlighting. -# Theme can be customised by setting the `highlight_theme` -# variable to a theme supported by Zola +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola highlight_theme = "css" highlight_code = true highlight_themes_css = [ { theme = "OneHalfDark", filename = "syntax-theme-dark.css" }, { theme = "OneHalfLight", filename = "syntax-theme-light.css" }, ] - [extra] # Put all your custom variables here -author = "Dotan Nahum, Elad Kaplan" -github = "https://github.com/loco-rs/loco" -twitter = "https://twitter.com/jondot" -email = "dotan@rng0.io" - -# If running on netlify.app site, set to true -is_netlify = true - -# Set HTML file language -language_code = "en-US" - -# Set theme-color meta tag for Chrome browser -theme_color = "#fff" - -# More about site's title -title_separator = "|" # set as |, -, _, etc -title_addition = "Loco" - - -# Set date format in blog publish metadata -timeformat = "%B %e, %Y" # e.g. June 14, 2021 -timezone = "America/New_York" - -# Edit page on reposity or not -edit_page = false -docs_repo = "https://github.com/loco-rs/loco" -repo_branch = "master" - -## Math settings -# options: true, false. Enable math support globally, -# default: false. You can always enable math on a per page. -math = false -library = "katex" # options: "katex", "mathjax". default is "katex". - -## Open Graph + Twitter Cards -[extra.open] -enable = true -# this image will be used as fallback if a page has no image of its own -image = "images/logo.png" -twitter_site = "jondot" -twitter_creator = "jondot" -og_locale = "en_US" - -## JSON-LD -[extra.schema] -type = "Organization" -logo = "images/train" -twitter = "https://twitter.com/jondot" -linked_in = "" -github = "https://github.com/loco-rs/loco" -section = "blog" # see config.extra.main~url -## Sitelinks Search Box -site_links_search_box = false - # Menu items [[extra.menu.main]] @@ -123,7 +52,6 @@ name = "Casts" section = "casts" url = "/casts/" - [[extra.menu.social]] name = "Twitter" pre = '' @@ -137,23 +65,135 @@ url = "https://github.com/loco-rs/loco" post = "v0.1.0" weight = 20 -[[extra.menu.social]] -name = "Discord" -pre = '' -url = "https://discord.gg/fTvyBzwKS8" -post = "v0.1.0" -weight = 10 - -# Footer contents -[extra.footer] -info = '' -[[extra.footer.nav]] -name = "Privacy" -url = "/privacy-policy/" -weight = 10 - -[[extra.footer.nav]] -name = "Code of Conduct" -url = "/docs/contributing/code-of-conduct/" -weight = 20 +[[extra.homepage.features]] +name = "Models" +description = 'Model your business with rich entities and avoid writing SQL, backed by SeaORM. Build relations, validation and custom logic on your entities for the best maintainability.' +example = '''```rust +impl Model { + pub async fn find_by_email( + db: &DatabaseConnection, + email: &str) + -> ModelResult { + users::Entity::find().filter( + query::condition().eq(users::Column::Email, email).build() + ) + .one(db).await? + .ok_or_else(|| ModelError::EntityNotFound) + } + + pub async create_report(&self, ctx: &AppContext) -> Result<()>{ + ReportWorker::perform_later( + &ctx, + ReportArgs{ user_id: self.id } + ).await?; + } +} + +``` +''' + +[[extra.homepage.features]] +name = "Controllers" +description = 'Handle Web requests parameters, body, validation, and render a response that is content-aware. We use Axum for the best performance, simplicity and extensibility.' +example = '''```rust +pub async fn get_one( + Format(respond_to): Format, + Path(id): Path, + State(ctx): State, +) -> Result { + let res = notes::Entity::find_by_id(id).one(&ctx.db).await?; + match res { + Ok(item) => match respond_to { + RespondTo::Html => format::html(item_view(&item)), + _ => format::json(item), + }, + Err(err) => Err(err), + } +} + +pub fn routes() -> Routes { + Routes::new() + .prefix("notes") + .add("/:id", get(get_one)) +} +``` +''' + +[[extra.homepage.features]] +name = "Views" +description = 'Use server-rendered templates with Tera or JSON. Loco can render views on the server or work with a frontend app seamlessly. Configure your fullstack set up any way you like.' +example = '''```rust + +// Literals +format::text("Loco") + +// Tera view engine +format::render().view(v, "home/hello.html", json!({})) + +// strongly typed JSON responsed, backed by `serde` +format::json(Health { ok: true }) + +// Etags, cookies, and more +format::render().etag("loco-etag")?.empty() + +``` +''' + +[[extra.homepage.features]] +name = "Background Jobs" +description = 'Perform compute or I/O intensive jobs in the background with a Redis backed queue, or with threads. Implementing a worker is as simple as implementing a perform function for the Worker trait.' +example = '''```rust +impl worker::Worker for DownloadWorker { + async fn perform(&self, args: DownloadArgs) -> worker::Result<()> { + println!("Creating users report. Requested by {}", args.user_guid); + let all = users::Entity::find() + .all(&self.ctx.db) + .await + .map_err(Box::from)?; + for user in &all { + println!("user: {}", user.id); + } + Ok(()) + } +} +``` +''' + +[[extra.homepage.features]] +name = "Deployment" +description = 'Easily generate deployment configurations with a guided CLI interface. Select from deployment options for tailored deployment setups.' +example = '''```sh + +$ cargo loco generate deployment +? ❯ Choose your deployment › +❯ Docker +❯ Shuttle +❯ Nginx + +.. +✔ ❯ Choose your deployment · Docker +skipped (exists): "dockerfile" +added: ".dockerignore" + +``` +''' + +[[extra.homepage.features]] +name = "Scheduler" +description = 'Simplifies the traditional, often cumbersome crontab system, making it easier and more elegant to schedule tasks or shell scripts.' +example = '''```yaml +jobs: + add text: + run: "echo loco >> ./scheduler.txt" + shell: true + schedule: "*/1 * * * * *" + tags: ["base", "infre"] + + list if users: + run: "user_report" + schedule: "Run every 3 hours" + tags: ["base", "users"] + +``` +''' diff --git a/docs-site/content/blog/angular-frontend.md b/docs-site/content/blog/angular-frontend.md index 203ec3128..a1c038159 100644 --- a/docs-site/content/blog/angular-frontend.md +++ b/docs-site/content/blog/angular-frontend.md @@ -1,6 +1,6 @@ +++ title = "Creating Frontend Website Using Angular" -description = "How to serve a frontend website using Angular" +description = "Setting up a Loco app for serving an Angular clientside app is easy. Learn how to configure and set up a full-stack Angular app with Loco." date = 2024-01-25T18:03:52+01:00 updated = 2024-01-25T18:03:52+01:00 draft = false @@ -10,7 +10,6 @@ template = "blog/page.html" authors = ["LimpidCrypto"] +++ -# Loco with Angular ## Overview diff --git a/docs-site/content/blog/axum-session.md b/docs-site/content/blog/axum-session.md index 1b0bb9636..ac0ff87ff 100644 --- a/docs-site/content/blog/axum-session.md +++ b/docs-site/content/blog/axum-session.md @@ -1,6 +1,6 @@ +++ title = "Building a Rust App with Axum Session" -description = "Building a Rust App with Axum Session" +description = "Add sessions to your app with Axum Sessions. Configure a session provider, and set up Axum Session and Loco with simple app hooks." date = 2023-12-19T09:19:42+00:00 updated = 2023-12-19T09:19:42+00:00 draft = false diff --git a/docs-site/content/blog/deploy-aws.md b/docs-site/content/blog/deploy-aws.md index fcbaef587..51d18f203 100644 --- a/docs-site/content/blog/deploy-aws.md +++ b/docs-site/content/blog/deploy-aws.md @@ -1,6 +1,6 @@ +++ title = "Deploying Rust App with Terraform on AWS Fargate" -description = "Deploying Rust App with Terraform on AWS Fargate" +description = "Learn how to deploy a Loco app with Terraform (IaC). Generate a deployment with Loco generators and set it up step-by-step." date = 2023-12-20T16:04:40+00:00 updated = 2023-12-16T04:20:40+00:00 draft = false diff --git a/docs-site/content/blog/frontend-website.md b/docs-site/content/blog/frontend-website.md index e91a435ba..f0d5e1a14 100644 --- a/docs-site/content/blog/frontend-website.md +++ b/docs-site/content/blog/frontend-website.md @@ -1,6 +1,6 @@ +++ title = "Creating Frontend Website" -description = "How to serve a frontend website" +description = "Build a REST API quickly with Loco and then follow by building a React frontend app to use it. Learn about generators, configuring asset serving and client-side apps with Loco." date = 2023-12-14T09:19:42+00:00 updated = 2023-12-14T09:19:42+00:00 draft = false diff --git a/docs-site/content/blog/hello-world.md b/docs-site/content/blog/hello-world.md index 566d8b07b..bbe6922e1 100644 --- a/docs-site/content/blog/hello-world.md +++ b/docs-site/content/blog/hello-world.md @@ -1,6 +1,6 @@ +++ title = "What if Rails was Built on Rust?" -description = "Introducing Loco a Rails-inspired Rust web framework" +description = "Introducing Loco: a Rails-inspired Rust web framework. See how Rust can be as expressive as Ruby and how we can build a good deal of magic that Rails has with Rust." date = 2023-11-24T09:19:42+00:00 updated = 2023-11-24T09:19:42+00:00 draft = false @@ -12,7 +12,7 @@ authors = ["Team Loco"] +++
- + **What if [Rails](https://rubyonrails.org) was built on Rust and not Ruby?** diff --git a/docs-site/content/casts/001-dynamic-responses-and-content-types.md b/docs-site/content/casts/001-dynamic-responses-and-content-types.md index 924b18bf5..c93b15693 100644 --- a/docs-site/content/casts/001-dynamic-responses-and-content-types.md +++ b/docs-site/content/casts/001-dynamic-responses-and-content-types.md @@ -1,6 +1,6 @@ +++ title = "Dynamic responses and content types" -description = "Dynamic responses and content types" +description = "Learn how to respond to incoming requests with the appropriate content type. Match on the incoming format, and render JSON, HTML or other types of responses." date = 2024-06-10T09:19:42+00:00 updated = 2024-06-10T09:19:42+00:00 draft = false diff --git a/docs-site/content/casts/002-routes-and-prefixes.md b/docs-site/content/casts/002-routes-and-prefixes.md index b32805288..e0ff8787b 100644 --- a/docs-site/content/casts/002-routes-and-prefixes.md +++ b/docs-site/content/casts/002-routes-and-prefixes.md @@ -1,6 +1,6 @@ +++ title = "Routes and prefixes" -description = "Routes and prefixes" +description = "Routes in Loco are derived from how Axum does Routes. Learn how to shape your API and draw your routes, from an individual controller to your global app route set up." date = 2024-06-13T09:19:42+00:00 updated = 2024-06-13T09:19:42+00:00 draft = false diff --git a/docs-site/content/casts/003-scaffolding-crud-with-html.md b/docs-site/content/casts/003-scaffolding-crud-with-html.md index 1fdfc58a1..cdee166f7 100644 --- a/docs-site/content/casts/003-scaffolding-crud-with-html.md +++ b/docs-site/content/casts/003-scaffolding-crud-with-html.md @@ -1,6 +1,6 @@ +++ title = "Scaffolding full CRUD with HTML views" -description = "Scaffolding full CRUD with HTML views" +description = "Loco generators are very powerful. Generate a full CRUD app with a single command, by including the main entity type and its set of fields. Loco will generate models, controllers, views, and migrations for you." date = 2024-06-14T09:19:42+00:00 updated = 2024-06-14T09:19:42+00:00 draft = false diff --git a/docs-site/content/casts/004-creating-tasks.md b/docs-site/content/casts/004-creating-tasks.md index a935819c5..686a21e3a 100644 --- a/docs-site/content/casts/004-creating-tasks.md +++ b/docs-site/content/casts/004-creating-tasks.md @@ -1,6 +1,6 @@ +++ title = "Creating tasks" -description = "Creating tasks" +description = "Ever reached out to write a small script to reset a user password? send email notifications to your users? You can use Tasks in Loco to write these operational bits in pure Rust and access your full app from your task." date = 2024-06-18T09:19:42+00:00 updated = 2024-06-18T09:19:42+00:00 draft = false diff --git a/docs-site/content/casts/005-testing-tasks.md b/docs-site/content/casts/005-testing-tasks.md index c2bc2a88f..6ae56741e 100644 --- a/docs-site/content/casts/005-testing-tasks.md +++ b/docs-site/content/casts/005-testing-tasks.md @@ -1,6 +1,6 @@ +++ title = "Testing tasks" -description = "Testing tasks" +description = "See how tasks in Loco are a simple linear workflow with access to your full app context, and how to easily test them. You can write a linear business workflow and test it giving it input and asserting its output." date = 2024-06-18T09:20:42+00:00 updated = 2024-06-18T09:20:42+00:00 draft = false diff --git a/docs-site/content/casts/006-mailers.md b/docs-site/content/casts/006-mailers.md index 62880fd4c..9ee3a8431 100644 --- a/docs-site/content/casts/006-mailers.md +++ b/docs-site/content/casts/006-mailers.md @@ -1,6 +1,6 @@ +++ title = "Mailers" -description = "Mailers" +description = "Learn how to send emails from your app. As it turns out, emails are still an important core feature in business apps. You can send emails from multiple types of providers, and enjoy a great developer experience." date = 2024-06-27T09:20:42+00:00 updated = 2024-06-27T09:20:42+00:00 draft = false diff --git a/docs-site/content/casts/007-htmx.md b/docs-site/content/casts/007-htmx.md index 565b71441..4a298ce96 100644 --- a/docs-site/content/casts/007-htmx.md +++ b/docs-site/content/casts/007-htmx.md @@ -1,6 +1,6 @@ +++ title = "Full CRUD with HTMX scaffold generator" -description = "Full CRUD with HTMX scaffold generator" +description = "Learn how to use HTMX with Loco. Using Loco's core generator scaffolding abilities, we added support for generating a set of HTMX powered views, which makes it a joy to build a fullstack UI app." date = 2024-06-27T14:20:42+00:00 updated = 2024-06-27T14:20:42+00:00 draft = false diff --git a/docs-site/content/docs/starters/_index.md b/docs-site/content/docs/extras/_index.md similarity index 83% rename from docs-site/content/docs/starters/_index.md rename to docs-site/content/docs/extras/_index.md index 1084c4930..c11595fac 100644 --- a/docs-site/content/docs/starters/_index.md +++ b/docs-site/content/docs/extras/_index.md @@ -1,10 +1,10 @@ +++ -title = "Starters" +title = "Extras" description = "" date = 2025-05-01T18:00:00+00:00 updated = 2021-05-01T18:00:00+00:00 template = "docs/section.html" sort_by = "weight" -weight = 10 +weight = 5 draft = false +++ diff --git a/docs-site/content/docs/the-app/authentication.md b/docs-site/content/docs/extras/authentication.md similarity index 96% rename from docs-site/content/docs/the-app/authentication.md rename to docs-site/content/docs/extras/authentication.md index 4f3c51cf9..561fd5ffe 100644 --- a/docs-site/content/docs/the-app/authentication.md +++ b/docs-site/content/docs/extras/authentication.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:20:00+00:00 updated = 2021-05-01T18:20:00+00:00 draft = false -weight = 31 +weight = 1 sort_by = "weight" template = "docs/page.html" @@ -89,7 +89,7 @@ The response includes a JWT token for authentication, user ID, name, and verific } ``` -- **Token**: A JWT token enabling requests to authentication endpoints. Refer to the [configuration documentation](@/docs/getting-started/config.md) to customize the default token expiration and ensure that the secret differs between environments. +- **Token**: A JWT token enabling requests to authentication endpoints. Refer to the [configuration documentation](@/docs/the-app/your-project.md#your-app-configuration) to customize the default token expiration and ensure that the secret differs between environments. - **pid** - A unique identifier generated when creating a new user. - **Name** - The user's name associated with the account. - **Is Verified** - A flag indicating whether the user has verified their account. diff --git a/docs-site/content/docs/the-app/channels.md b/docs-site/content/docs/extras/channels.md similarity index 99% rename from docs-site/content/docs/the-app/channels.md rename to docs-site/content/docs/extras/channels.md index fa3a62b50..bf734a524 100644 --- a/docs-site/content/docs/the-app/channels.md +++ b/docs-site/content/docs/extras/channels.md @@ -4,7 +4,7 @@ description = "" date = 2024-01-21T18:20:00+00:00 updated = 2024-01-21T18:20:00+00:00 draft = false -weight = 32 +weight = 2 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/the-app/middlewares.md b/docs-site/content/docs/extras/pluggability.md similarity index 61% rename from docs-site/content/docs/the-app/middlewares.md rename to docs-site/content/docs/extras/pluggability.md index a5d4e8c8b..12089c4d4 100644 --- a/docs-site/content/docs/the-app/middlewares.md +++ b/docs-site/content/docs/extras/pluggability.md @@ -1,10 +1,10 @@ +++ -title = "Middleware (Layer)" +title = "Pluggability" description = "" -date = 2021-05-01T18:20:00+00:00 -updated = 2021-05-01T18:20:00+00:00 +date = 2021-05-01T18:10:00+00:00 +updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 31 +weight = 3 sort_by = "weight" template = "docs/page.html" @@ -12,9 +12,250 @@ template = "docs/page.html" lead = "" toc = true top = false -flair = [] +flair =[] +++ +## Error levels and options + +As a reminder, error levels and their logging can be controlled in your `development.yaml`: + +### Logger + +```yaml +# Application logging configuration +logger: + # Enable or disable logging. + enable: true + # Enable pretty backtrace (sets RUST_BACKTRACE=1) + pretty_backtrace: true + # Log level, options: trace, debug, info, warn or error. + level: debug + # Define the logging format. options: compact, pretty or json + format: compact + # By default the logger has filtering only logs that came from your code or logs that came from `loco` framework. to see all third party libraries + # Uncomment the line below to override to see all third party libraries you can enable this config and override the logger filters. + # override_filter: trace +``` + + +The most important knobs here are: + +* `level` - your standard logging levels. Typically `debug` or `trace` in development. In production choose what you are used to. +* `pretty_backtrace` - provides clear, concise path to the line of code causing the error. use `true` in development and turn off in production. In cases where you are debugging things in production and need some extra hand, you can turn it on and then off when you're done. + +### Controller logging + +In `server.middlewares` you will find: + +```yaml +server: + middlewares: + # + # ... + # + # Generating a unique request ID and enhancing logging with additional information such as the start and completion of request processing, latency, status code, and other request details. + logger: + # Enable/Disable the middleware. + enable: true +``` + +You should enable it to get detailed request errors and a useful `request-id` that can help collate multiple request-scoped errors. + + +### Database + +You have the option of logging live SQL queries, in your `database` section: + +```yaml +database: + # When enabled, the sql query will be logged. + enable_logging: false +``` + + +### Operating around errors + +You'll be mostly looking at your terminal for errors while developing your app, it can look something like this: + +```bash +2024-02-xxx DEBUG http-request: tower_http::trace::on_request: started processing request http.method=GET http.uri=/notes http.version=HTTP/1.1 http.user_agent=curl/8.1.2 environment=development request_id=8622e624-9bda-49ce-9730-876f2a8a9a46 +2024-02-xxx11T12:19:25.295954Z ERROR http-request: loco_rs::controller: controller_error error.msg=invalid type: string "foo", expected a sequence error.details=JSON(Error("invalid type: string \"foo\", expected a sequence", line: 0, column: 0)) error.chain="" http.method=GET http.uri=/notes http.version=HTTP/1.1 http.user_agent=curl/8.1.2 environment=development request_id=8622e624-9bda-49ce-9730-876f2a8a9a46 +``` + +Usually you can expect the following from errors: + +* `error.msg` a `to_string()` version of an error, for operators. +* `error.detail` a debug representation of an error, for developers. +* An error **type** e.g. `controller_error` as the primary message tailored for searching, rather than a verbal error message. +* Errors are logged as _tracing_ events and spans, so that you can build any infrastructure you want to provide custom tracing subscribers. Check out the [prometheus](https://github.com/loco-rs/loco/blob/master/loco-extras/src/initializers/prometheus.rs) example in `loco-extras`. + +Notes: + +* An _error chain_ was experimented with, but provides little value in practice. +* Errors that an end user sees are a completely different thing. We strive to provide **minimal internal details** about an error for an end user when we know a user can't do anything about an error (e.g. "database offline error"), mostly it will be a generic "Inernal Server Error" on purpose -- for security reasons. + +### Producing errors + +When you build controllers, you write your handlers to return `Result`. The `Result` here is a Loco `Result`, which means it also associates a Loco `Error` type. + +If you reach out for the Loco `Error` type you can use any of the following as a response: + +```rust +Err(Error::string("some custom message")); +Err(Error::msg(other_error)); // turns other_error to its string representation +Err(Error::wrap(other_error)); +Err(Error::Unauthorized("some message")) + +// or through controller helpers: +unauthorized("some message") // create a full response object, calling Err on a created error +``` + + + +## Initializers + +Initializers are a way to encapsulate a piece of infrastructure "wiring" that you need to do in your app. You put initializers in `src/initializers/`. + +### Writing initializers + +Currently, an initializer is anything that implements the `Initializer` trait: + +```rust +pub trait Initializer: Sync + Send { + /// The initializer name or identifier + fn name(&self) -> String; + + /// Occurs after the app's `before_run`. + /// Use this to for one-time initializations, load caches, perform web + /// hooks, etc. + async fn before_run(&self, _app_context: &AppContext) -> Result<()> { + Ok(()) + } + + /// Occurs after the app's `after_routes`. + /// Use this to compose additional functionality and wire it into an Axum + /// Router + async fn after_routes(&self, router: AxumRouter, _ctx: &AppContext) -> Result { + Ok(router) + } +} +``` + + +### Example: Integrating Axum Session + +You might want to add sessions to your app using `axum-session`. Also, you might want to share that piece of functionality between your own projects, or grab that piece of code from someone else. + +You can achieve this reuse easily, if you code the integration as an _initializer_: + +```rust +// place this in `src/initializers/axum_session.rs` +#[async_trait] +impl Initializer for AxumSessionInitializer { + fn name(&self) -> String { + "axum-session".to_string() + } + + async fn after_routes(&self, router: AxumRouter, _ctx: &AppContext) -> Result { + let session_config = + axum_session::SessionConfig::default().with_table_name("sessions_table"); + let session_store = + axum_session::SessionStore::::new(None, session_config) + .await + .unwrap(); + let router = router.layer(axum_session::SessionLayer::new(session_store)); + Ok(router) + } +} +``` + +And now your app structure looks like this: + +``` +src/ + bin/ + controllers/ + : + : + initializers/ <--- a new folder + mod.rs <--- a new module + axum_session.rs <--- your new initializer + : + : + app.rs <--- register initializers here +``` + + +### Using initializers + +After you've implemented your own initializer, you should implement the `initializers(..)` hook in your `src/app.rs` and provide a Vec of your initializers: + + +```rust + async fn initializers(ctx: &AppContext) -> Result>> { + let mut initializers: Vec> = vec![ + Box::new(initializers::axum_session::AxumSessionInitializer), + Box::new(initializers::view_engine::ViewEngineInitializer), + Box::new(initializers::hello_view_engine::HelloViewEngineInitializer), + Box::new(loco_extras::initializers::normalize_path::NormalizePathInitializer), + ]; + + if ctx.environment != Environment::Test { + initializers.push(Box::new( + loco_extras::initializers::prometheus::AxumPrometheusInitializer, + )); + } + + Ok(initializers) + } +``` + + +Loco will now run your initializer stack in the correct places during the app boot process. + +### What other things you can do? + +Right now initializers contain two integration points: + +* `before_run` - happens before running the app -- this is a pure "initialization" type of a hook. You can send web hooks, metric points, do cleanups, pre-flight checks, etc. +* `after_routes` - happens after routes have been added. You have access to the Axum router and its powerful layering integration points, this is where you will spend most of your time. + +### Compared to Rails initializers + +Rails initializers, are regular scripts that run once -- for initialization and have access to everything. They get their power from being able to access a "live" Rails app, modify it as a global instance. + +In Loco, accessing a global instance and mutating it is not possible in Rust (for a good reason!), and so we offer two integration points which are explicit and safe: + +1. Pure initialization (without any influence on a configured app) +2. Integration with a running app (via Axum router) + +Rails initializers need _ordering_ and _modification_. Meaning, a user should be certain that they run in a specific order (or re-order them), and a user is able to remove initializers that other people set before them. + +In Loco, we circumvent this complexity by making the user _provide a full vec_ of initializers. Vecs are ordered, and there are no implicit initializers. + +### The global logger initializer + +Some developers would like to customize their logging stack. In Loco this involves setting up tracing and tracing subscribers. + +Because at the moment tracing does not allow for re-initialization, or modification of an in-flight tracing stack, you *only get one chance to initialize and registr a global tracing stack*. + +This is why we added a new *App level hook*, called `init_logger`, which you can use to provide your own logging stack initialization. + +```rust +// in src/app.rs +impl Hooks for App { + // return `Ok(true)` if you took over initializing logger + // otherwise, return `Ok(false)` to use the Loco logging stack. + fn init_logger(_config: &config::Config, _env: &Environment) -> Result { + Ok(false) + } +} +``` + +After you've set up your own logger, return `Ok(true)` to signal that you took over initialization. + + +## Middlewares `Loco` is a framework that is built on top of [`axum`](https://crates.io/crates/axum) and [`tower`](https://crates.io/crates/tower). They provide a way to add [layers](https://docs.rs/tower/latest/tower/trait.Layer.html) @@ -23,9 +264,8 @@ and [services](https://docs.rs/tower/latest/tower/trait.Service.html) as middlew Middleware is a way to add pre- and post-processing to your requests. This can be used for logging, authentication, rate limiting, route specific processing, and more. -# Quick Start -## Source Code +### Source Code `Loco`'s implementation of route middleware / layer is similar to `axum`'s [`Router::layer`](https://github.com/tokio-rs/axum/blob/main/axum/src/routing/mod.rs#L275). You can @@ -64,7 +304,7 @@ impl Routes { } ``` -## Basic Middleware +### Basic Middleware In this example, we will create a basic middleware that will log the request method and path. @@ -265,7 +505,7 @@ is essential for maintaining robust and error-free service operations in asynchr [Tower Service Cloning Documentation](https://docs.rs/tower/latest/tower/trait.Service.html#be-careful-when-cloning-inner-services) -## Basic Example Usage - Adding Middleware to Handler +### Adding Middleware to Handler Add the middleware to the `auth::register` handler. @@ -284,7 +524,7 @@ Now when you make a request to the `auth::register` handler, you will see the re 2024-XX-XXTXX:XX:XX.XXXXXZ INFO http-request: xx::controllers::middleware::log Request: POST "/auth/register" http.method=POST http.uri=/auth/register http.version=HTTP/1.1 environment=development request_id=xxxxx ``` -## Basic Example Usage - Adding Middleware to Route +## Adding Middleware to Route Add the middleware to the `auth` route. @@ -310,7 +550,7 @@ Now when you make a request to any handler in the `auth` route, you will see the 2024-XX-XXTXX:XX:XX.XXXXXZ INFO http-request: xx::controllers::middleware::log Request: POST "/auth/register" http.method=POST http.uri=/auth/register http.version=HTTP/1.1 environment=development request_id=xxxxx ``` -## Advanced Middleware (With AppContext) +### Advanced Middleware (With AppContext) There will be times when you need to access the `AppContext` in your middleware. For example, you might want to access the database connection to perform some authorization checks. To do this, you can add the `AppContext` to @@ -416,7 +656,7 @@ impl Service> for LogService In this example, we have added the `AppContext` to the `LogLayer` and `LogService`. We are using the `AppContext` to get the database connection and the JWT token for pre-processing. -## Advanced Example Usage - Adding Middleware to Route +### Adding Middleware to Route (advanced) Add the middleware to the `notes` route. @@ -439,7 +679,7 @@ Now when you make a request to any handler in the `notes` route, you will see th 2024-XX-XXTXX:XX:XX.XXXXXZ INFO http-request: xx::controllers::middleware::log User: John Doe environment=development request_id=xxxxx ``` -## Advanced Example Usage - Adding Middleware to Handler +### Adding Middleware to Handler (advanced) In order to add the middleware to the handler, you need to add the `AppContext` to the `routes` function in `src/app.rs`. diff --git a/docs-site/content/docs/getting-started/axum-users.md b/docs-site/content/docs/getting-started/axum-users.md index 67f49867b..2d6cf3de2 100644 --- a/docs-site/content/docs/getting-started/axum-users.md +++ b/docs-site/content/docs/getting-started/axum-users.md @@ -4,7 +4,7 @@ description = "Shows how to move from Axum to Loco" date = 2023-12-01T19:30:00+00:00 updated = 2023-12-01T19:30:00+00:00 draft = false -weight = 6 +weight = 5 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/getting-started/cli.md b/docs-site/content/docs/getting-started/cli.md deleted file mode 100644 index 321efd22c..000000000 --- a/docs-site/content/docs/getting-started/cli.md +++ /dev/null @@ -1,120 +0,0 @@ -+++ -title = "CLI" -date = 2021-05-01T08:00:00+00:00 -updated = 2021-05-01T08:00:00+00:00 -draft = false -weight = 5 -sort_by = "weight" -template = "docs/page.html" - -[extra] -toc = true -top = false -flair =[] -+++ - - -Create your starter app: - - -```sh -❯ loco new -✔ ❯ App name? · myapp -✔ ❯ What would you like to build? · SaaS app (with DB and user auth) - -🚂 Loco app generated successfully in: -myapp -``` - - -Now `cd` into your app, set up a convenience `rr` alias and try out the various commands: - - -```sh -cargo loco --help -``` - - - -```sh -The one-person framework for Rust - -Usage: blo-cli [OPTIONS] - -Commands: - start Start an app - db Perform DB operations - routes Describe all application endpoints - task Run a custom task - generate code generation creates a set of files and code templates based on a predefined set of rules - doctor Validate and diagnose configurations - version Display the app version - help Print this message or the help of the given subcommand(s) - -Options: - -e, --environment Specify the environment [default: development] - -h, --help Print help - -V, --version Print version - -``` - - - -You can now drive your development through the CLI: - -``` -$ cargo loco generate model posts -$ cargo loco generate controller posts -$ cargo loco db migrate -$ cargo loco start -``` - -And running tests or working with Rust is just as you already know: - -``` -$ cargo build -$ cargo test -``` - -## Starting your app - -To run you app, run: - - -```sh -cargo loco start -``` - - -## Background workers - -Based on your configuration (in `config/`), your workers will know how to operate: - -```yaml -workers: - # requires Redis - mode: BackgroundQueue - - # can also use: - # ForegroundBlocking - great for testing - # BackgroundAsync - for same-process jobs, using tokio async -``` - -And now, you can run the actual process in various ways: - -- `rr start --worker` - run only a worker and process background jobs. This is great for scale. Run one service app with `rr start`, and then run many process based workers with `rr start --worker` distributed on any machine you want. - -* `rr start --server-and-worker` - will run both a service and a background worker processor in the same unix process. It uses Tokio for executing background jobs. This is great for those cases when you want to run on a single server without too much of an expense or have constrained resources. - -## Getting your app version - -Because your app is compiled, and then copied to production, Loco gives you two important operability pieces of information: - -* Which version is this app, and which GIT SHA was it built from? `cargo loco version` -* Which Loco version was this app compiled against? `cargo loco --version` - -Both version strings are parsable and stable so you can use it in integration scripts, monitoring tools and so on. - -You can shape your own custom app versioning scheme by overriding the `app_version` hook in your `src/app.rs` file. - - diff --git a/docs-site/content/docs/getting-started/config.md b/docs-site/content/docs/getting-started/config.md deleted file mode 100644 index 96e3003f0..000000000 --- a/docs-site/content/docs/getting-started/config.md +++ /dev/null @@ -1,118 +0,0 @@ -+++ -title = "Configuration" -date = 2021-05-01T08:00:00+00:00 -updated = 2021-05-01T08:00:00+00:00 -draft = false -weight = 3 -sort_by = "weight" -template = "docs/page.html" - -[extra] -top = false -toc = true -flair =[] -+++ - -Configuration in `loco` lives in `config/` and by default sets up 3 different environments: - -``` -config/ - development.yaml - production.yaml - test.yaml -``` - -An environment is picked up automatically based on: - -- A command line flag: `cargo loco start --environment production`, if not given, fallback to -- `LOCO_ENV` or `RAILS_ENV` or `NODE_ENV` - -When nothing is given, the default value is `development`. - -The `Loco` framework allows support for custom environments in addition to the default environment. To add a custom environment, create a configuration file with a name matching the environment identifier used in the preceding example. - -## Placeholders / variables in config - -It is possible to inject values into a configuration file. In this example, we get a port value from the `NODE_PORT` environment variable: - -```yaml -# config/development.yaml -# every configuration file is a valid Tera template -server: - # Port on which the server will listen. the server binding is 0.0.0.0:{PORT} - port: {{/* get_env(name="NODE_PORT", default=5150) */}} - # The UI hostname or IP address that mailers will point to. - host: http://localhost - # Out of the box middleware configuration. to disable middleware you can changed the `enable` field to `false` of comment the middleware block -``` - -The [get_env](https://keats.github.io/tera/docs/#get-env) function is part of the Tera template engine. Refer to the [Tera](https://keats.github.io/tera/docs) docs to see what more you can use. - -### Example - -Suppose you want to add a 'qa' environment. Create a `qa.yaml` file in the config folder: - -``` -config/ - development.yaml - production.yaml - test.yaml - qa.yaml -``` - -To run the application using the 'qa' environment, execute the following command: - -```sh -LOCO_ENV=qa cargo loco start -``` - - -## Settings - -The configuration files contain knobs to set up your Loco app. You can also have your custom settings, with the `settings:` section. in `config/development.yaml` add the `settings:` section - -```yaml -settings: - allow_list: - - google.com - - apple.com -``` - - -These setting will appear in `ctx.config.settings` as `serde_json::Value`. You can create your strongly typed settings by adding a struct: - -```rust -// put this in src/common/settings.rs -#[derive(Serialize, Deserialize, Default, Debug)] -pub struct Settings { - pub allow_list: Option>, -} - -impl Settings { - pub fn from_json(value: &serde_json::Value) -> Result { - Ok(serde_json::from_value(value.clone())?) - } -} -``` - -Then, you can access settings from anywhere like this: - - -```rust -// in controllers, workers, tasks, or elsewhere, -// as long as you have access to AppContext (here: `ctx`) - -if let Some(settings) = &ctx.config.settings { - let settings = common::settings::Settings::from_json(settings)?; - println!("allow list: {:?}", settings.allow_list); -} -``` - -## Logger - -Other than the commented fields in the `logger:` section on your YAML file, here's some more context: - -* `logger.pretty_backtrace` - will display colorful backtrace without noise for great development experience. Note that this forcefully sets `RUST_BACKTRACE=1` into the process' env, which enables a (costly) backtrace capture on specific errors. Enable this in development, disable it in production. When needed in production, use `RUST_BACKTRACE=1` ad-hoc in the command line to show it. - - -For all available configuration options [click here](https://docs.rs/loco-rs/latest/loco_rs/config/struct.Config.html) diff --git a/docs-site/content/docs/getting-started/guide.md b/docs-site/content/docs/getting-started/guide.md index aed5387f5..1ca41a2de 100644 --- a/docs-site/content/docs/getting-started/guide.md +++ b/docs-site/content/docs/getting-started/guide.md @@ -3,7 +3,7 @@ title = "The Loco Guide" date = 2021-05-01T08:00:00+00:00 updated = 2021-05-01T08:00:00+00:00 draft = false -weight = 2 +weight = 3 sort_by = "weight" template = "docs/page.html" @@ -15,11 +15,19 @@ flair =[] ## Guide Assumptions -Loco is a Rust API and web framework for full stack product builders. +This is a "long way round" tutorial. It is long and indepth on purpose, it shows you how to build things manually **and** automatically using generators, so that you learn the skills to build and also how things work. + + +### What's with the name? The name `Loco` comes from **loco**motive, as a tribute to Rails, and `loco` is easier to type than `locomotive` :-). Also, in some languages it means "crazy" but that was not the original intention (or, is it crazy to build a Rails on Rust? only time will tell!). -You need to be familiar with Rust to a moderate level. You need to know how to build, test, and run Rust projects, have used some popular libraries such as `clap`, `regex`, `tokio`, `axum` or other web framework, nothing too fancy. There are no crazy lifetime twisters or complex / too magical, macros in Loco that you need to know how they work. +### How much Rust do I need to know? + +You need to be familiar with Rust to a beginner but not more than moderate-beginner level. You need to know how to build, test, and run Rust projects, have used some popular libraries such as `clap`, `regex`, `tokio`, `axum` or other web framework, nothing too fancy. There are no crazy lifetime twisters or complex / too magical, macros in Loco that you need to know how they work. + + +### What is Loco? Loco is strongly inspired by Rails. If you know Rails _and_ Rust, you'll feel at home. If you only know Rails and new to Rust, you'll find Loco refreshing. We do not assume you know Rails. @@ -27,8 +35,6 @@ Loco is strongly inspired by Rails. If you know Rails _and_ Rust, you'll feel at We think Rails is so great, that this guide is strongly inspired from the Rails guide, too -## What is Loco? - Loco is a Web or API framework for Rust. It's also a productivity suite for developers: it contains everything you need while building a hobby or your next startup. It's also strongly inspired by Rails. - **You have a variant of the MVC model**, which removes the paradox of option. You deal with building your app, not making academic decisions for what abstractions to use. @@ -60,58 +66,16 @@ Now you can create your new app (choose "SaaS app" for built-in authentication). ❯ loco new ✔ ❯ App name? · myapp ✔ ❯ What would you like to build? · SaaS app (with DB and user auth) +✔ ❯ Select a DB Provider · Sqlite +✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) +✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) 🚂 Loco app generated successfully in: -myapp -``` - - - -You can now switch to to `myapp`: - -```sh -$ cd myapp -``` - -Make sure you also have locally installed or running (via Docker or otherwise) in case you selected starter with DB dependencies: - -- Postgres (your database will be named `myapp_development`) -- Redis - -
-To configure a database, please run a local postgres database with loco:loco and a db named myapp_development. -
- -This docker command start up postgresql database server. - - -```sh -docker run -d -p 5432:5432 \ - -e POSTGRES_USER=loco \ - -e POSTGRES_DB=myapp_development \ - -e POSTGRES_PASSWORD="loco" \ - postgres:15.3-alpine +myapp/ ``` -This docker command start up redis server: - -``` -docker run -p 6379:6379 -d redis redis-server -``` - -Use doctor command to check the needed resources: - -```sh -$ cargo loco doctor - Finished dev [unoptimized + debuginfo] target(s) in 0.32s - Running `target/debug/myapp-cli doctor` -✅ SeaORM CLI is installed -✅ DB connection: success -✅ Redis connection: success -``` - Here's a rundown of what Loco creates for you by default: @@ -136,6 +100,12 @@ Here's a rundown of what Loco creates for you by default: Let's get some responses quickly. For this, we need to start up the server. +You can now switch to to `myapp`: + +```sh +$ cd myapp +``` + ### Starting the server @@ -345,7 +315,7 @@ Models in Loco carry the same semantics as in Rails: fat models, slim control ### Generating a model -A model in Loco represents data. Typically that data is stored in your database. Most, if not all, business processes of your applications would be coded on the model (as an Active Record) or as an orchestration of a few models. +A model in Loco represents data *and* functionality. Typically the data is stored in your database. Most, if not all, business processes of your applications would be coded on the model (as an Active Record) or as an orchestration of a few models. Let's create a new model called `Article`: @@ -361,7 +331,7 @@ injected: "tests/models/mod.rs" ### Database migrations -**Keeping your schema is done with migrations**. A migration is a singular change to your database structure: it can contain complete table additions, modifications, or index creation. +**Keeping your schema honest is done with migrations**. A migration is a singular change to your database structure: it can contain complete table additions, modifications, or index creation. ```rust // this was generated into `migrations/` from the command: @@ -395,7 +365,7 @@ impl MigrationTrait for Migration { } ``` -You can recreate a complete database **by applying migrations in-series onto a fresh database schema** -- this is done automatically by Loco's migrator (which is derived from SeaORM). +You can recreate a complete database **by applying migrations in-series onto a fresh database** -- this is done automatically by Loco's migrator (which is derived from SeaORM). When generating a new model, Loco will: @@ -653,7 +623,7 @@ $ curl localhost:5150/articles [{"created_at":"...","updated_at":"...","id":1,"title":"how to build apps in 3 steps","content":"use Loco: https://loco.rs"},{"created_at":"...","updated_at":"...","id":2,"title":"Your Title","content":"Your Content xxx"} ``` -## Adding a second model +### Adding a second model Let's add another model, this time: `Comment`. We want to create a relation - a comment belongs to a post, and each post can have multiple comments. diff --git a/docs-site/content/docs/getting-started/scaffold.md b/docs-site/content/docs/getting-started/scaffold.md deleted file mode 100644 index 5796b627b..000000000 --- a/docs-site/content/docs/getting-started/scaffold.md +++ /dev/null @@ -1,70 +0,0 @@ -+++ -title = "Scaffold" -date = 2024-06-06T08:00:00+00:00 -updated = 2021-06-06T08:00:00+00:00 -draft = false -weight = 4 -sort_by = "weight" -template = "docs/page.html" - -[extra] -toc = true -top = false -flair =[] -+++ - -Scaffolding is an efficient and speedy method for generating key components of an application. By utilizing scaffolding, you can create models, views, and controllers for a new resource all in one go. - - -See scaffold command: - -```sh -Generates a CRUD scaffold, model and controller - -Usage: blo-cli generate scaffold [OPTIONS] [FIELDS]... - -Arguments: - Name of the thing to generate - [FIELDS]... Model fields, eg. title:string hits:int - -Options: - -k, --kind The kind of scaffold to generate [default: api] [possible values: api, html, htmx] - -e, --environment Specify the environment [default: development] - -h, --help Print help - -V, --version Print version - -``` - - -You can begin by generating a scaffold for the Post resource, which will represent a single blog posting. To accomplish this, open your terminal and enter the following command: - -```sh -cargo loco generate scaffold posts name:string title:string content:text -``` - - -The scaffold generate command support API, HTML or HTMX by adding `--template` flag to scaffold command. - - -The scaffold generator will build several files in your application: - -| File | Purpose | -| ------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -| `migration/src/lib.rs` | Include Post migration. | -| `migration/src/m20240606_102031_posts.rs` | Posts migration. | -| `src/app.rs` | Adding Posts to application router. | -| `src/controllers/mod.rs` | Include the Posts controller. | -| `src/controllers/posts.rs` | The Posts controller. | -| `tests/requests/posts.rs` | Functional testing. | -| `src/models/mod.rs` | Including Posts model. | -| `src/models/posts.rs` | Posts model, | -| `src/models/_entities/mod.rs` | Includes Posts Sea-orm entity model. | -| `src/models/_entities/posts.rs` | Sea-orm entity model. | -| `src/views/mod.rs` | Including Posts views. only for HTML and HTMX templates. | -| `src/views/posts.rs` | Posts template generator. only for HTML and HTMX templates. | -| `assets/views/posts/create.html` | Create post template. only for HTML and HTMX templates. | -| `assets/views/posts/edit.html` | Edit post template. only for HTML and HTMX templates. | -| `assets/views/posts/edit.html` | Edit post template. only for HTML and HTMX templates. | -| `assets/views/posts/list.html` | List post template. only for HTML and HTMX templates. | -| `assets/views/posts/show.html` | Show post template. only for HTML and HTMX templates. | - \ No newline at end of file diff --git a/docs-site/content/docs/getting-started/starters.md b/docs-site/content/docs/getting-started/starters.md index aafa59284..c14ad80f5 100644 --- a/docs-site/content/docs/getting-started/starters.md +++ b/docs-site/content/docs/getting-started/starters.md @@ -3,7 +3,7 @@ title = "Starters" date = 2021-12-19T08:00:00+00:00 updated = 2021-12-19T08:00:00+00:00 draft = false -weight = 3 +weight = 4 sort_by = "weight" template = "docs/page.html" @@ -29,15 +29,18 @@ Create a starter: ❯ loco new ✔ ❯ App name? · myapp ✔ ❯ What would you like to build? · SaaS app (with DB and user auth) +✔ ❯ Select a DB Provider · Sqlite +✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) +✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) 🚂 Loco app generated successfully in: -myapp +myapp/ ``` ## Available Starters -#### SaaS Starter +### SaaS Starter The SaaS starter is an all-included set up for projects requiring both a UI and a REST API. For the UI this starter supports a client-side app or classic server-side templates (or a combination). @@ -55,10 +58,40 @@ The SaaS starter is an all-included set up for projects requiring both a UI and - Forgot password API flow. - Mailer that sends welcome emails and handles forgot password requests. -#### Rest API Starter +#### Configuring assets for serverside templates + +The SaaS starter comes preconfigured for frontend client-side assets. If you want to use server-side template rendering which includes assets such as pictures and styles, you can configure the asset middleware for it: + +In your `config/development.yaml`, uncomment the server-side config, and comment the client-side config. + +```yaml + # server-side static assets config + # for use with the view_engine in initializers/view_engine.rs + # + static: + enable: true + must_exist: true + precompressed: false + folder: + uri: "/static" + path: "assets/static" + fallback: "assets/static/404.html" + # client side app static config + # static: + # enable: true + # must_exist: true + # precompressed: false + # folder: + # uri: "/" + # path: "frontend/dist" + # fallback: "frontend/dist/index.html" +``` + + +### Rest API Starter Choose the Rest API starter if you only need a REST API without a frontend. If you change your mind later and decide to serve a frontend, simply enable the `static` middleware and point the configuration to your `frontend` distribution folder. -#### Lightweight Service Starter +### Lightweight Service Starter Focused on controllers and views (response schema), the Lightweight Service starter is minimalistic. If you require a REST API service without a database, frontend, workers, or other features that Loco provides, this is the ideal choice for you! diff --git a/docs-site/content/docs/getting-started/tour/index.md b/docs-site/content/docs/getting-started/tour/index.md index 7b25ef6d4..2c2678bb7 100644 --- a/docs-site/content/docs/getting-started/tour/index.md +++ b/docs-site/content/docs/getting-started/tour/index.md @@ -1,9 +1,9 @@ +++ -title = "A Quick Tour with Loco" +title = "A Quick Tour" date = 2021-05-01T08:00:00+00:00 updated = 2021-05-01T08:00:00+00:00 draft = false -weight = 1 +weight = 2 sort_by = "weight" template = "docs/page.html" @@ -17,7 +17,7 @@ flair =[]


-Let's create a blog backend on `loco` in 4 commands. First install `loco-cli` and `sea-orm-cli`: +Let's create a blog backend on Loco in just a few minutes. First install `loco-cli` and `sea-orm-cli`: ```sh @@ -30,42 +30,25 @@ cargo install sea-orm-cli # Only when DB is needed Now you can create your new app (choose "`SaaS` app"). ```sh - $ loco new - ✔ ❯ App name? · myapp - ? ❯ What would you like to build? › - lightweight-service (minimal, only controllers and views) - Rest API (with DB and user auth) - ❯ SaaS app (with DB and user auth) + ❯ loco new +✔ ❯ App name? · myapp +✔ ❯ What would you like to build? · SaaS app (with DB and user auth) +✔ ❯ Select a DB Provider · Sqlite +✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) +✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) + 🚂 Loco app generated successfully in: - myapp + myapp/ ``` -
- To configure a database , please run a local postgres database with - loco:loco and a db named is the [insert app]_development. -
- - You can use Docker to run a Postgres instance: +If you select all defaults, you'll have: - When generating a starter, the database name incorporates your application - name and the environment. For instance, if you include `myapp`, the database - name in the `test.yaml`configuration will be `myapp_test`, and in the - `development.yaml` configuration, it will be `myapp_development`. +* `sqlite` for database. Learn about database providers in [Sqlite vs Postgres](@/docs/the-app/models.md#sqlite-vs-postgres) in the _models_ section. +* `async` for background workers. Learn about workers configuration [async vs queue](@/docs/processing/workers.md#async-vs-queue) in the _workers_ section. +* `Client` asset serving configuration. This means your backend will serve as API. - -```sh -docker run -d -p 5432:5432 \ - -e POSTGRES_USER=loco \ - -e POSTGRES_DB=myapp_development \ - -e POSTGRES_PASSWORD="loco" \ - postgres:15.3-alpine -``` - - - A more advanced set of `compose.yaml` and `Dockerfiles` that include Redis and the `mailtutan` mailer are available for [each starter on GitHub](https://github.com/loco-rs/loco/blob/master/starters/saas/.devcontainer/compose.yaml). - - Now `cd` into your `myapp` and start your app: + Now `cd` into your `myapp` and start your app by running `cargo loco start`: ```sh @@ -119,7 +102,7 @@ injected: "tests/requests/mod.rs" Your database have been migrated and model, entities, and a full CRUD controller have been generated automatically. -Start your app: +Start your app again: ```sh $ cargo loco start @@ -172,29 +155,6 @@ Done! enjoy your ride with `loco` 🚂 Your generated app contains a fully working authentication suite, based on JWTs. -To authenticate, you will need a running redis server. - -This docker command starts up a redis server: - - -```sh -docker run -p 6379:6379 -d redis redis-server -``` - - -Use doctor command to check the needed resources: - - -```sh -$ cargo loco doctor - Finished dev [unoptimized + debuginfo] target(s) in 0.32s - Running `target/debug/myapp-cli doctor` -✅ SeaORM CLI is installed -✅ DB connection: success -✅ Redis connection: success -``` - - ### Registering a New User The `/api/auth/register` endpoint creates a new user in the database with an `email_verification_token` for account verification. A welcome email is sent to the user with a verification link. @@ -236,9 +196,11 @@ The response includes a JWT token for authentication, user ID, name, and verific } ``` +In your client-side app, you save this JWT token and make following requests with it using _bearer token_ (see below) in order for those to be authenticated. + ### Get current user -This endpoint is protected by auth middleware. +This endpoint is protected by auth middleware. We will use the token we got earlier to perform a request with the _bearer token_ technique (replace `TOKEN` with the JWT token you got earlier): ```sh $ curl --location --request GET '127.0.0.1:5150/api/user/current' \ @@ -246,4 +208,6 @@ $ curl --location --request GET '127.0.0.1:5150/api/user/current' \ --header 'Authorization: Bearer TOKEN' ``` +That should be your first authenticated request!. + Check out the source code for `controllers/auth.rs` to see how to use the authentication middleware in your own controllers. diff --git a/docs-site/themes/adidoks/content/docs/contributing/_index.md b/docs-site/content/docs/infrastructure/_index.md similarity index 66% rename from docs-site/themes/adidoks/content/docs/contributing/_index.md rename to docs-site/content/docs/infrastructure/_index.md index 2c6b355e8..b666ba2a2 100644 --- a/docs-site/themes/adidoks/content/docs/contributing/_index.md +++ b/docs-site/content/docs/infrastructure/_index.md @@ -1,6 +1,6 @@ +++ -title = "Contributing" -description = "Find out how to contribute to AdiDoks." +title = "Infrastructure" +description = "" date = 2025-05-01T18:00:00+00:00 updated = 2021-05-01T18:00:00+00:00 template = "docs/section.html" diff --git a/docs-site/content/docs/the-app/cache.md b/docs-site/content/docs/infrastructure/cache.md similarity index 98% rename from docs-site/content/docs/the-app/cache.md rename to docs-site/content/docs/infrastructure/cache.md index ec590f161..1b2c7faff 100644 --- a/docs-site/content/docs/the-app/cache.md +++ b/docs-site/content/docs/infrastructure/cache.md @@ -4,7 +4,7 @@ description = "" date = 2024-02-07T08:00:00+00:00 updated = 2024-02-07T08:00:00+00:00 draft = false -weight = 20 +weight = 2 sort_by = "weight" template = "docs/page.html" @@ -38,4 +38,4 @@ async fn after_context(ctx: AppContext) -> Result { ..ctx }) } -``` \ No newline at end of file +``` diff --git a/docs-site/content/docs/getting-started/deployment.md b/docs-site/content/docs/infrastructure/deployment.md similarity index 96% rename from docs-site/content/docs/getting-started/deployment.md rename to docs-site/content/docs/infrastructure/deployment.md index cea1f1bec..c3587bfe5 100644 --- a/docs-site/content/docs/getting-started/deployment.md +++ b/docs-site/content/docs/infrastructure/deployment.md @@ -3,7 +3,7 @@ title = "Deployment" date = 2021-05-01T08:00:00+00:00 updated = 2021-05-01T08:00:00+00:00 draft = false -weight = 5 +weight = 3 sort_by = "weight" template = "docs/page.html" @@ -59,7 +59,7 @@ logger: ```yaml server: # Port on which the server will listen. the server binding is 0.0.0.0:{PORT} - port: {{get_env(name="NODE_PORT", default=5150)}} + port: {{ get_env(name="NODE_PORT", default=5150) }} # The UI hostname or IP address that mailers will point to. host: http://localhost # Out of the box middleware configuration. to disable middleware you can changed the `enable` field to `false` of comment the middleware block @@ -100,9 +100,9 @@ mailer: # SMTP mailer configuration. smtp: # Enable/Disable smtp mailer. - enable: true + enable: true # SMTP server host. e.x localhost, smtp.gmail.com - host: {{get_env(name="MAILER_HOST", default="localhost") }} + host: {{ get_env(name="MAILER_HOST", default="localhost") }} # SMTP server port port: 1025 # Use secure connection (SSL/TLS). @@ -118,7 +118,7 @@ mailer: ```yaml queue: # Redis connection URI - uri: {{get_env(name="REDIS_URL", default="redis://127.0.0.1")}} + uri: {{ get_env(name="REDIS_URL", default="redis://127.0.0.1") }} # Dangerously flush all data in Redis on startup. dangerous operation, make sure that you using this flag only on dev environments or test mode dangerously_flush: false ``` diff --git a/docs-site/content/docs/the-app/storage.md b/docs-site/content/docs/infrastructure/storage.md similarity index 99% rename from docs-site/content/docs/the-app/storage.md rename to docs-site/content/docs/infrastructure/storage.md index 665fcb247..6eee6aa04 100644 --- a/docs-site/content/docs/the-app/storage.md +++ b/docs-site/content/docs/infrastructure/storage.md @@ -4,7 +4,7 @@ description = "" date = 2024-02-07T08:00:00+00:00 updated = 2024-02-07T08:00:00+00:00 draft = false -weight = 19 +weight = 1 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/processing/_index.md b/docs-site/content/docs/processing/_index.md new file mode 100644 index 000000000..fb9bfcb64 --- /dev/null +++ b/docs-site/content/docs/processing/_index.md @@ -0,0 +1,10 @@ ++++ +title = "Processing" +description = "" +date = 2025-05-01T18:00:00+00:00 +updated = 2021-05-01T18:00:00+00:00 +template = "docs/section.html" +sort_by = "weight" +weight = 3 +draft = false ++++ diff --git a/docs-site/content/docs/the-app/mailers.md b/docs-site/content/docs/processing/mailers.md similarity index 97% rename from docs-site/content/docs/the-app/mailers.md rename to docs-site/content/docs/processing/mailers.md index 8b6336cc3..40ecafb22 100644 --- a/docs-site/content/docs/the-app/mailers.md +++ b/docs-site/content/docs/processing/mailers.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 18 +weight = 2 sort_by = "weight" template = "docs/page.html" @@ -174,7 +174,7 @@ mailer: stub: true ``` -Note: If your email sender operates within a [worker](@/docs/the-app/workers.md) process, ensure that the worker mode is set to ForegroundBlocking. +Note: If your email sender operates within a [worker](@/docs/processing/workers.md) process, ensure that the worker mode is set to ForegroundBlocking. Once you have configured the stub, proceed to your unit tests and follow the example below: diff --git a/docs-site/content/docs/processing/scheduler.md b/docs-site/content/docs/processing/scheduler.md new file mode 100644 index 000000000..6bd888201 --- /dev/null +++ b/docs-site/content/docs/processing/scheduler.md @@ -0,0 +1,153 @@ ++++ +title = "Scheduler" +description = "" +date = 2024-11-09T18:10:00+00:00 +updated = 2024-11-09T18:10:00+00:00 +draft = false +weight = 5 +sort_by = "weight" +template = "docs/page.html" + +[extra] +lead = "" +toc = true +top = false +flair =[] ++++ + + +Loco simplifies the traditional, often cumbersome `crontab` system, making it easier and more elegant to schedule cron jobs. The scheduler job can execute either a shell script command or run a registered [task](./task.md). + + +## Setting Up +Scheduler jobs can be configured via a your YAML scheduler setup file or as part of an environment YAML file. + + +### 1. Your Dedicated File +Using a dedicated file provides a centralized place to configure all your scheduler jobs, making it easier to manage and maintain. You can start by generating a template file using the Loco generator command: + +```sh +cargo loco generate scheduler +``` + +This command creates a `scheduler.yaml` file under the `config` folder. You can then configure your jobs within this file. + +### 2. Environment Configuration File +You can also configure scheduler jobs per environment by adding the scheduler section to your environment's YAML configuration file: + + +```yaml +scheduler: + # Location of shipping the command stdout and stderr. + output: stdout + # A list of jobs to be scheduled. + jobs: + # The name of the job. + write_content: + # by default false meaning executing the the run value as a task. if true execute the run value as shell command + shell: true + # command to run + run: "echo loco >> ./scheduler.txt" + # The cron expression that defines the job's schedule. + schedule: run every 1 second + output: silent + tags: ['base', 'infra'] + + run_task: + run: "foo" + schedule: "at 10:00 am" + + list_if_users: + run: "user_report" + shell: true + schedule: "* 2 * * * *" + tags: ['base', 'users'] +``` + + + +## Scheduler Configuration + +The scheduler configuration consists of the following elements: + +* `scheduler.output` (Optional): Sets the default output location for all jobs. + * `stdout:` Output to the console (default). + * `silent:` Suppress all output. +* `scheduler.jobs:` A object of jobs to be scheduled, the object key describe the job name. Each job has: + * `schedule`: The cron expression that defines the job's schedule. + The cron get an english that convert to cron syntax or cron syntax itself. + + ##### ***English to cron*** + * Examples: + * every 15 seconds + * run every minute + * fire every day at 4:00 pm + * at 10:00 am + * run at midnight on the 1st and 15th of the month + * On Sunday at 12:00 + * 7pm every Thursday + * midnight on Tuesdays + + ##### ***Cron Syntax format:*** + The cronjob should be UTC based + ```sh + sec min hour day of month month day of week year + * * * * * * * + ``` + * `shell`: by default `false` meaning executing the the `run` value as a task. if `true` execute the `run` value as shell command + * `run`: Cronjob command to run. + * `Task:` The task name (with variables e.x `[TASK_NAME] KEY:VAl`. follow [here](./task.md) to see task arguments ). Note that the `shell` field should be false. + * `Shell`: Run a shell command (e.x `"echo loco >> ./scheduler.txt"`). Note that the `shell` field should be true. + * `tags` (Optional): A list of tags to categorize and manage the job. + * `output` (Optional): Overrides the global `scheduler.output` for this job. + + +## Verifying the Configuration +After setting up your jobs, you can verify the configuration to ensure everything is correct. + +### 1. When using a dedicated file: +Run the following command to list the jobs from your scheduler file: + +```sh +cargo loco scheduler --path config/scheduler.yaml --list +``` + + +### 2. When using environment-based configuration: +To list jobs from the environment configuration, run: + +```sh +LOCO_ENV=production cargo loco scheduler --list +``` + + + +## Running the Scheduler +Once the configuration is verified, you can remove the `--list` flag to start running the scheduler. The scheduler will continuously execute jobs based on their schedule until a shutdown signal is received. When a signal is received, it gracefully terminates all running tasks and shuts down safely. + +### Important Notes: +* When a job is running, `Loco` spawns it in a new process, and all environment variables will propagate to the new job process. +* For tasks, ensure you run the scheduler with a valid environment by using the `--environment` flag or setting the `LOCO_ENV` environment variable. This ensures the correct environment and configuration are loaded for the task. +* You can pass variables to tasks by using the vars object in the task configuration. + + +## Running a Single Scheduled Job by Name +To run a specific scheduler job by its name, use the --name flag. This will execute a single job with the provided name. + +```sh +LOCO_ENV=production cargo loco scheduler --name 'JOB_NAME' +``` + + +This command will locate the job named `"Run command"` in your scheduler.yaml file and run it. + +## Running Scheduled Jobs by Tag +You can also run multiple jobs that share the same tag. Tags are useful for grouping related jobs together. For example, you might have several jobs that perform different types of maintenance tasks—such as database cleanup, cache invalidation, and log rotation—that you want to run together. Assigning them the same tag, like `maintenance`, allows you to execute them all at once. + +```sh +LOCO_ENV=production cargo loco scheduler --tag 'maintenance' +``` + + + +This command runs all jobs that have been tagged with `maintenance`, ensuring that all related jobs are executed in one go. diff --git a/docs-site/content/docs/the-app/task.md b/docs-site/content/docs/processing/task.md similarity index 99% rename from docs-site/content/docs/the-app/task.md rename to docs-site/content/docs/processing/task.md index e63eaaef2..535942a64 100644 --- a/docs-site/content/docs/the-app/task.md +++ b/docs-site/content/docs/processing/task.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 17 +weight = 4 sort_by = "weight" template = "docs/page.html" @@ -43,7 +43,6 @@ Options: -e, --environment Specify the environment [default: development] -h, --help Print help -V, --version Print version - ``` diff --git a/docs-site/content/docs/the-app/workers.md b/docs-site/content/docs/processing/workers.md similarity index 57% rename from docs-site/content/docs/the-app/workers.md rename to docs-site/content/docs/processing/workers.md index c0bec4ae4..5ffc45327 100644 --- a/docs-site/content/docs/the-app/workers.md +++ b/docs-site/content/docs/processing/workers.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 15 +weight = 1 sort_by = "weight" template = "docs/page.html" @@ -17,7 +17,82 @@ flair =[] `loco` integrates with a full blown background job processing framework: `sidekiq-rs`. You can enqueue jobs in a similar ergonomics as Rails' _ActiveJob_, and have a similar scalable processing model to perform these background jobs. -## Using workers +## Async vs Queue + +When you generated a new app, you might have selected the default `async` configuration for workers. This means workers spin off jobs in Tokio's async pool, which gives you proper background processes in the same running server. + +You might want to configure jobs to run in a separate process backed by a queue, in order to distribute the load across servers. + +First, switch to `BackgroundQueue`: + +```yaml +# Worker Configuration +workers: + # specifies the worker mode. Options: + # - BackgroundQueue - Workers operate asynchronously in the background, processing queued. + # - ForegroundBlocking - Workers operate in the foreground and block until tasks are completed. + # - BackgroundAsync - Workers operate asynchronously in the background, processing tasks with async capabilities. + mode: BackgroundQueue +``` + +Then, configure the Redis queue connection: + +```yaml +# Queue Configuration +queue: + # Redis connection URI + uri: "{{ get_env(name="REDIS_URL", default="redis://127.0.0.1") }}" +``` + +Loco can use Redis (or valkey or any Redis-protocol compliant server) for a real queue implementation, and you can seamlessly switch between different configurations. + + +To get a Redis server up and running, you can use this docker command: + +``` +docker run -p 6379:6379 -d redis redis-server +``` + +Finally use doctor to check the connections: + + +```sh +$ cargo loco doctor + Finished dev [unoptimized + debuginfo] target(s) in 0.32s + Running `target/debug/myapp-cli doctor` +✅ SeaORM CLI is installed +✅ DB connection: success +✅ Redis connection: success +``` + + +## Running the worker process +You can run in two ways, depending on which setting you chose for background workers: + +``` +Usage: demo_app start [OPTIONS] + +Options: + -w, --worker start worker + -s, --server-and-worker start same-process server and worker +``` + +Choose `--worker` when you configured a real Redis queue and you want a process for doing just background jobs. You can use a single process per server. In this case, you can run your main Web or API server using just `cargo loco start`. + +```sh +$ cargo loco start --worker # starts a standalone worker job executing process +$ cargo loco start # starts a standalone API service or Web server, no workers +``` + +Choose `-s` when you configured `async` background workers, and jobs will execute as part of the current running server process. + +For example, running `--server-and-worker`: + +```sh +$ cargo loco start --server-and-worker # both API service and workers will execute +``` + +## Creating background jobs in code To use a worker, we mainly think about adding a job to the queue, so you `use` the worker and perform later: @@ -34,7 +109,7 @@ To use a worker, we mainly think about adding a job to the queue, so you `use` t Unlike Rails and Ruby, with Rust you can enjoy _strongly typed_ job arguments which gets serialized and pushed into the queue. -## Adding a worker +## Creating a new worker Adding a worker meaning coding the background job logic to take the _arguments_ and perform a job. We also need to let `loco` know about it and register it into the global job processor. @@ -68,7 +143,7 @@ impl Hooks for App { } ``` -## Generate a Worker +### Generate a Worker To automatically add a worker using `loco generate`, execute the following command: @@ -94,13 +169,13 @@ workers: mode: BackgroundQueue ``` -### Testing a Worker +## Testing a Worker You can easily test your worker background jobs using `Loco`. Ensure that your worker is set to the `ForegroundBlocking` mode, which blocks the job, ensuring it runs synchronously. When testing the worker, the test will wait until your worker is completed, allowing you to verify if the worker accomplished its intended tasks. It's recommended to implement tests in the `tests/workers` directory to consolidate all your worker tests in one place. -Additionally, you can leverage the [worker generator](@/docs/the-app/workers.md#generate-a-worker), which automatically creates tests, saving you time on configuring tests in the library. +Additionally, you can leverage the [worker generator](@/docs/processing/workers.md#generate-a-worker), which automatically creates tests, saving you time on configuring tests in the library. Here's an example of how the test should be structured: diff --git a/docs-site/content/docs/resources/_index.md b/docs-site/content/docs/resources/_index.md index e33a73d2d..ff54cf819 100644 --- a/docs-site/content/docs/resources/_index.md +++ b/docs-site/content/docs/resources/_index.md @@ -5,6 +5,6 @@ date = 2025-05-01T19:00:00+00:00 updated = 2021-05-01T19:00:00+00:00 template = "docs/section.html" sort_by = "weight" -weight = 30 +weight = 6 draft = false +++ diff --git a/docs-site/content/docs/resources/faq.md b/docs-site/content/docs/resources/faq.md index ee8933811..3b2e60660 100644 --- a/docs-site/content/docs/resources/faq.md +++ b/docs-site/content/docs/resources/faq.md @@ -4,7 +4,7 @@ description = "Answers to frequently asked questions." date = 2021-05-01T19:30:00+00:00 updated = 2021-05-01T19:30:00+00:00 draft = false -weight = 30 +weight = 1 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/resources/live-examples.md b/docs-site/content/docs/resources/live-examples.md index 9f4395c9b..252077f46 100644 --- a/docs-site/content/docs/resources/live-examples.md +++ b/docs-site/content/docs/resources/live-examples.md @@ -1,10 +1,10 @@ +++ -title = "Websites" +title = "Examples" description = "" date = 2024-01-21T19:00:00+00:00 updated = 2024-01-21T19:00:00+00:00 draft = false -weight = 6 +weight = 2 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/starters/rest-api.md b/docs-site/content/docs/starters/rest-api.md deleted file mode 100644 index 7eba4f8f3..000000000 --- a/docs-site/content/docs/starters/rest-api.md +++ /dev/null @@ -1,16 +0,0 @@ -+++ -title = "REST API" -date = 2021-12-19T08:00:00+00:00 -updated = 2021-12-19T08:00:00+00:00 -draft = false -weight = 2 -sort_by = "weight" -template = "docs/page.html" - -[extra] -toc = true -top = false -flair = ["Auth", "DB"] -+++ - -Choose the Rest API starter if you only need a REST API without a frontend. If you change your mind later and decide to serve a frontend, simply enable the `static` middleware and point the configuration to your `frontend` distribution folder. diff --git a/docs-site/content/docs/starters/saas.md b/docs-site/content/docs/starters/saas.md deleted file mode 100644 index e95e122e2..000000000 --- a/docs-site/content/docs/starters/saas.md +++ /dev/null @@ -1,59 +0,0 @@ -+++ -title = "SaaS" -date = 2021-12-19T08:00:00+00:00 -updated = 2021-12-19T08:00:00+00:00 -draft = false -weight = 1 -sort_by = "weight" -template = "docs/page.html" - -[extra] -toc = true -top = false -flair = ['Auth', 'DB', 'JS', 'SSR'] -+++ - -The SaaS starter is an all-included set up for projects requiring both a UI and a REST API. For the UI this starter supports a client-side app or classic server-side templates (or a combination). - -**UI** - -- Frontend starter built on React and Vite (easy to replace with your preferred framework). -- Static middleware that point on your frontend build and includes a fallback index. Alternatively you can configure it for static assets for server-side templates. -- The Tera view engine configured for server-side templates, including i18n configuration. Templates and i18n assets live in `assets/`. - -**Rest API** - -- `ping` and `health` endpoints to check service health. See all endpoint with the following command `cargo loco routes` -- Users table and authentication middleware. -- User model with authentication logic and user registration. -- Forgot password API flow. -- Mailer that sends welcome emails and handles forgot password requests. - -## Configuring assets for serverside templates - -The SaaS starter comes preconfigured for frontend client-side assets. If you want to use server-side template rendering which includes assets such as pictures and styles, you can configure the asset middleware for it: - -In your `config/development.yaml`, uncomment the server-side config, and comment the client-side config. - -```yaml - # server-side static assets config - # for use with the view_engine in initializers/view_engine.rs - # - static: - enable: true - must_exist: true - precompressed: false - folder: - uri: "/static" - path: "assets/static" - fallback: "assets/static/404.html" - # client side app static config - # static: - # enable: true - # must_exist: true - # precompressed: false - # folder: - # uri: "/" - # path: "frontend/dist" - # fallback: "frontend/dist/index.html" -``` diff --git a/docs-site/content/docs/starters/service.md b/docs-site/content/docs/starters/service.md deleted file mode 100644 index 5a86e893b..000000000 --- a/docs-site/content/docs/starters/service.md +++ /dev/null @@ -1,16 +0,0 @@ -+++ -title = "Lightweight Service" -date = 2021-12-19T08:00:00+00:00 -updated = 2021-12-19T08:00:00+00:00 -draft = false -weight = 3 -sort_by = "weight" -template = "docs/page.html" - -[extra] -flair = ["SSR"] -toc = true -top = false -+++ - -Focused on controllers and views (response schema), the Lightweight Service starter is minimalistic. If you require a REST API service without a database, frontend, workers, or other features that Loco provides, this is the ideal choice for you! diff --git a/docs-site/content/docs/the-app/_index.md b/docs-site/content/docs/the-app/_index.md index 9b03ad2cc..aa6423e0e 100644 --- a/docs-site/content/docs/the-app/_index.md +++ b/docs-site/content/docs/the-app/_index.md @@ -5,6 +5,6 @@ date = 2025-05-01T18:00:00+00:00 updated = 2021-05-01T18:00:00+00:00 template = "docs/section.html" sort_by = "weight" -weight = 20 +weight = 2 draft = false +++ diff --git a/docs-site/content/docs/the-app/controller.md b/docs-site/content/docs/the-app/controller.md index a18988320..545573cba 100644 --- a/docs-site/content/docs/the-app/controller.md +++ b/docs-site/content/docs/the-app/controller.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 13 +weight = 5 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/the-app/errors.md b/docs-site/content/docs/the-app/errors.md deleted file mode 100644 index 0dae6d53c..000000000 --- a/docs-site/content/docs/the-app/errors.md +++ /dev/null @@ -1,113 +0,0 @@ -+++ -title = "Errors" -description = "" -date = 2021-05-01T18:10:00+00:00 -updated = 2021-05-01T18:10:00+00:00 -draft = false -weight = 30 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "" -toc = true -top = false -flair =[] -+++ - - -## Error levels and options - -As a reminder, error levels and their logging can be controlled in your `development.yaml`: - -### Logger - -```yaml -# Application logging configuration -logger: - # Enable or disable logging. - enable: true - # Enable pretty backtrace (sets RUST_BACKTRACE=1) - pretty_backtrace: true - # Log level, options: trace, debug, info, warn or error. - level: debug - # Define the logging format. options: compact, pretty or json - format: compact - # By default the logger has filtering only logs that came from your code or logs that came from `loco` framework. to see all third party libraries - # Uncomment the line below to override to see all third party libraries you can enable this config and override the logger filters. - # override_filter: trace -``` - - -The most important knobs here are: - -* `level` - your standard logging levels. Typically `debug` or `trace` in development. In production choose what you are used to. -* `pretty_backtrace` - provides clear, concise path to the line of code causing the error. use `true` in development and turn off in production. In cases where you are debugging things in production and need some extra hand, you can turn it on and then off when you're done. - -### Controller logging - -In `server.middlewares` you will find: - -```yaml -server: - middlewares: - # - # ... - # - # Generating a unique request ID and enhancing logging with additional information such as the start and completion of request processing, latency, status code, and other request details. - logger: - # Enable/Disable the middleware. - enable: true -``` - -You should enable it to get detailed request errors and a useful `request-id` that can help collate multiple request-scoped errors. - - -### Database - -You have the option of logging live SQL queries, in your `database` section: - -```yaml -database: - # When enabled, the sql query will be logged. - enable_logging: false -``` - - -## Operating around errors - -You'll be mostly looking at your terminal for errors while developing your app, it can look something like this: - -```bash -2024-02-xxx DEBUG http-request: tower_http::trace::on_request: started processing request http.method=GET http.uri=/notes http.version=HTTP/1.1 http.user_agent=curl/8.1.2 environment=development request_id=8622e624-9bda-49ce-9730-876f2a8a9a46 -2024-02-xxx11T12:19:25.295954Z ERROR http-request: loco_rs::controller: controller_error error.msg=invalid type: string "foo", expected a sequence error.details=JSON(Error("invalid type: string \"foo\", expected a sequence", line: 0, column: 0)) error.chain="" http.method=GET http.uri=/notes http.version=HTTP/1.1 http.user_agent=curl/8.1.2 environment=development request_id=8622e624-9bda-49ce-9730-876f2a8a9a46 -``` - -Usually you can expect the following from errors: - -* `error.msg` a `to_string()` version of an error, for operators. -* `error.detail` a debug representation of an error, for developers. -* An error **type** e.g. `controller_error` as the primary message tailored for searching, rather than a verbal error message. -* Errors are logged as _tracing_ events and spans, so that you can build any infrastructure you want to provide custom tracing subscribers. Check out the [prometheus](https://github.com/loco-rs/loco/blob/master/loco-extras/src/initializers/prometheus.rs) example in `loco-extras`. - -Notes: - -* An _error chain_ was experimented with, but provides little value in practice. -* Errors that an end user sees are a completely different thing. We strive to provide **minimal internal details** about an error for an end user when we know a user can't do anything about an error (e.g. "database offline error"), mostly it will be a generic "Inernal Server Error" on purpose -- for security reasons. - -## Producing errors - -When you build controllers, you write your handlers to return `Result`. The `Result` here is a Loco `Result`, which means it also associates a Loco `Error` type. - -If you reach out for the Loco `Error` type you can use any of the following as a response: - -```rust -Err(Error::string("some custom message")); -Err(Error::msg(other_error)); // turns other_error to its string representation -Err(Error::wrap(other_error)); -Err(Error::Unauthorized("some message")) - -// or through controller helpers: -unauthorized("some message") // create a full response object, calling Err on a created error -``` - diff --git a/docs-site/content/docs/the-app/initializers.md b/docs-site/content/docs/the-app/initializers.md deleted file mode 100644 index bde50d9c2..000000000 --- a/docs-site/content/docs/the-app/initializers.md +++ /dev/null @@ -1,156 +0,0 @@ -+++ -title = "Initializers" -description = "" -date = 2021-05-01T18:10:00+00:00 -updated = 2021-05-01T18:10:00+00:00 -draft = false -weight = 21 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "" -toc = true -top = false -flair =[] -+++ - -Initializers are a way to encapsulate a piece of infrastructure "wiring" that you need to do in your app. You put initializers in `src/initializers/`. - -### Writing initializers - -Currently, an initializer is anything that implements the `Initializer` trait: - -```rust -pub trait Initializer: Sync + Send { - /// The initializer name or identifier - fn name(&self) -> String; - - /// Occurs after the app's `before_run`. - /// Use this to for one-time initializations, load caches, perform web - /// hooks, etc. - async fn before_run(&self, _app_context: &AppContext) -> Result<()> { - Ok(()) - } - - /// Occurs after the app's `after_routes`. - /// Use this to compose additional functionality and wire it into an Axum - /// Router - async fn after_routes(&self, router: AxumRouter, _ctx: &AppContext) -> Result { - Ok(router) - } -} -``` - - -### Example: Integrating Axum Session - -You might want to add sessions to your app using `axum-session`. Also, you might want to share that piece of functionality between your own projects, or grab that piece of code from someone else. - -You can achieve this reuse easily, if you code the integration as an _initializer_: - -```rust -// place this in `src/initializers/axum_session.rs` -#[async_trait] -impl Initializer for AxumSessionInitializer { - fn name(&self) -> String { - "axum-session".to_string() - } - - async fn after_routes(&self, router: AxumRouter, _ctx: &AppContext) -> Result { - let session_config = - axum_session::SessionConfig::default().with_table_name("sessions_table"); - let session_store = - axum_session::SessionStore::::new(None, session_config) - .await - .unwrap(); - let router = router.layer(axum_session::SessionLayer::new(session_store)); - Ok(router) - } -} -``` - -And now your app structure looks like this: - -``` -src/ - bin/ - controllers/ - : - : - initializers/ <--- a new folder - mod.rs <--- a new module - axum_session.rs <--- your new initializer - : - : - app.rs <--- register initializers here -``` - - -### Using initializers - -After you've implemented your own initializer, you should implement the `initializers(..)` hook in your `src/app.rs` and provide a Vec of your initializers: - - -```rust - async fn initializers(ctx: &AppContext) -> Result>> { - let mut initializers: Vec> = vec![ - Box::new(initializers::axum_session::AxumSessionInitializer), - Box::new(initializers::view_engine::ViewEngineInitializer), - Box::new(initializers::hello_view_engine::HelloViewEngineInitializer), - Box::new(loco_extras::initializers::normalize_path::NormalizePathInitializer), - ]; - - if ctx.environment != Environment::Test { - initializers.push(Box::new( - loco_extras::initializers::prometheus::AxumPrometheusInitializer, - )); - } - - Ok(initializers) - } -``` - - -Loco will now run your initializer stack in the correct places during the app boot process. - -### What other things you can do? - -Right now initializers contain two integration points: - -* `before_run` - happens before running the app -- this is a pure "initialization" type of a hook. You can send web hooks, metric points, do cleanups, pre-flight checks, etc. -* `after_routes` - happens after routes have been added. You have access to the Axum router and its powerful layering integration points, this is where you will spend most of your time. - -### Compared to Rails initializers - -Rails initializers, are regular scripts that run once -- for initialization and have access to everything. They get their power from being able to access a "live" Rails app, modify it as a global instance. - -In Loco, accessing a global instance and mutating it is not possible in Rust (for a good reason!), and so we offer two integration points which are explicit and safe: - -1. Pure initialization (without any influence on a configured app) -2. Integration with a running app (via Axum router) - -Rails initializers need _ordering_ and _modification_. Meaning, a user should be certain that they run in a specific order (or re-order them), and a user is able to remove initializers that other people set before them. - -In Loco, we circumvent this complexity by making the user _provide a full vec_ of initializers. Vecs are ordered, and there are no implicit initializers. - -### The global logger initializer - -Some developers would like to customize their logging stack. In Loco this involves setting up tracing and tracing subscribers. - -Because at the moment tracing does not allow for re-initialization, or modification of an in-flight tracing stack, you *only get one chance to initialize and registr a global tracing stack*. - -This is why we added a new *App level hook*, called `init_logger`, which you can use to provide your own logging stack initialization. - -```rust -// in src/app.rs -impl Hooks for App { - // return `Ok(true)` if you took over initializing logger - // otherwise, return `Ok(false)` to use the Loco logging stack. - fn init_logger(_config: &config::Config, _env: &Environment) -> Result { - Ok(false) - } -} -``` - -After you've set up your own logger, return `Ok(true)` to signal that you took over initialization. diff --git a/docs-site/content/docs/the-app/models.md b/docs-site/content/docs/the-app/models.md index 2b5dbdfc0..4a085f67d 100644 --- a/docs-site/content/docs/the-app/models.md +++ b/docs-site/content/docs/the-app/models.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2024-01-07T21:10:00+00:00 draft = false -weight = 11 +weight = 3 sort_by = "weight" template = "docs/page.html" @@ -15,10 +15,53 @@ top = false flair =[] +++ -# Model principles Models in `loco` mean entity classes that allow for easy database querying and writes, but also migrations and seeding. +## Sqlite vs Postgres + +You might have selected `sqlite` which is the default when you created your new app. Loco allows you to _seamlessly_ move between `sqlite` and `postgres`. + +It is typical that you could use `sqlite` for development, and `postgres` for production. Some people prefer `postgres` all the way for both development and production because they use `pg` specific features. Some people use `sqlite` for production too, these days. Either way -- all valid choices. + +To configure `postgres` instead of `sqlite`, go into your `config/development.yaml` (or `production.yaml`) and set this, assuming your app is named `myapp`: + +```yaml +database: + uri: "{{ get_env(name="DATABASE_URL", default="postgres://loco:loco@localhost:5432/myapp_development") }" +``` + +
+Your local postgres database should be with loco:loco and a db named myapp_development. For test and production, your DB should be named myapp_test and myapp_production respectively. +
+ +For your convenience, here is a docker command to start up a Postgresql database server: + + +```sh +docker run -d -p 5432:5432 \ + -e POSTGRES_USER=loco \ + -e POSTGRES_DB=myapp_development \ + -e POSTGRES_PASSWORD="loco" \ + postgres:15.3-alpine +``` + + + + +Finally you can also use the doctor command to validate your connection: + + +```sh +$ cargo loco doctor + Finished dev [unoptimized + debuginfo] target(s) in 0.32s + Running `target/debug/myapp-cli doctor` +✅ SeaORM CLI is installed +✅ DB connection: success +✅ Redis connection: success +``` + + ## Fat models, slim controllers `loco` models **are designed after active record**. This means they're a central point in your universe, and every logic or operation your app has should be there. @@ -487,7 +530,7 @@ The seed process is not executed automatically. You can trigger the seed process ### Using a Task -1. Create a seeding task by following the instructions in the [Task Documentation](@/docs/the-app/task.md). +1. Create a seeding task by following the instructions in the [Task Documentation](@/docs/processing/task.md). 2. Configure the task to execute the `seed` function, as demonstrated in the example below: ```rust @@ -541,7 +584,7 @@ async fn handle_create_with_password_with_duplicate() { `Loco` enables you to work with more than one database and share instances across your application. -To set up an additional database, begin with database connections and configuration. The recommended approach is to navigate to your configuration file and add the following under [settings](@/docs/getting-started/config.md#settings): +To set up an additional database, begin with database connections and configuration. The recommended approach is to navigate to your configuration file and add the following under [settings](@/docs/the-app/your-project.md#settings): ```yaml settings: @@ -563,7 +606,7 @@ After configuring the database, import [loco-extras](https://crates.io/crates/lo loco-extras = { version = "*", features = ["initializer-extra-db"] } ``` -Next load this [initializer](@/docs/the-app/initializers.md) into `initializers` hook like this example +Next load this [initializer](@/docs/extras/pluggability.md#initializers) into `initializers` hook like this example ```rs async fn initializers(ctx: &AppContext) -> Result>> { @@ -622,7 +665,7 @@ settings: dangerously_recreate: false ``` -Next load this [initializer](@/docs/the-app/initializers.md) into `initializers` hook like this example +Next load this [initializer](@/docs/extras/pluggability.md#initializers) into `initializers` hook like this example ```rs async fn initializers(ctx: &AppContext) -> Result>> { diff --git a/docs-site/content/docs/the-app/views.md b/docs-site/content/docs/the-app/views.md index dc2eacaef..c223b11e9 100644 --- a/docs-site/content/docs/the-app/views.md +++ b/docs-site/content/docs/the-app/views.md @@ -4,7 +4,7 @@ description = "" date = 2021-05-01T18:10:00+00:00 updated = 2021-05-01T18:10:00+00:00 draft = false -weight = 14 +weight = 4 sort_by = "weight" template = "docs/page.html" diff --git a/docs-site/content/docs/the-app/your-project.md b/docs-site/content/docs/the-app/your-project.md new file mode 100644 index 000000000..3b8d736cc --- /dev/null +++ b/docs-site/content/docs/the-app/your-project.md @@ -0,0 +1,287 @@ ++++ +title = "Your Project" +description = "" +date = 2021-05-01T18:10:00+00:00 +updated = 2024-01-07T21:10:00+00:00 +draft = false +weight = 2 +sort_by = "weight" +template = "docs/page.html" + +[extra] +lead = "" +toc = true +top = false +flair =[] ++++ + +## Driving development with `cargo loco` + +Create your starter app: + + +```sh +❯ loco new +✔ ❯ App name? · myapp +✔ ❯ What would you like to build? · SaaS app (with DB and user auth) +✔ ❯ Select a DB Provider · Sqlite +✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) +✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) + +🚂 Loco app generated successfully in: +myapp/ +``` + + +Now `cd` into your app and try out the various commands: + + +```sh +cargo loco --help +``` + + + +```sh +The one-person framework for Rust + +Usage: blo-cli [OPTIONS] + +Commands: + start Start an app + db Perform DB operations + routes Describe all application endpoints + task Run a custom task + scheduler Run the scheduler + generate code generation creates a set of files and code templates based on a predefined set of rules + doctor Validate and diagnose configurations + version Display the app version + help Print this message or the help of the given subcommand(s) + +Options: + -e, --environment Specify the environment [default: development] + -h, --help Print help + -V, --version Print version +``` + + + +You can now drive your development through the CLI: + +``` +$ cargo loco generate model posts +$ cargo loco generate controller posts +$ cargo loco db migrate +$ cargo loco start +``` + +And running tests or working with Rust is just as you already know: + +``` +$ cargo build +$ cargo test +``` + +### Starting your app + +To run you app, run: + + +```sh +cargo loco start +``` + + +### Background workers + +Based on your configuration (in `config/`), your workers will know how to operate: + +```yaml +workers: + # requires Redis + mode: BackgroundQueue + + # can also use: + # ForegroundBlocking - great for testing + # BackgroundAsync - for same-process jobs, using tokio async +``` + +And now, you can run the actual process in various ways: + +- `rr start --worker` - run only a worker and process background jobs. This is great for scale. Run one service app with `rr start`, and then run many process based workers with `rr start --worker` distributed on any machine you want. + +* `rr start --server-and-worker` - will run both a service and a background worker processor in the same unix process. It uses Tokio for executing background jobs. This is great for those cases when you want to run on a single server without too much of an expense or have constrained resources. + +### Getting your app version + +Because your app is compiled, and then copied to production, Loco gives you two important operability pieces of information: + +* Which version is this app, and which GIT SHA was it built from? `cargo loco version` +* Which Loco version was this app compiled against? `cargo loco --version` + +Both version strings are parsable and stable so you can use it in integration scripts, monitoring tools and so on. + +You can shape your own custom app versioning scheme by overriding the `app_version` hook in your `src/app.rs` file. + + +## Using the scaffold generator + +Scaffolding is an efficient and speedy method for generating key components of an application. By utilizing scaffolding, you can create models, views, and controllers for a new resource all in one go. + + +See scaffold command: + +```sh +Generates a CRUD scaffold, model and controller + +Usage: blo-cli generate scaffold [OPTIONS] [FIELDS]... + +Arguments: + Name of the thing to generate + [FIELDS]... Model fields, eg. title:string hits:int + +Options: + -k, --kind The kind of scaffold to generate [default: api] [possible values: api, html, htmx] + -e, --environment Specify the environment [default: development] + -h, --help Print help + -V, --version Print version +``` + + +You can begin by generating a scaffold for the Post resource, which will represent a single blog posting. To accomplish this, open your terminal and enter the following command: + +```sh +cargo loco generate scaffold posts name:string title:string content:text +``` + + +The scaffold generate command support API, HTML or HTMX by adding `--template` flag to scaffold command. + +### Scaffold file layout + +The scaffold generator will build several files in your application: + +| File | Purpose | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------- | +| `migration/src/lib.rs` | Include Post migration. | +| `migration/src/m20240606_102031_posts.rs` | Posts migration. | +| `src/app.rs` | Adding Posts to application router. | +| `src/controllers/mod.rs` | Include the Posts controller. | +| `src/controllers/posts.rs` | The Posts controller. | +| `tests/requests/posts.rs` | Functional testing. | +| `src/models/mod.rs` | Including Posts model. | +| `src/models/posts.rs` | Posts model, | +| `src/models/_entities/mod.rs` | Includes Posts Sea-orm entity model. | +| `src/models/_entities/posts.rs` | Sea-orm entity model. | +| `src/views/mod.rs` | Including Posts views. only for HTML and HTMX templates. | +| `src/views/posts.rs` | Posts template generator. only for HTML and HTMX templates. | +| `assets/views/posts/create.html` | Create post template. only for HTML and HTMX templates. | +| `assets/views/posts/edit.html` | Edit post template. only for HTML and HTMX templates. | +| `assets/views/posts/edit.html` | Edit post template. only for HTML and HTMX templates. | +| `assets/views/posts/list.html` | List post template. only for HTML and HTMX templates. | +| `assets/views/posts/show.html` | Show post template. only for HTML and HTMX templates. | + +## Your app configuration +Configuration in `loco` lives in `config/` and by default sets up 3 different environments: + +``` +config/ + development.yaml + production.yaml + test.yaml +``` + +An environment is picked up automatically based on: + +- A command line flag: `cargo loco start --environment production`, if not given, fallback to +- `LOCO_ENV` or `RAILS_ENV` or `NODE_ENV` + +When nothing is given, the default value is `development`. + +The `Loco` framework allows support for custom environments in addition to the default environment. To add a custom environment, create a configuration file with a name matching the environment identifier used in the preceding example. + +### Placeholders / variables in config + +It is possible to inject values into a configuration file. In this example, we get a port value from the `NODE_PORT` environment variable: + +```yaml +# config/development.yaml +# every configuration file is a valid Tera template +server: + # Port on which the server will listen. the server binding is 0.0.0.0:{PORT} + port: {{/* get_env(name="NODE_PORT", default=5150) */}} + # The UI hostname or IP address that mailers will point to. + host: http://localhost + # Out of the box middleware configuration. to disable middleware you can changed the `enable` field to `false` of comment the middleware block +``` + +The [get_env](https://keats.github.io/tera/docs/#get-env) function is part of the Tera template engine. Refer to the [Tera](https://keats.github.io/tera/docs) docs to see what more you can use. + +### Example + +Suppose you want to add a 'qa' environment. Create a `qa.yaml` file in the config folder: + +``` +config/ + development.yaml + production.yaml + test.yaml + qa.yaml +``` + +To run the application using the 'qa' environment, execute the following command: + +```sh +LOCO_ENV=qa cargo loco start +``` + + +### Settings + +The configuration files contain knobs to set up your Loco app. You can also have your custom settings, with the `settings:` section. in `config/development.yaml` add the `settings:` section + +```yaml +settings: + allow_list: + - google.com + - apple.com +``` + + +These setting will appear in `ctx.config.settings` as `serde_json::Value`. You can create your strongly typed settings by adding a struct: + +```rust +// put this in src/common/settings.rs +#[derive(Serialize, Deserialize, Default, Debug)] +pub struct Settings { + pub allow_list: Option>, +} + +impl Settings { + pub fn from_json(value: &serde_json::Value) -> Result { + Ok(serde_json::from_value(value.clone())?) + } +} +``` + +Then, you can access settings from anywhere like this: + + +```rust +// in controllers, workers, tasks, or elsewhere, +// as long as you have access to AppContext (here: `ctx`) + +if let Some(settings) = &ctx.config.settings { + let settings = common::settings::Settings::from_json(settings)?; + println!("allow list: {:?}", settings.allow_list); +} +``` + +### Logger + +Other than the commented fields in the `logger:` section on your YAML file, here's some more context: + +* `logger.pretty_backtrace` - will display colorful backtrace without noise for great development experience. Note that this forcefully sets `RUST_BACKTRACE=1` into the process' env, which enables a (costly) backtrace capture on specific errors. Enable this in development, disable it in production. When needed in production, use `RUST_BACKTRACE=1` ad-hoc in the command line to show it. + + +For all available configuration options [click here](https://docs.rs/loco-rs/latest/loco_rs/config/struct.Config.html) diff --git a/docs-site/package.json b/docs-site/package.json new file mode 100644 index 000000000..71965a7a2 --- /dev/null +++ b/docs-site/package.json @@ -0,0 +1,21 @@ +{ + "name": "loco", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "NODE_ENV=production npx tailwindcss -i styles/styles.css -o static/styles/styles.css", + "watch-tailwinds": "npx tailwindcss -i styles/styles.css -o static/styles/styles.css --watch", + "serve": "zola serve", + "dev": "npm-run-all --parallel watch-tailwinds serve" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@tailwindcss/typography": "^0.5.13", + "autoprefixer": "^10.4.19", + "npm-run-all": "^4.1.5", + "tailwindcss": "^3.4.7" + } +} \ No newline at end of file diff --git a/docs-site/pnpm-lock.yaml b/docs-site/pnpm-lock.yaml new file mode 100644 index 000000000..947d2b284 --- /dev/null +++ b/docs-site/pnpm-lock.yaml @@ -0,0 +1,1862 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@tailwindcss/typography': + specifier: ^0.5.13 + version: 0.5.13(tailwindcss@3.4.7) + autoprefixer: + specifier: ^10.4.19 + version: 10.4.19(postcss@8.4.40) + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + tailwindcss: + specifier: ^3.4.7 + version: 3.4.7 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@tailwindcss/typography@0.5.13': + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001643: + resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.2: + resolution: {integrity: sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@3.4.7: + resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@tailwindcss/typography@0.5.13(tailwindcss@3.4.7)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.7 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + autoprefixer@10.4.19(postcss@8.4.40): + dependencies: + browserslist: 4.23.2 + caniuse-lite: 1.0.30001643 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + balanced-match@1.0.2: {} + + binary-extensions@2.3.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001643 + electron-to-chromium: 1.5.2 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + camelcase-css@2.0.1: {} + + caniuse-lite@1.0.30001643: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + didyoumean@1.2.2: {} + + dlv@1.1.3: {} + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.2: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + escalade@3.1.2: {} + + escape-string-regexp@1.0.5: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.2.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + fraction.js@4.3.7: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.6: {} + + json-parse-better-errors@1.0.2: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + lodash.castarray@4.4.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.merge@4.6.2: {} + + lru-cache@10.4.3: {} + + memorystream@0.3.1: {} + + merge2@1.4.1: {} + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + nice-try@1.0.5: {} + + node-releases@2.0.18: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.6 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + package-json-from-dist@1.0.0: {} + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pidtree@0.3.1: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pirates@4.0.6: {} + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.40): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.40 + + postcss-load-config@4.0.2(postcss@8.4.40): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.40 + + postcss-nested@6.2.0(postcss@8.4.40): + dependencies: + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.40: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + semver@5.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@4.1.0: {} + + source-map-js@1.2.0: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.padend@3.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@3.4.7: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.40 + postcss-import: 15.1.0(postcss@8.4.40) + postcss-js: 4.0.1(postcss@8.4.40) + postcss-load-config: 4.0.2(postcss@8.4.40) + postcss-nested: 6.2.0(postcss@8.4.40) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-interface-checker@0.1.13: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + yaml@2.5.0: {} diff --git a/docs-site/static/ahrefs_f06cfb9c2671c1b7a5b6eec0d47a07719bd6d5a2240b829cad6a3f40684fa370 b/docs-site/static/ahrefs_f06cfb9c2671c1b7a5b6eec0d47a07719bd6d5a2240b829cad6a3f40684fa370 deleted file mode 100644 index 0b57f2771..000000000 --- a/docs-site/static/ahrefs_f06cfb9c2671c1b7a5b6eec0d47a07719bd6d5a2240b829cad6a3f40684fa370 +++ /dev/null @@ -1 +0,0 @@ -ahrefs-site-verification_f06cfb9c2671c1b7a5b6eec0d47a07719bd6d5a2240b829cad6a3f40684fa370 \ No newline at end of file diff --git a/docs-site/static/apple-touch-icon.png b/docs-site/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..88436dbfb6ddbde819f7f76947030b10ab1ce506 GIT binary patch literal 8140 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/static/bench-no-db.svg b/docs-site/static/bench-no-db.svg new file mode 100644 index 000000000..87a1c6f0b --- /dev/null +++ b/docs-site/static/bench-no-db.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/static/bg.svg b/docs-site/static/bg.svg new file mode 100644 index 000000000..9e9d10ab8 --- /dev/null +++ b/docs-site/static/bg.svg @@ -0,0 +1,575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/static/cloud-bg.svg b/docs-site/static/cloud-bg.svg new file mode 100644 index 000000000..930ebc2cb --- /dev/null +++ b/docs-site/static/cloud-bg.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/static/cloud.svg b/docs-site/static/cloud.svg new file mode 100644 index 000000000..86d04ead5 --- /dev/null +++ b/docs-site/static/cloud.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs-site/static/favicon-16x16.png b/docs-site/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..611ec8503e99d9d14c29b89b34f1c1e6f5823eb3 GIT binary patch literal 1198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>1U;lsq_W#VWCsU@p+Op;Uo-O|uOu66R|Nr=bmm4?!KYkdb z@c2OxdjIC)+-biL?V4z1vc53uZd=W{P|p)n`d_SGbTu^e&9)71w{AF-W_-0F^u>yW zPiOQ$ojKvf%0;&eQ(vxL^lHr#AbPoK@$KTozZDsOtd#y(D*i1=2Aci1rR`|NVP8G4Z&C#Q_ zyETgr$ja^$72UzWa7<10Q&YwN{-*ykdj22T`+su#|4FSonVHY}_#D;Mz1!OQbl%*T zsWGq9<1U#R-1c($KcV^mh137%OaO(zn^*tWFZC!p>=T89z*TxmE8%vKy z_{=xetP|s26cx0!w(Lts^{?Lg8`*K2f<1ba#jAwbYs9&$MLEwUhd0Rxwkn8psLQl# z$Tlm8?#_to)=}uuSLrcO?J?GDk{6j_p|jM%WR^-KlgZ+02%Bhp1!W^FWBX|_^fU=-mC!% zee`s343W5;oWQ{3rj{lamS*P0rjhXcfywp_TOK`n*7%{)a!qbdaC|fN=T*4jwMH#t9cTeCRl#;mNl0#f%#} zezY7}@?^@DEgK9n*=CkxzwSA+VZ)j?bM9=|U=YbB`G3!qKTU@gJ(_gMXhDNab4{gd zYN)Bel`Gd;8@Fg&X|A}++v|H)H!(4=i^uEK+T6FYvU6ka+U~9WtF?-UCren(Zwh#jVMV;EJ?LWE=mPb3`PbErER1{tn z5>XPASgue|l%JNFld4csS&*ubSx^GBvSQBTPdprjVHz5z{7;|pd>X{Stjw*K%q^@e z>^)h8Sy;iP!Q^lXv-0K;h0`~#oH%mkh|Cf8(+wUAy!04ei3^r|ax$F?w1UCY)z4*} HQ$iB}+o&}y literal 0 HcmV?d00001 diff --git a/docs-site/static/favicon-32x32.png b/docs-site/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..9751d47db2bacd0d0ad1e0ca7b709e8439d6571a GIT binary patch literal 1323 zcmV+`1=RY9P)MM#L>m*00b=~6 z1~JC^2SplaZ4+S|EBD5 z*&rSM0N7LeGlzAwy|^uUP60?x`}=JsIV{XU?8Rq9yDCb{LH=S0pn8Lqh$a*>WN0aGwVW1A*X#>k@h4?%Ydzn$`btascerl;z+FtCFNm9 zVgg(p9fkS6J~6nZqeJ|^tn0Ap&>P@#D6m}YhO)We!RUF%ng+ALFWCUR zj)Utw9=}V|pt8OmF1ECYnKjML5JWLVuBa;P?Ck|#Qq>qn69;jza z)6>3l4Gndac8Z=zsNk+(El_`3S65Pi34Z=(;6wcYf6fWwg};~JkHHhL$LE9cy1G30 z@#94wnMg3m!#*FUwov@#9pwce$mlPu5%U)>zz^@g3$+hFBCKY|y|&jDB;dwkNRUn) zAB6KqzZCscI4e}x_t7V?{mG|u`l2eL)oQMZ!Pyy@96kn9!-KGZ#{? zly*Sk$)CD$^J>$)tWyOwA{YBPFk6yMP=vJK1pk@Smf3p#yOYT|D+JEr(Y;|)rT7}Y zwa!5|h*rn~ilTbwees2fJq`u*WU3#1{V)u_{c75pQar?78axHdR|0};X>tN0*A_)f zeSH5uf9!I&MF@CPb!w8#{p73~-(hN#5#fyB%#7vsD2#zqVz3cU$||)Iu1;Qna#_N0 z%n*y;_GE_xn5;mN%MDDClYPawUb|~_T2I~yziN55`=86dwFYMcY3U?_vV_wzNdg&L zB5^C|v`7KD*dZ*{xge9{eM=auXGj0{ZHf5epjxPOx_uS0q`A;>MR5_7mf*()9ZBej zoYDV+&`~Ui3Io$iBCcJv0|TKn0faHnHm#(pW<-(|4gMD}U6$G2yT3l6n + + + + + + + + + + + + + + + + diff --git a/docs-site/static/icon.svg b/docs-site/static/icon.svg new file mode 100644 index 000000000..473d0e5c5 --- /dev/null +++ b/docs-site/static/icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/static/images/logo.png b/docs-site/static/images/logo.png deleted file mode 100644 index 218aefe48b2f0cfca463a73d875b23eebcc40d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164038 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 z 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 P#RZrdT`>HlPl)_K2yGHE diff --git a/docs-site/themes/adidoks/static/js/main.js b/docs-site/static/js/main.js similarity index 58% rename from docs-site/themes/adidoks/static/js/main.js rename to docs-site/static/js/main.js index 2fbc2285b..9dd5f748e 100644 --- a/docs-site/themes/adidoks/static/js/main.js +++ b/docs-site/static/js/main.js @@ -1,14 +1,14 @@ // Set darkmode document.getElementById('mode').addEventListener('click', () => { - document.body.classList.toggle('dark'); - localStorage.setItem('theme', document.body.classList.contains('dark') ? 'dark' : 'light'); - + document.documentElement.classList.toggle('dark'); + localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light'); + }); - + // enforce local storage setting but also fallback to user-agent preferences if (localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia("(prefers-color-scheme: dark)").matches)) { - - document.body.classList.add('dark'); - -} + + document.documentElement.classList.add('dark'); + +} \ No newline at end of file diff --git a/docs-site/static/js/search.js b/docs-site/static/js/search.js new file mode 100644 index 000000000..fe032062b --- /dev/null +++ b/docs-site/static/js/search.js @@ -0,0 +1,317 @@ +var suggestions = document.getElementById('suggestions'); +var userinput = document.getElementById('userinput'); + +document.addEventListener('keydown', inputFocus); + +function inputFocus(e) { + + if (e.keyCode === 191 + && document.activeElement.tagName !== "INPUT" + && document.activeElement.tagName !== "TEXTAREA") { + e.preventDefault(); + userinput.focus(); + } + + if (e.keyCode === 27) { + userinput.blur(); + suggestions.classList.add('d-none'); + } + +} + +document.addEventListener('click', function (event) { + + var isClickInsideElement = suggestions.contains(event.target); + + if (!isClickInsideElement) { + suggestions.classList.add('d-none'); + } + +}); + +/* +Source: + - https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3 +*/ + +document.addEventListener('keydown', suggestionFocus); + +function suggestionFocus(e) { + const focusableSuggestions = suggestions.querySelectorAll('a'); + if (suggestions.classList.contains('d-none') + || focusableSuggestions.length === 0) { + return; + } + const focusable = [...focusableSuggestions]; + const index = focusable.indexOf(document.activeElement); + + let nextIndex = 0; + + if (e.keyCode === 38) { + e.preventDefault(); + nextIndex = index > 0 ? index - 1 : 0; + focusableSuggestions[nextIndex].focus(); + } + else if (e.keyCode === 40) { + e.preventDefault(); + nextIndex = index + 1 < focusable.length ? index + 1 : index; + focusableSuggestions[nextIndex].focus(); + } + +} + +/* +Source: + - https://github.com/nextapps-de/flexsearch#index-documents-field-search + - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html + - http://elasticlunr.com/ + - https://github.com/getzola/zola/blob/master/docs/static/search.js +*/ +(function () { + var index = elasticlunr.Index.load(window.searchIndex); + userinput.addEventListener('input', show_results, true); + suggestions.addEventListener('click', accept_suggestion, true); + + function show_results() { + var value = this.value.trim(); + var options = { + bool: "OR", + fields: { + title: { boost: 2 }, + body: { boost: 1 }, + } + }; + var results = index.search(value, options); + + var entry, childs = suggestions.childNodes; + var i = 0, len = results.length; + var items = value.split(/\s+/); + suggestions.classList.remove('d-none'); + + results.forEach(function (page) { + if (page.doc.body !== '') { + entry = document.createElement('div'); + + entry.innerHTML = ''; + + a = entry.querySelector('a'), + t = entry.querySelector('span:first-child'), + d = entry.querySelector('span:nth-child(2)'); + a.href = page.ref; + t.textContent = page.doc.title; + d.innerHTML = makeTeaser(page.doc.body, items); + + suggestions.appendChild(entry); + } + }); + + while (childs.length > len) { + suggestions.removeChild(childs[i]) + } + + } + + function accept_suggestion() { + + while (suggestions.lastChild) { + + suggestions.removeChild(suggestions.lastChild); + } + + return false; + } + + // Taken from mdbook + // The strategy is as follows: + // First, assign a value to each word in the document: + // Words that correspond to search terms (stemmer aware): 40 + // Normal words: 2 + // First word in a sentence: 8 + // Then use a sliding window with a constant number of words and count the + // sum of the values of the words within the window. Then use the window that got the + // maximum sum. If there are multiple maximas, then get the last one. + // Enclose the terms in . + function makeTeaser(body, terms) { + var TERM_WEIGHT = 40; + var NORMAL_WORD_WEIGHT = 2; + var FIRST_WORD_WEIGHT = 8; + var TEASER_MAX_WORDS = 30; + + var stemmedTerms = terms.map(function (w) { + return elasticlunr.stemmer(w.toLowerCase()); + }); + var termFound = false; + var index = 0; + var weighted = []; // contains elements of ["word", weight, index_in_document] + + // split in sentences, then words + var sentences = body.toLowerCase().split(". "); + for (var i in sentences) { + var words = sentences[i].split(/[\s\n]/); + var value = FIRST_WORD_WEIGHT; + for (var j in words) { + + var word = words[j]; + + if (word.length > 0) { + for (var k in stemmedTerms) { + if (elasticlunr.stemmer(word).startsWith(stemmedTerms[k])) { + value = TERM_WEIGHT; + termFound = true; + } + } + weighted.push([word, value, index]); + value = NORMAL_WORD_WEIGHT; + } + + index += word.length; + index += 1; // ' ' or '.' if last word in sentence + } + + index += 1; // because we split at a two-char boundary '. ' + } + + if (weighted.length === 0) { + if (body.length !== undefined && body.length > TEASER_MAX_WORDS * 10) { + return body.substring(0, TEASER_MAX_WORDS * 10) + '...'; + } else { + return body; + } + } + + var windowWeights = []; + var windowSize = Math.min(weighted.length, TEASER_MAX_WORDS); + // We add a window with all the weights first + var curSum = 0; + for (var i = 0; i < windowSize; i++) { + curSum += weighted[i][1]; + } + windowWeights.push(curSum); + + for (var i = 0; i < weighted.length - windowSize; i++) { + curSum -= weighted[i][1]; + curSum += weighted[i + windowSize][1]; + windowWeights.push(curSum); + } + + // If we didn't find the term, just pick the first window + var maxSumIndex = 0; + if (termFound) { + var maxFound = 0; + // backwards + for (var i = windowWeights.length - 1; i >= 0; i--) { + if (windowWeights[i] > maxFound) { + maxFound = windowWeights[i]; + maxSumIndex = i; + } + } + } + + var teaser = []; + var startIndex = weighted[maxSumIndex][2]; + for (var i = maxSumIndex; i < maxSumIndex + windowSize; i++) { + var word = weighted[i]; + if (startIndex < word[2]) { + // missing text from index to start of `word` + teaser.push(body.substring(startIndex, word[2])); + startIndex = word[2]; + } + + // add around search terms + if (word[1] === TERM_WEIGHT) { + teaser.push(""); + } + + startIndex = word[2] + word[0].length; + // Check the string is ascii characters or not + var re = /^[\x00-\xff]+$/ + if (word[1] !== TERM_WEIGHT && word[0].length >= 12 && !re.test(word[0])) { + // If the string's length is too long, it maybe a Chinese/Japance/Korean article + // if using substring method directly, it may occur error codes on emoji chars + var strBefor = body.substring(word[2], startIndex); + var strAfter = substringByByte(strBefor, 12); + teaser.push(strAfter); + } else { + teaser.push(body.substring(word[2], startIndex)); + } + + if (word[1] === TERM_WEIGHT) { + teaser.push(""); + } + } + teaser.push("…"); + return teaser.join(""); + } +}()); + + +// Get substring by bytes +// If using JavaScript inline substring method, it will return error codes +// Source: https://www.52pojie.cn/thread-1059814-1-1.html +function substringByByte(str, maxLength) { + var result = ""; + var flag = false; + var len = 0; + var length = 0; + var length2 = 0; + for (var i = 0; i < str.length; i++) { + var code = str.codePointAt(i).toString(16); + if (code.length > 4) { + i++; + if ((i + 1) < str.length) { + flag = str.codePointAt(i + 1).toString(16) == "200d"; + } + } + if (flag) { + len += getByteByHex(code); + if (i == str.length - 1) { + length += len; + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + } else { + break + } + } + } else { + if (len != 0) { + length += len; + length += getByteByHex(code); + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + length2 = i + 1; + } else { + break + } + len = 0; + continue; + } + length += getByteByHex(code); + if (length <= maxLength) { + if (code.length <= 4) { + result += str[i] + } else { + result += str[i - 1] + str[i] + } + length2 = i + 1; + } else { + break + } + } + } + return result; +} + +// Get the string bytes from binary +function getByteByBinary(binaryCode) { + // Binary system, starts with `0b` in ES6 + // Octal number system, starts with `0` in ES5 and starts with `0o` in ES6 + // Hexadecimal, starts with `0x` in both ES5 and ES6 + var byteLengthDatas = [0, 1, 2, 3, 4]; + var len = byteLengthDatas[Math.ceil(binaryCode.length / 8)]; + return len; +} + +// Get the string bytes from hexadecimal +function getByteByHex(hexCode) { + return getByteByBinary(parseInt(hexCode, 16).toString(2)); +} \ No newline at end of file diff --git a/docs-site/static/mountain-bg.svg b/docs-site/static/mountain-bg.svg new file mode 100644 index 000000000..3e2047547 --- /dev/null +++ b/docs-site/static/mountain-bg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs-site/static/plugins/elasticlunr.min.js b/docs-site/static/plugins/elasticlunr.min.js new file mode 100644 index 000000000..ead0de57a --- /dev/null +++ b/docs-site/static/plugins/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function () { function e(e) { if (null === e || "object" != typeof e) return e; var t = e.constructor(); for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]); return t } var t = function (e) { var n = new t.Index; return n.pipeline.add(t.trimmer, t.stopWordFilter, t.stemmer), e && e.call(n, n), n }; t.version = "0.9.5", lunr = t, t.utils = {}, t.utils.warn = function (e) { return function (t) { e.console && console.warn && console.warn(t) } }(this), t.utils.toString = function (e) { return void 0 === e || null === e ? "" : e.toString() }, t.EventEmitter = function () { this.events = {} }, t.EventEmitter.prototype.addListener = function () { var e = Array.prototype.slice.call(arguments), t = e.pop(), n = e; if ("function" != typeof t) throw new TypeError("last argument must be a function"); n.forEach(function (e) { this.hasHandler(e) || (this.events[e] = []), this.events[e].push(t) }, this) }, t.EventEmitter.prototype.removeListener = function (e, t) { if (this.hasHandler(e)) { var n = this.events[e].indexOf(t); -1 !== n && (this.events[e].splice(n, 1), 0 == this.events[e].length && delete this.events[e]) } }, t.EventEmitter.prototype.emit = function (e) { if (this.hasHandler(e)) { var t = Array.prototype.slice.call(arguments, 1); this.events[e].forEach(function (e) { e.apply(void 0, t) }, this) } }, t.EventEmitter.prototype.hasHandler = function (e) { return e in this.events }, t.tokenizer = function (e) { if (!arguments.length || null === e || void 0 === e) return []; if (Array.isArray(e)) { var n = e.filter(function (e) { return null === e || void 0 === e ? !1 : !0 }); n = n.map(function (e) { return t.utils.toString(e).toLowerCase() }); var i = []; return n.forEach(function (e) { var n = e.split(t.tokenizer.seperator); i = i.concat(n) }, this), i } return e.toString().trim().toLowerCase().split(t.tokenizer.seperator) }, t.tokenizer.defaultSeperator = /[\s\-]+/, t.tokenizer.seperator = t.tokenizer.defaultSeperator, t.tokenizer.setSeperator = function (e) { null !== e && void 0 !== e && "object" == typeof e && (t.tokenizer.seperator = e) }, t.tokenizer.resetSeperator = function () { t.tokenizer.seperator = t.tokenizer.defaultSeperator }, t.tokenizer.getSeperator = function () { return t.tokenizer.seperator }, t.Pipeline = function () { this._queue = [] }, t.Pipeline.registeredFunctions = {}, t.Pipeline.registerFunction = function (e, n) { n in t.Pipeline.registeredFunctions && t.utils.warn("Overwriting existing registered function: " + n), e.label = n, t.Pipeline.registeredFunctions[n] = e }, t.Pipeline.getRegisteredFunction = function (e) { return e in t.Pipeline.registeredFunctions != !0 ? null : t.Pipeline.registeredFunctions[e] }, t.Pipeline.warnIfFunctionNotRegistered = function (e) { var n = e.label && e.label in this.registeredFunctions; n || t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n", e) }, t.Pipeline.load = function (e) { var n = new t.Pipeline; return e.forEach(function (e) { var i = t.Pipeline.getRegisteredFunction(e); if (!i) throw new Error("Cannot load un-registered function: " + e); n.add(i) }), n }, t.Pipeline.prototype.add = function () { var e = Array.prototype.slice.call(arguments); e.forEach(function (e) { t.Pipeline.warnIfFunctionNotRegistered(e), this._queue.push(e) }, this) }, t.Pipeline.prototype.after = function (e, n) { t.Pipeline.warnIfFunctionNotRegistered(n); var i = this._queue.indexOf(e); if (-1 === i) throw new Error("Cannot find existingFn"); this._queue.splice(i + 1, 0, n) }, t.Pipeline.prototype.before = function (e, n) { t.Pipeline.warnIfFunctionNotRegistered(n); var i = this._queue.indexOf(e); if (-1 === i) throw new Error("Cannot find existingFn"); this._queue.splice(i, 0, n) }, t.Pipeline.prototype.remove = function (e) { var t = this._queue.indexOf(e); -1 !== t && this._queue.splice(t, 1) }, t.Pipeline.prototype.run = function (e) { for (var t = [], n = e.length, i = this._queue.length, o = 0; n > o; o++) { for (var r = e[o], s = 0; i > s && (r = this._queue[s](r, o, e), void 0 !== r && null !== r); s++); void 0 !== r && null !== r && t.push(r) } return t }, t.Pipeline.prototype.reset = function () { this._queue = [] }, t.Pipeline.prototype.get = function () { return this._queue }, t.Pipeline.prototype.toJSON = function () { return this._queue.map(function (e) { return t.Pipeline.warnIfFunctionNotRegistered(e), e.label }) }, t.Index = function () { this._fields = [], this._ref = "id", this.pipeline = new t.Pipeline, this.documentStore = new t.DocumentStore, this.index = {}, this.eventEmitter = new t.EventEmitter, this._idfCache = {}, this.on("add", "remove", "update", function () { this._idfCache = {} }.bind(this)) }, t.Index.prototype.on = function () { var e = Array.prototype.slice.call(arguments); return this.eventEmitter.addListener.apply(this.eventEmitter, e) }, t.Index.prototype.off = function (e, t) { return this.eventEmitter.removeListener(e, t) }, t.Index.load = function (e) { e.version !== t.version && t.utils.warn("version mismatch: current " + t.version + " importing " + e.version); var n = new this; n._fields = e.fields, n._ref = e.ref, n.documentStore = t.DocumentStore.load(e.documentStore), n.pipeline = t.Pipeline.load(e.pipeline), n.index = {}; for (var i in e.index) n.index[i] = t.InvertedIndex.load(e.index[i]); return n }, t.Index.prototype.addField = function (e) { return this._fields.push(e), this.index[e] = new t.InvertedIndex, this }, t.Index.prototype.setRef = function (e) { return this._ref = e, this }, t.Index.prototype.saveDocument = function (e) { return this.documentStore = new t.DocumentStore(e), this }, t.Index.prototype.addDoc = function (e, n) { if (e) { var n = void 0 === n ? !0 : n, i = e[this._ref]; this.documentStore.addDoc(i, e), this._fields.forEach(function (n) { var o = this.pipeline.run(t.tokenizer(e[n])); this.documentStore.addFieldLength(i, n, o.length); var r = {}; o.forEach(function (e) { e in r ? r[e] += 1 : r[e] = 1 }, this); for (var s in r) { var u = r[s]; u = Math.sqrt(u), this.index[n].addToken(s, { ref: i, tf: u }) } }, this), n && this.eventEmitter.emit("add", e, this) } }, t.Index.prototype.removeDocByRef = function (e) { if (e && this.documentStore.isDocStored() !== !1 && this.documentStore.hasDoc(e)) { var t = this.documentStore.getDoc(e); this.removeDoc(t, !1) } }, t.Index.prototype.removeDoc = function (e, n) { if (e) { var n = void 0 === n ? !0 : n, i = e[this._ref]; this.documentStore.hasDoc(i) && (this.documentStore.removeDoc(i), this._fields.forEach(function (n) { var o = this.pipeline.run(t.tokenizer(e[n])); o.forEach(function (e) { this.index[n].removeToken(e, i) }, this) }, this), n && this.eventEmitter.emit("remove", e, this)) } }, t.Index.prototype.updateDoc = function (e, t) { var t = void 0 === t ? !0 : t; this.removeDocByRef(e[this._ref], !1), this.addDoc(e, !1), t && this.eventEmitter.emit("update", e, this) }, t.Index.prototype.idf = function (e, t) { var n = "@" + t + "/" + e; if (Object.prototype.hasOwnProperty.call(this._idfCache, n)) return this._idfCache[n]; var i = this.index[t].getDocFreq(e), o = 1 + Math.log(this.documentStore.length / (i + 1)); return this._idfCache[n] = o, o }, t.Index.prototype.getFields = function () { return this._fields.slice() }, t.Index.prototype.search = function (e, n) { if (!e) return []; e = "string" == typeof e ? { any: e } : JSON.parse(JSON.stringify(e)); var i = null; null != n && (i = JSON.stringify(n)); for (var o = new t.Configuration(i, this.getFields()).get(), r = {}, s = Object.keys(e), u = 0; u < s.length; u++) { var a = s[u]; r[a] = this.pipeline.run(t.tokenizer(e[a])) } var l = {}; for (var c in o) { var d = r[c] || r.any; if (d) { var f = this.fieldSearch(d, c, o), h = o[c].boost; for (var p in f) f[p] = f[p] * h; for (var p in f) p in l ? l[p] += f[p] : l[p] = f[p] } } var v, g = []; for (var p in l) v = { ref: p, score: l[p] }, this.documentStore.hasDoc(p) && (v.doc = this.documentStore.getDoc(p)), g.push(v); return g.sort(function (e, t) { return t.score - e.score }), g }, t.Index.prototype.fieldSearch = function (e, t, n) { var i = n[t].bool, o = n[t].expand, r = n[t].boost, s = null, u = {}; return 0 !== r ? (e.forEach(function (e) { var n = [e]; 1 == o && (n = this.index[t].expandToken(e)); var r = {}; n.forEach(function (n) { var o = this.index[t].getDocs(n), a = this.idf(n, t); if (s && "AND" == i) { var l = {}; for (var c in s) c in o && (l[c] = o[c]); o = l } n == e && this.fieldSearchStats(u, n, o); for (var c in o) { var d = this.index[t].getTermFrequency(n, c), f = this.documentStore.getFieldLength(c, t), h = 1; 0 != f && (h = 1 / Math.sqrt(f)); var p = 1; n != e && (p = .15 * (1 - (n.length - e.length) / n.length)); var v = d * a * h * p; c in r ? r[c] += v : r[c] = v } }, this), s = this.mergeScores(s, r, i) }, this), s = this.coordNorm(s, u, e.length)) : void 0 }, t.Index.prototype.mergeScores = function (e, t, n) { if (!e) return t; if ("AND" == n) { var i = {}; for (var o in t) o in e && (i[o] = e[o] + t[o]); return i } for (var o in t) o in e ? e[o] += t[o] : e[o] = t[o]; return e }, t.Index.prototype.fieldSearchStats = function (e, t, n) { for (var i in n) i in e ? e[i].push(t) : e[i] = [t] }, t.Index.prototype.coordNorm = function (e, t, n) { for (var i in e) if (i in t) { var o = t[i].length; e[i] = e[i] * o / n } return e }, t.Index.prototype.toJSON = function () { var e = {}; return this._fields.forEach(function (t) { e[t] = this.index[t].toJSON() }, this), { version: t.version, fields: this._fields, ref: this._ref, documentStore: this.documentStore.toJSON(), index: e, pipeline: this.pipeline.toJSON() } }, t.Index.prototype.use = function (e) { var t = Array.prototype.slice.call(arguments, 1); t.unshift(this), e.apply(this, t) }, t.DocumentStore = function (e) { this._save = null === e || void 0 === e ? !0 : e, this.docs = {}, this.docInfo = {}, this.length = 0 }, t.DocumentStore.load = function (e) { var t = new this; return t.length = e.length, t.docs = e.docs, t.docInfo = e.docInfo, t._save = e.save, t }, t.DocumentStore.prototype.isDocStored = function () { return this._save }, t.DocumentStore.prototype.addDoc = function (t, n) { this.hasDoc(t) || this.length++, this.docs[t] = this._save === !0 ? e(n) : null }, t.DocumentStore.prototype.getDoc = function (e) { return this.hasDoc(e) === !1 ? null : this.docs[e] }, t.DocumentStore.prototype.hasDoc = function (e) { return e in this.docs }, t.DocumentStore.prototype.removeDoc = function (e) { this.hasDoc(e) && (delete this.docs[e], delete this.docInfo[e], this.length--) }, t.DocumentStore.prototype.addFieldLength = function (e, t, n) { null !== e && void 0 !== e && 0 != this.hasDoc(e) && (this.docInfo[e] || (this.docInfo[e] = {}), this.docInfo[e][t] = n) }, t.DocumentStore.prototype.updateFieldLength = function (e, t, n) { null !== e && void 0 !== e && 0 != this.hasDoc(e) && this.addFieldLength(e, t, n) }, t.DocumentStore.prototype.getFieldLength = function (e, t) { return null === e || void 0 === e ? 0 : e in this.docs && t in this.docInfo[e] ? this.docInfo[e][t] : 0 }, t.DocumentStore.prototype.toJSON = function () { return { docs: this.docs, docInfo: this.docInfo, length: this.length, save: this._save } }, t.stemmer = function () { var e = { ational: "ate", tional: "tion", enci: "ence", anci: "ance", izer: "ize", bli: "ble", alli: "al", entli: "ent", eli: "e", ousli: "ous", ization: "ize", ation: "ate", ator: "ate", alism: "al", iveness: "ive", fulness: "ful", ousness: "ous", aliti: "al", iviti: "ive", biliti: "ble", logi: "log" }, t = { icate: "ic", ative: "", alize: "al", iciti: "ic", ical: "ic", ful: "", ness: "" }, n = "[^aeiou]", i = "[aeiouy]", o = n + "[^aeiouy]*", r = i + "[aeiou]*", s = "^(" + o + ")?" + r + o, u = "^(" + o + ")?" + r + o + "(" + r + ")?$", a = "^(" + o + ")?" + r + o + r + o, l = "^(" + o + ")?" + i, c = new RegExp(s), d = new RegExp(a), f = new RegExp(u), h = new RegExp(l), p = /^(.+?)(ss|i)es$/, v = /^(.+?)([^s])s$/, g = /^(.+?)eed$/, m = /^(.+?)(ed|ing)$/, y = /.$/, S = /(at|bl|iz)$/, x = new RegExp("([^aeiouylsz])\\1$"), w = new RegExp("^" + o + i + "[^aeiouwxy]$"), I = /^(.+?[^aeiou])y$/, b = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, E = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, D = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, F = /^(.+?)(s|t)(ion)$/, _ = /^(.+?)e$/, P = /ll$/, k = new RegExp("^" + o + i + "[^aeiouwxy]$"), z = function (n) { var i, o, r, s, u, a, l; if (n.length < 3) return n; if (r = n.substr(0, 1), "y" == r && (n = r.toUpperCase() + n.substr(1)), s = p, u = v, s.test(n) ? n = n.replace(s, "$1$2") : u.test(n) && (n = n.replace(u, "$1$2")), s = g, u = m, s.test(n)) { var z = s.exec(n); s = c, s.test(z[1]) && (s = y, n = n.replace(s, "")) } else if (u.test(n)) { var z = u.exec(n); i = z[1], u = h, u.test(i) && (n = i, u = S, a = x, l = w, u.test(n) ? n += "e" : a.test(n) ? (s = y, n = n.replace(s, "")) : l.test(n) && (n += "e")) } if (s = I, s.test(n)) { var z = s.exec(n); i = z[1], n = i + "i" } if (s = b, s.test(n)) { var z = s.exec(n); i = z[1], o = z[2], s = c, s.test(i) && (n = i + e[o]) } if (s = E, s.test(n)) { var z = s.exec(n); i = z[1], o = z[2], s = c, s.test(i) && (n = i + t[o]) } if (s = D, u = F, s.test(n)) { var z = s.exec(n); i = z[1], s = d, s.test(i) && (n = i) } else if (u.test(n)) { var z = u.exec(n); i = z[1] + z[2], u = d, u.test(i) && (n = i) } if (s = _, s.test(n)) { var z = s.exec(n); i = z[1], s = d, u = f, a = k, (s.test(i) || u.test(i) && !a.test(i)) && (n = i) } return s = P, u = d, s.test(n) && u.test(n) && (s = y, n = n.replace(s, "")), "y" == r && (n = r.toLowerCase() + n.substr(1)), n }; return z }(), t.Pipeline.registerFunction(t.stemmer, "stemmer"), t.stopWordFilter = function (e) { return e && t.stopWordFilter.stopWords[e] !== !0 ? e : void 0 }, t.clearStopWords = function () { t.stopWordFilter.stopWords = {} }, t.addStopWords = function (e) { null != e && Array.isArray(e) !== !1 && e.forEach(function (e) { t.stopWordFilter.stopWords[e] = !0 }, this) }, t.resetStopWords = function () { t.stopWordFilter.stopWords = t.defaultStopWords }, t.defaultStopWords = { "": !0, a: !0, able: !0, about: !0, across: !0, after: !0, all: !0, almost: !0, also: !0, am: !0, among: !0, an: !0, and: !0, any: !0, are: !0, as: !0, at: !0, be: !0, because: !0, been: !0, but: !0, by: !0, can: !0, cannot: !0, could: !0, dear: !0, did: !0, "do": !0, does: !0, either: !0, "else": !0, ever: !0, every: !0, "for": !0, from: !0, get: !0, got: !0, had: !0, has: !0, have: !0, he: !0, her: !0, hers: !0, him: !0, his: !0, how: !0, however: !0, i: !0, "if": !0, "in": !0, into: !0, is: !0, it: !0, its: !0, just: !0, least: !0, let: !0, like: !0, likely: !0, may: !0, me: !0, might: !0, most: !0, must: !0, my: !0, neither: !0, no: !0, nor: !0, not: !0, of: !0, off: !0, often: !0, on: !0, only: !0, or: !0, other: !0, our: !0, own: !0, rather: !0, said: !0, say: !0, says: !0, she: !0, should: !0, since: !0, so: !0, some: !0, than: !0, that: !0, the: !0, their: !0, them: !0, then: !0, there: !0, these: !0, they: !0, "this": !0, tis: !0, to: !0, too: !0, twas: !0, us: !0, wants: !0, was: !0, we: !0, were: !0, what: !0, when: !0, where: !0, which: !0, "while": !0, who: !0, whom: !0, why: !0, will: !0, "with": !0, would: !0, yet: !0, you: !0, your: !0 }, t.stopWordFilter.stopWords = t.defaultStopWords, t.Pipeline.registerFunction(t.stopWordFilter, "stopWordFilter"), t.trimmer = function (e) { if (null === e || void 0 === e) throw new Error("token should not be undefined"); return e.replace(/^\W+/, "").replace(/\W+$/, "") }, t.Pipeline.registerFunction(t.trimmer, "trimmer"), t.InvertedIndex = function () { this.root = { docs: {}, df: 0 } }, t.InvertedIndex.load = function (e) { var t = new this; return t.root = e.root, t }, t.InvertedIndex.prototype.addToken = function (e, t, n) { for (var n = n || this.root, i = 0; i <= e.length - 1;) { var o = e[i]; o in n || (n[o] = { docs: {}, df: 0 }), i += 1, n = n[o] } var r = t.ref; n.docs[r] ? n.docs[r] = { tf: t.tf } : (n.docs[r] = { tf: t.tf }, n.df += 1) }, t.InvertedIndex.prototype.hasToken = function (e) { if (!e) return !1; for (var t = this.root, n = 0; n < e.length; n++) { if (!t[e[n]]) return !1; t = t[e[n]] } return !0 }, t.InvertedIndex.prototype.getNode = function (e) { if (!e) return null; for (var t = this.root, n = 0; n < e.length; n++) { if (!t[e[n]]) return null; t = t[e[n]] } return t }, t.InvertedIndex.prototype.getDocs = function (e) { var t = this.getNode(e); return null == t ? {} : t.docs }, t.InvertedIndex.prototype.getTermFrequency = function (e, t) { var n = this.getNode(e); return null == n ? 0 : t in n.docs ? n.docs[t].tf : 0 }, t.InvertedIndex.prototype.getDocFreq = function (e) { var t = this.getNode(e); return null == t ? 0 : t.df }, t.InvertedIndex.prototype.removeToken = function (e, t) { if (e) { var n = this.getNode(e); null != n && t in n.docs && (delete n.docs[t], n.df -= 1) } }, t.InvertedIndex.prototype.expandToken = function (e, t, n) { if (null == e || "" == e) return []; var t = t || []; if (void 0 == n && (n = this.getNode(e), null == n)) return t; n.df > 0 && t.push(e); for (var i in n) "docs" !== i && "df" !== i && this.expandToken(e + i, t, n[i]); return t }, t.InvertedIndex.prototype.toJSON = function () { return { root: this.root } }, t.Configuration = function (e, n) { var e = e || ""; if (void 0 == n || null == n) throw new Error("fields should not be null"); this.config = {}; var i; try { i = JSON.parse(e), this.buildUserConfig(i, n) } catch (o) { t.utils.warn("user configuration parse failed, will use default configuration"), this.buildDefaultConfig(n) } }, t.Configuration.prototype.buildDefaultConfig = function (e) { this.reset(), e.forEach(function (e) { this.config[e] = { boost: 1, bool: "OR", expand: !1 } }, this) }, t.Configuration.prototype.buildUserConfig = function (e, n) { var i = "OR", o = !1; if (this.reset(), "bool" in e && (i = e.bool || i), "expand" in e && (o = e.expand || o), "fields" in e) for (var r in e.fields) if (n.indexOf(r) > -1) { var s = e.fields[r], u = o; void 0 != s.expand && (u = s.expand), this.config[r] = { boost: s.boost || 0 === s.boost ? s.boost : 1, bool: s.bool || i, expand: u } } else t.utils.warn("field name in user configuration not found in index instance fields"); else this.addAllFields2UserConfig(i, o, n) }, t.Configuration.prototype.addAllFields2UserConfig = function (e, t, n) { n.forEach(function (n) { this.config[n] = { boost: 1, bool: e, expand: t } }, this) }, t.Configuration.prototype.get = function () { return this.config }, t.Configuration.prototype.reset = function () { this.config = {} }, lunr.SortedSet = function () { this.length = 0, this.elements = [] }, lunr.SortedSet.load = function (e) { var t = new this; return t.elements = e, t.length = e.length, t }, lunr.SortedSet.prototype.add = function () { var e, t; for (e = 0; e < arguments.length; e++)t = arguments[e], ~this.indexOf(t) || this.elements.splice(this.locationFor(t), 0, t); this.length = this.elements.length }, lunr.SortedSet.prototype.toArray = function () { return this.elements.slice() }, lunr.SortedSet.prototype.map = function (e, t) { return this.elements.map(e, t) }, lunr.SortedSet.prototype.forEach = function (e, t) { return this.elements.forEach(e, t) }, lunr.SortedSet.prototype.indexOf = function (e) { for (var t = 0, n = this.elements.length, i = n - t, o = t + Math.floor(i / 2), r = this.elements[o]; i > 1;) { if (r === e) return o; e > r && (t = o), r > e && (n = o), i = n - t, o = t + Math.floor(i / 2), r = this.elements[o] } return r === e ? o : -1 }, lunr.SortedSet.prototype.locationFor = function (e) { for (var t = 0, n = this.elements.length, i = n - t, o = t + Math.floor(i / 2), r = this.elements[o]; i > 1;)e > r && (t = o), r > e && (n = o), i = n - t, o = t + Math.floor(i / 2), r = this.elements[o]; return r > e ? o : e > r ? o + 1 : void 0 }, lunr.SortedSet.prototype.intersect = function (e) { for (var t = new lunr.SortedSet, n = 0, i = 0, o = this.length, r = e.length, s = this.elements, u = e.elements; ;) { if (n > o - 1 || i > r - 1) break; s[n] !== u[i] ? s[n] < u[i] ? n++ : s[n] > u[i] && i++ : (t.add(s[n]), n++, i++) } return t }, lunr.SortedSet.prototype.clone = function () { var e = new lunr.SortedSet; return e.elements = this.toArray(), e.length = e.elements.length, e }, lunr.SortedSet.prototype.union = function (e) { var t, n, i; this.length >= e.length ? (t = this, n = e) : (t = e, n = this), i = t.clone(); for (var o = 0, r = n.toArray(); o < r.length; o++)i.add(r[o]); return i }, lunr.SortedSet.prototype.toJSON = function () { return this.toArray() }, function (e, t) { "function" == typeof define && define.amd ? define(t) : "object" == typeof exports ? module.exports = t() : e.elasticlunr = t() }(this, function () { return t }) }(); \ No newline at end of file diff --git a/docs-site/static/processed_images/logo.4aeb53be0cc35cb8.png b/docs-site/static/processed_images/logo.4aeb53be0cc35cb8.png deleted file mode 100644 index bc373dc88279330c2ab918859e8884d7881f84b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3329 zcmV+c4gT_pP)h&+a{Y&i{S? z2Hv0ZMS z4*&)r2+Xp8f>J3&>Mlze!yquIx^N{Me*2}#$WJ;m&Q67Buu{PdLG(Z5@F@ZkTuJLp ztF#K&H><|~`E$O>Z-5jb30-wCnRkF~Ynu484p01ne;jY!dwkJ- z)Xg<+e!>&K^T0>o`tDHT;qTO5dj&#A!IZ0sP>MQ($_+>tLREltI){PaV?f<*3=WOq z^zjeS+kFkw(HSJtX;i8uL}M8cg=636ecCe*8VZQOPj0k+?N@WbUwEWisq0oa*s_jh z{1%++JA=swpQ^w5nr;f|Zf01h$;;qpheN3GXJNGh3yV2)ntRaLdO!9bdNH`h9O{r8k`7*TZ3RWrAlxG$1WuB_=)>)>VI#-b>?5OuB9H9Kmc~H z8+MNySw`Tjse-dA3|laS+70d4xTgb`v?Xlc^D;{{;K};l7uUNp>&loCn^Vn%;o^im zRoDLtk;$eDrc(%((-;T=(gg;q#e(-Q7V!MYHtY#3;Mm13EG9E(^8sF8J#2PA>=qZ6 zgsTx`9CT_7p7cECuXJMlmhJe>*<-M+xS#&#yEz>efv0K*4tY43CQlj*uV0D3sG9li zX5ZM}f^N~I|>E2x_vS3o;|;=;jqvbJA>u5UO@6={vz2Y=7q?MW4t!6GImGB}-R#$)Ro;1}OQ{~|-tT>{y-6SmAvY{(}en(I*7 z^5@`9+d#avpo)ptUws*G^_+l`isK&ZdAPfu$GllUzEr_&vVQCgOn&>Fc=+dhM_}$7 z9-gTvncSd?%tsTU1Vu!XdZD zW58JdRlNC2py;i^ve0V0_+N)%XhpQx3Cs8 zMUEGK@gp>btVoj<8B&KL zP!vQSIsy%8%oR=}*&$J>fI&$)_rWP4h{BH-ZhEoz+m9l4NgOJ$@aRuS_E)vua7D8@elu=Po4>8_%IK z5`k7KAfv087>nU6d;bJA4fW{l?}blh*6^uwNX2GAsMIbABohl*j3uG#1{heNsF9LNQtT#8CKz&W=LfQV6$+zT}~9_@e2ig z(24~lg^7u)-RL=f5|=MrgtsDqLMAJ-UIQe48PqDi5Zmr_oJ+sX+uN>D8dgkeB>5czx_F1HJdi4-)=fJ-XRXLDG4 z_g2hjQb^6tp;#!Q?C!God_FWaFUPXxWmt^IQIrKtgFsz{i>zy@B2HP19Ev$d+u9@V zEcL)~elRv#(zM0pRW9OjD6%EP%*e}y-9jMr0_+Yu9CkZ&O_!nxkJlrH$H&2?xqtmn ze~ zmVMPu8a^|em@~L#c2&K{(^~6gs;Zdt$vnyAbxjjQkIlygg&`u9A(qV*NVZTw&&5lk zE>eT$jd!3X2x5S%wRei#awI-dZ|o7V0mlZNvF>_k!I@U>x%k)R=M%E z4Ao4>?QXKQsmkd&-#4T5%oKXLg=woByuO{Ao6){P-f}!PYO|^(yW2CENEh?EF1Xie z*K_&2<-*x>Bod4ee|sCYZe5G8!)o>p4vUPed}C9yM1q@~Q7tWmY#pwymWb1v)Q#i_ zS6*Sw9Zg7Z%bE0W^s8q1lP(0?lb=(&=(cjP>=UNT%o-nOmT1mp78`&R&wu=Ls=Plyrko3BIv0gok&m zw(#2U3m;^R@5$hTHEn3(8l$C>)pp(yi+$baQW111Mmm`ePsB2wqUtzzX?P*k-F-9S z;Rb2~RwLwhvOC)9?0fEQQ#;yf2`6yJvs(IMXOBHGK6UndXLpZb80mbrptu~4#mLgC zUxyp3K3vgOH`3}?S5M@%3nNA2l-$Qy0O|V z0ipyU=)ib9BJzcr+NSE`Q)wgm`pKcCv$JWsuGw$YxCFm+ZB(4;j*>vo7vHzHL)rJx zTF;s#foeUQUml&9Yl%hUw;2V^U%jf~puN^}R9bH0qw%}#s5FN66Ily{DI0{eu8jHn1j;j#gu$6E(#6okiM|8T z{_!vAa-K_}lxmu3DprN(8&)*DDTJWcyG9<;0A*8Sh4IwhHQ3S?!kKGP_TD+!C9MwJ z^}xE<-iv3xJe@7*q@>F>BpG}JE>+^UAt?X)SY$Y;X>w-c>0oQkuPW-pN4PFL#dN+- z({)>UnQofO?94(Nkp!CBmcFK%rrJFoj~qUEgZ2!~)0&7U)!xx~_*98~>-|{f$3;yy zsbO-+Gg03EN%^z~KK@sLN(%{-?_^A-LunyfmmHnDFEzDrPi{W7qL?cN^XXi;oM6j0 zwEncDYt~deRnIGZZ#!!OM^wLKO0`f}gkZ8XoAO#BKOZaq|L^|;btoRdjd+>N00000 LNkvXXu0mjf+dFZx diff --git a/docs-site/static/processed_images/logo.8858825d70de731a.png b/docs-site/static/processed_images/logo.8858825d70de731a.png deleted file mode 100644 index b0ce33d4662cfbefcae28bcd03e7c17213989f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1021 zcmVd<3V>? zqBplhPs+hyFdE~_W^^(mBY+c-4O*Z;Tlx-t@9*_-`vX3g4|)E|IZ(oxq7$vE3mCHJ zPo8ze-#lzBJkvmn%}|RdvzmBNb>96k<-U14X}@b>8jMtDIwu-A`|dcCbgJ1HH@(xg zb>p-ndJ*7&CZo!nkn2w&72m_`LKqIQfY!rJUw^pfzq~J_Y+*VR9^*Peuet7D{@ZIy z_a<|8US}@q2YNeQG`vne|7I0y4=P-e>h*F`CT|U{zxLU9=J?g^<3lNl9#DYdgO0T+ zuO-_nt7a*AU?kHkZuZ45wS=wT!^7YLtSm*29dWP|M?2_z#}#RQv!UxF@A4GDAiUU^ zxI9>&Jd=~Hs#&d?A{8rAVFL`M82o}2e~#CHdq-jR4q*C+?@`Eam|{^;Ip4MM+y!^y z4Pl}s_8ux6TD(GcsxHhXJjgH=FTFZ}#?eve`4sFu&thpcgsgcEo(>yaij%2@O-wkp zuL`b2%CAMMTu@B((?knA{YNl1;sM$NFoqYAo%{r0Zoo1-glJYoY$=Tamq`0HnK!$O zej&7BhSKEs=gAKbH4;=web$qxv1vL-4w9osCoWgFjJN- rhClw%_}lkoe#2xjmbj`j5a|B{C4AP^3XS(s00000NkvXXu0mjf*m2(z diff --git a/docs-site/static/processed_images/logo.8da33dd02b6224b7.png b/docs-site/static/processed_images/logo.8da33dd02b6224b7.png deleted file mode 100644 index 91f34986d838a2ec5573ad5c9ffe08887e7f3d17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59979 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

J4FxE#4H!r>2wB$(BrC`q`$s?wpqkw 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±HTNJhE*7 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 diff --git a/docs-site/static/styles/styles.css b/docs-site/static/styles/styles.css new file mode 100644 index 000000000..af3fb8291 --- /dev/null +++ b/docs-site/static/styles/styles.css @@ -0,0 +1,2450 @@ +/* +! tailwindcss v3.4.7 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +:root { + --background: #ffffff; + --background-secondary: #5F456B; + /* 1f2937 gray-800*/ + --foreground: #1f2937; + /* gray-900 */ + --primary: #D45546; + --redrust: #c12110; + --orangerust: #cc4111; + --border: #3A3A54; + --card: #1D1D2A; + --card-foreground: #FDCEF1; + --radius: 0.5rem; +} + +.dark { + --background: black; + --foreground: hsl(213, 31%, 91%); + --muted: hsl(223, 47%, 11%); + --muted-foreground: hsl(215.4, 16.3%, 56.9%); + --accent: hsl(216, 34%, 17%); + --accent-foreground: hsl(210, 40%, 98%); + --popover: hsl(224, 71%, 4%); + --popover-foreground: hsl(215, 20.2%, 65.1%); + --border: hsl(216, 34%, 17%); + --input: hsl(216, 34%, 17%); + --card: hsl(224, 71%, 4%); + --card-foreground: hsl(213, 31%, 91%); + --primary: hsl(210, 40%, 98%); + --primary-foreground: hsl(222.2, 47.4%, 1.2%); + --secondary: hsl(222.2, 47.4%, 11.2%); + --secondary-foreground: hsl(210, 40%, 98%); + --destructive: hsl(0, 63%, 31%); + --destructive-foreground: hsl(210, 40%, 98%); + --ring: hsl(216, 34%, 17%); + --radius: 0.5rem; +} + +* { + border-color: var(--border); +} + +body { + background-color: var(--background); + font-family: Inter; + color: var(--foreground); + font-feature-settings: "rlig" 1, "calt" 1; +} + +h1, h2, h3, h4, h5 { + letter-spacing: -0.03em; + scroll-margin-top: 56px; +} + +a.active { + color: var(--primary); +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.prose { + color: var(--tw-prose-body); + max-width: 65ch; +} + +.prose :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; +} + +.prose :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em; +} + +.prose :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500; +} + +.prose :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600; +} + +.prose :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: decimal; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; +} + +.prose :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: upper-alpha; +} + +.prose :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: lower-alpha; +} + +.prose :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: upper-alpha; +} + +.prose :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: lower-alpha; +} + +.prose :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: upper-roman; +} + +.prose :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: lower-roman; +} + +.prose :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: upper-roman; +} + +.prose :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: lower-roman; +} + +.prose :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: decimal; +} + +.prose :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + list-style-type: disc; + margin-top: 1.25em; + margin-bottom: 1.25em; + padding-inline-start: 1.625em; +} + +.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters); +} + +.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets); +} + +.prose :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.25em; +} + +.prose :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em; +} + +.prose :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-inline-start-width: 0.25rem; + border-inline-start-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-inline-start: 1em; +} + +.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before { + content: open-quote; +} + +.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after { + content: close-quote; +} + +.prose :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; +} + +.prose :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 900; + color: inherit; +} + +.prose :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; +} + +.prose :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 800; + color: inherit; +} + +.prose :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; +} + +.prose :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 700; + color: inherit; +} + +.prose :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; +} + +.prose :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 700; + color: inherit; +} + +.prose :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} + +.prose :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + display: block; + margin-top: 2em; + margin-bottom: 2em; +} + +.prose :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} + +.prose :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + font-weight: 500; + font-family: inherit; + color: var(--tw-prose-kbd); + box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%); + font-size: 0.875em; + border-radius: 0.3125rem; + padding-top: 0.1875em; + padding-inline-end: 0.375em; + padding-bottom: 0.1875em; + padding-inline-start: 0.375em; +} + +.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em; +} + +.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before { + content: "`"; +} + +.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after { + content: "`"; +} + +.prose :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; + font-size: 0.875em; +} + +.prose :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; + font-size: 0.9em; +} + +.prose :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: inherit; +} + +.prose :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-inline-end: 1.1428571em; + padding-bottom: 0.8571429em; + padding-inline-start: 1.1428571em; +} + +.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} + +.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before { + content: none; +} + +.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after { + content: none; +} + +.prose :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + text-align: start; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857; +} + +.prose :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders); +} + +.prose :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; +} + +.prose :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders); +} + +.prose :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + border-bottom-width: 0; +} + +.prose :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + vertical-align: baseline; +} + +.prose :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + border-top-width: 1px; + border-top-color: var(--tw-prose-th-borders); +} + +.prose :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + vertical-align: top; +} + +.prose :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; +} + +.prose :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; +} + +.prose { + --tw-prose-body: var(--foreground); + --tw-prose-headings: var(--foreground); + --tw-prose-lead: #4b5563; + --tw-prose-links: #111827; + --tw-prose-bold: #111827; + --tw-prose-counters: #6b7280; + --tw-prose-bullets: #d1d5db; + --tw-prose-hr: #e5e7eb; + --tw-prose-quotes: #111827; + --tw-prose-quote-borders: #e5e7eb; + --tw-prose-captions: #6b7280; + --tw-prose-kbd: #111827; + --tw-prose-kbd-shadows: 17 24 39; + --tw-prose-code: #111827; + --tw-prose-pre-code: #e5e7eb; + --tw-prose-pre-bg: #1f2937; + --tw-prose-th-borders: #d1d5db; + --tw-prose-td-borders: #e5e7eb; + --tw-prose-invert-body: #d1d5db; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #9ca3af; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #9ca3af; + --tw-prose-invert-bullets: #4b5563; + --tw-prose-invert-hr: #374151; + --tw-prose-invert-quotes: #f3f4f6; + --tw-prose-invert-quote-borders: #374151; + --tw-prose-invert-captions: #9ca3af; + --tw-prose-invert-kbd: #fff; + --tw-prose-invert-kbd-shadows: 255 255 255; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #d1d5db; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #4b5563; + --tw-prose-invert-td-borders: #374151; + font-size: 1rem; + line-height: 1.75; +} + +.prose :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; +} + +.prose :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-start: 0.375em; +} + +.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-start: 0.375em; +} + +.prose :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +} + +.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 1.25em; +} + +.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-bottom: 1.25em; +} + +.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 1.25em; +} + +.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-bottom: 1.25em; +} + +.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +} + +.prose :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; +} + +.prose :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0.5em; + padding-inline-start: 1.625em; +} + +.prose :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; +} + +.prose :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; +} + +.prose :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; +} + +.prose :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; +} + +.prose :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-start: 0; +} + +.prose :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-end: 0; +} + +.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-top: 0.5714286em; + padding-inline-end: 0.5714286em; + padding-bottom: 0.5714286em; + padding-inline-start: 0.5714286em; +} + +.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-start: 0; +} + +.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + padding-inline-end: 0; +} + +.prose :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} + +.prose :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-top: 0; +} + +.prose :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) { + margin-bottom: 0; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.static { + position: static; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +.inset-0 { + inset: 0px; +} + +.bottom-0 { + bottom: 0px; +} + +.left-0 { + left: 0px; +} + +.right-0 { + right: 0px; +} + +.top-0 { + top: 0px; +} + +.top-\[-490px\] { + top: -490px; +} + +.z-10 { + z-index: 10; +} + +.z-50 { + z-index: 50; +} + +.order-2 { + order: 2; +} + +.order-7 { + order: 7; +} + +.col-span-2 { + grid-column: span 2 / span 2; +} + +.m-0 { + margin: 0px; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; +} + +.my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} + +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.my-\[8rem\] { + margin-top: 8rem; + margin-bottom: 8rem; +} + +.-mt-1 { + margin-top: -0.25rem; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.mb-12 { + margin-bottom: 3rem; +} + +.mb-20 { + margin-bottom: 5rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.mb-5 { + margin-bottom: 1.25rem; +} + +.mb-8 { + margin-bottom: 2rem; +} + +.ml-2\.5 { + margin-left: 0.625rem; +} + +.mr-2 { + margin-right: 0.5rem; +} + +.mr-4 { + margin-right: 1rem; +} + +.ms-auto { + margin-inline-start: auto; +} + +.mt-12 { + margin-top: 3rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.mt-\[-60px\] { + margin-top: -60px; +} + +.mt-\[106px\] { + margin-top: 106px; +} + +.mt-\[90px\] { + margin-top: 90px; +} + +.mt-\[9px\] { + margin-top: 9px; +} + +.mt-px { + margin-top: 1px; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.table { + display: table; +} + +.grid { + display: grid; +} + +.contents { + display: contents; +} + +.hidden { + display: none; +} + +.h-14 { + height: 3.5rem; +} + +.h-5 { + height: 1.25rem; +} + +.h-8 { + height: 2rem; +} + +.h-9 { + height: 2.25rem; +} + +.h-full { + height: 100%; +} + +.max-h-\[230px\] { + max-height: 230px; +} + +.max-h-\[600px\] { + max-height: 600px; +} + +.min-h-screen { + min-height: 100vh; +} + +.w-5 { + width: 1.25rem; +} + +.w-8 { + width: 2rem; +} + +.w-full { + width: 100%; +} + +.min-w-0 { + min-width: 0px; +} + +.min-w-\[100\%\] { + min-width: 100%; +} + +.max-w-\[100\%\] { + max-width: 100%; +} + +.max-w-\[1024px\] { + max-width: 1024px; +} + +.max-w-\[200px\] { + max-width: 200px; +} + +.max-w-\[50rem\] { + max-width: 50rem; +} + +.max-w-\[52rem\] { + max-width: 52rem; +} + +.max-w-\[60rem\] { + max-width: 60rem; +} + +.flex-1 { + flex: 1 1 0%; +} + +.grow { + flex-grow: 1; +} + +.flex-col { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.items-start { + align-items: flex-start; +} + +.items-center { + align-items: center; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.gap-10 { + gap: 2.5rem; +} + +.gap-3 { + gap: 0.75rem; +} + +.gap-4 { + gap: 1rem; +} + +.gap-5 { + gap: 1.25rem; +} + +.gap-6 { + gap: 1.5rem; +} + +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.overflow-auto { + overflow: auto; +} + +.overflow-visible { + overflow: visible; +} + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-\[0\.5rem\] { + border-radius: 0.5rem; +} + +.rounded-lg { + border-radius: var(--radius); +} + +.rounded-md { + border-radius: calc(var(--radius) - 2px); +} + +.rounded-sm { + border-radius: calc(var(--radius) - 4px); +} + +.border { + border-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); +} + +.border-red-100 { + --tw-border-opacity: 1; + border-color: rgb(254 226 226 / var(--tw-border-opacity)); +} + +.border-transparent { + border-color: transparent; +} + +.bg-background { + background-color: var(--background); +} + +.bg-card { + background-color: var(--card); +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity)); +} + +.bg-gray-50 { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity)); +} + +.bg-inherit { + background-color: inherit; +} + +.bg-orangerust { + background-color: var(--orangerust); +} + +.bg-red-900 { + --tw-bg-opacity: 1; + background-color: rgb(127 29 29 / var(--tw-bg-opacity)); +} + +.bg-redrust { + background-color: var(--redrust); +} + +.bg-transparent { + background-color: transparent; +} + +.bg-left-bottom { + background-position: left bottom; +} + +.p-0 { + padding: 0px; +} + +.p-2 { + padding: 0.5rem; +} + +.p-4 { + padding: 1rem; +} + +.p-8 { + padding: 2rem; +} + +.px-0 { + padding-left: 0px; + padding-right: 0px; +} + +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-0 { + padding-top: 0px; + padding-bottom: 0px; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.py-\[15px\] { + padding-top: 15px; + padding-bottom: 15px; +} + +.pb-12 { + padding-bottom: 3rem; +} + +.pb-20 { + padding-bottom: 5rem; +} + +.pb-3 { + padding-bottom: 0.75rem; +} + +.pl-5 { + padding-left: 1.25rem; +} + +.pt-20 { + padding-top: 5rem; +} + +.pt-8 { + padding-top: 2rem; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-\[11px\] { + font-size: 11px; +} + +.text-\[9px\] { + font-size: 9px; +} + +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.font-extrabold { + font-weight: 800; +} + +.font-medium { + font-weight: 500; +} + +.font-normal { + font-weight: 400; +} + +.font-semibold { + font-weight: 600; +} + +.text-background { + color: var(--background); +} + +.text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} + +.text-card-foreground { + color: var(--card-foreground); +} + +.text-foreground { + color: var(--foreground); +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity)); +} + +.text-green-400 { + --tw-text-opacity: 1; + color: rgb(74 222 128 / var(--tw-text-opacity)); +} + +.text-inherit { + color: inherit; +} + +.text-red-100 { + --tw-text-opacity: 1; + color: rgb(254 226 226 / var(--tw-text-opacity)); +} + +.text-red-200 { + --tw-text-opacity: 1; + color: rgb(254 202 202 / var(--tw-text-opacity)); +} + +.text-red-400 { + --tw-text-opacity: 1; + color: rgb(248 113 113 / var(--tw-text-opacity)); +} + +.text-red-50 { + --tw-text-opacity: 1; + color: rgb(254 242 242 / var(--tw-text-opacity)); +} + +.text-sky-300 { + --tw-text-opacity: 1; + color: rgb(125 211 252 / var(--tw-text-opacity)); +} + +.text-sky-500 { + --tw-text-opacity: 1; + color: rgb(14 165 233 / var(--tw-text-opacity)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.text-yellow-400 { + --tw-text-opacity: 1; + color: rgb(250 204 21 / var(--tw-text-opacity)); +} + +.text-yellow-500 { + --tw-text-opacity: 1; + color: rgb(234 179 8 / var(--tw-text-opacity)); +} + +.placeholder-black::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(0 0 0 / var(--tw-placeholder-opacity)); +} + +.placeholder-black::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(0 0 0 / var(--tw-placeholder-opacity)); +} + +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-none { + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.backdrop-blur { + --tw-backdrop-blur: blur(8px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} + +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +@import "tailwindcss/typography"; + +.infobox { + position: relative; + margin-top: 2rem; + margin-bottom: 2rem; + width: 100%; + border-radius: var(--radius); + border-width: 1px; + border-color: rgb(34 197 94 / 0.5); + --tw-bg-opacity: 1; + background-color: rgb(240 253 244 / var(--tw-bg-opacity)); + padding-right: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + padding-left: 2.5rem; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-text-opacity: 1; + color: rgb(34 197 94 / var(--tw-text-opacity)); +} + +.infobox:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(34 197 94 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(5 46 22 / var(--tw-bg-opacity)); +} + +.infobox { + &:before{ + content: ''; + width: 15px; + height: 15px; + background-color: currentColor; + -webkit-mask: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z' fill='currentColor' fill-rule='evenodd' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E"); + mask: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z' fill='currentColor' fill-rule='evenodd' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E"); + } + &:before { + position: absolute; + } + &:before { + left: 1rem; + } + &:before { + top: 1rem; + } + &:before { + --tw-translate-y: -3px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + } +} + +.section-colored { + h1, h2 { + color: var(--background); + } +} + +.dark { + .section-colored { + h1, + h2 { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + } +} + +.section { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +@media (min-width: 640px) { + .section { + padding-left: 0px; + padding-right: 0px; + } +} + +.section { + h1 { + font-weight: 600; + } + @media (min-width: 640px) { + h1 { + font-size: 3.75rem; + line-height: 1; + } + } + h1 { + margin-bottom: 2rem; + } + h1 { + letter-spacing: -0.05em; + } + h2 { + font-size: 1.25rem; + line-height: 1.75rem; + } + h2 { + font-weight: 300; + } + @media (min-width: 640px) { + h2 { + font-size: 1.875rem; + line-height: 2.25rem; + } + } + h2 { + margin-top: 0px; + } + pre { + margin-top: 0px; + margin-bottom: 0px; + } +} + +.footer-links { + a { + margin-left: 0.5rem; + margin-right: 0.5rem; + } + a { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + a { + text-decoration-line: none; + } +} + +.fatbtn { + border-radius: calc(var(--radius) - 4px); + background-color: var(--background); + padding-left: 2rem; + padding-right: 2rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + font-size: 1.125rem; + line-height: 1.75rem; + font-weight: 600; + color: var(--foreground); + text-decoration-line: none; +} + +.video-container { + position: relative; + padding-bottom: 56.25%; + /* 16:9 */ + height: 0; +} + +.video-container iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-left: 0.5rem; + padding-right: 0.5rem +} + +@media (min-width: 768px) { + .container { + padding-left: 0px; + padding-right: 0px; + } +} + +.prose { + ul { + padding-inline-start: 1em; + } +} + +.navbar-form { + position: relative; +} + +#suggestions { + position: absolute; + right: 0; + margin-top: 0.5rem; + width: calc(100vw - 8rem); + max-height: 500px; + overflow: auto; + background-color: var(--background); +} + +#suggestions a { + display: block; + text-decoration: none; + padding: 0.75rem; + margin: 0 0.5rem; +} + +#suggestions a:focus { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity)); +} + +#suggestions a:focus:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(63 63 70 / var(--tw-bg-opacity)); +} + +#suggestions a:focus { + outline: 0; +} + +#suggestions div:not(:first-child) { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); +} + +#suggestions div:first-child { + margin-top: 0.5rem; +} + +#suggestions div:last-child { + margin-bottom: 0.5rem; +} + +#suggestions a:hover { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity)); +} + +#suggestions a:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(39 39 42 / var(--tw-bg-opacity)); +} + +#suggestions span { + font-size: 0.875rem; + line-height: 1.25rem; +} + +#suggestions span:first-child { + color: var(--foreground); + font-weight: 600; +} + +#suggestions span:nth-child(2) { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity)); +} + +#suggestions span:nth-child(2):is(.dark *) { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); +} + +@media (min-width: 640px) { + #suggestions { + width: 30rem; + } + + #suggestions a { + display: flex; + } + + #suggestions span:first-child { + width: 9rem; + padding-right: 1rem; + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); + display: inline-block; + text-align: right; + } + + #suggestions span:nth-child(2) { + width: 19rem; + padding-left: 1rem; + } +} + +html .toggle-dark { + display: block; +} + +html .toggle-light { + display: none; +} + +html.dark .toggle-light { + display: block; +} + +html.dark .toggle-dark { + display: none; +} + +.dark\:prose-invert:is(.dark *) { + --tw-prose-body: var(--tw-prose-invert-body); + --tw-prose-headings: var(--tw-prose-invert-headings); + --tw-prose-lead: var(--tw-prose-invert-lead); + --tw-prose-links: var(--tw-prose-invert-links); + --tw-prose-bold: var(--tw-prose-invert-bold); + --tw-prose-counters: var(--tw-prose-invert-counters); + --tw-prose-bullets: var(--tw-prose-invert-bullets); + --tw-prose-hr: var(--tw-prose-invert-hr); + --tw-prose-quotes: var(--tw-prose-invert-quotes); + --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders); + --tw-prose-captions: var(--tw-prose-invert-captions); + --tw-prose-kbd: var(--tw-prose-invert-kbd); + --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows); + --tw-prose-code: var(--tw-prose-invert-code); + --tw-prose-pre-code: var(--tw-prose-invert-pre-code); + --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg); + --tw-prose-th-borders: var(--tw-prose-invert-th-borders); + --tw-prose-td-borders: var(--tw-prose-invert-td-borders); +} + +.hover\:bg-gray-50:hover { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity)); +} + +.hover\:bg-transparent:hover { + background-color: transparent; +} + +.hover\:text-white:hover { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.hover\:underline:hover { + text-decoration-line: underline; +} + +.focus-visible\:bg-transparent:focus-visible { + background-color: transparent; +} + +.focus-visible\:outline-none:focus-visible { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus-visible\:ring-0:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus-visible\:ring-1:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus-visible\:ring-offset-0:focus-visible { + --tw-ring-offset-width: 0px; +} + +.disabled\:pointer-events-none:disabled { + pointer-events: none; +} + +.disabled\:opacity-50:disabled { + opacity: 0.5; +} + +.dark\:rounded-sm:is(.dark *) { + border-radius: calc(var(--radius) - 4px); +} + +.dark\:border:is(.dark *) { + border-width: 1px; +} + +.dark\:border-gray-700:is(.dark *) { + --tw-border-opacity: 1; + border-color: rgb(55 65 81 / var(--tw-border-opacity)); +} + +.dark\:bg-background:is(.dark *) { + background-color: var(--background); +} + +.dark\:bg-foreground:is(.dark *) { + background-color: var(--foreground); +} + +.dark\:bg-zinc-700:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(63 63 70 / var(--tw-bg-opacity)); +} + +.dark\:bg-zinc-800:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(39 39 42 / var(--tw-bg-opacity)); +} + +.dark\:bg-zinc-900:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(24 24 27 / var(--tw-bg-opacity)); +} + +.dark\:fill-zinc-700:is(.dark *) { + fill: #3f3f46; +} + +.dark\:fill-zinc-900:is(.dark *) { + fill: #18181b; +} + +.dark\:text-background:is(.dark *) { + color: var(--background); +} + +.dark\:text-sky-700:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(3 105 161 / var(--tw-text-opacity)); +} + +.dark\:text-white:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.dark\:text-zinc-400:is(.dark *) { + --tw-text-opacity: 1; + color: rgb(161 161 170 / var(--tw-text-opacity)); +} + +.dark\:placeholder-white:is(.dark *)::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(255 255 255 / var(--tw-placeholder-opacity)); +} + +.dark\:placeholder-white:is(.dark *)::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(255 255 255 / var(--tw-placeholder-opacity)); +} + +.dark\:hover\:bg-gray-900:hover:is(.dark *) { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity)); +} + +@media (min-width: 640px) { + .sm\:flex { + display: flex; + } + + .sm\:hidden { + display: none; + } + + .sm\:w-7\/12 { + width: 58.333333%; + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:p-6 { + padding: 1.5rem; + } + + .sm\:px-0 { + padding-left: 0px; + padding-right: 0px; + } + + .sm\:pr-0 { + padding-right: 0px; + } + + .sm\:pr-12 { + padding-right: 3rem; + } + + .sm\:text-\[16px\] { + font-size: 16px; + } +} + +@media (min-width: 768px) { + .md\:mt-0 { + margin-top: 0px; + } + + .md\:grid { + display: grid; + } + + .md\:hidden { + display: none; + } + + .md\:grid-cols-\[240px_minmax\(0\2c 1fr\)\] { + grid-template-columns: 240px minmax(0,1fr); + } + + .md\:gap-10 { + gap: 2.5rem; + } + + .md\:pr-12 { + padding-right: 3rem; + } +} + +@media (min-width: 1024px) { + .lg\:flex { + display: flex; + } + + .lg\:max-w-64 { + max-width: 16rem; + } + + .lg\:justify-end { + justify-content: flex-end; + } + + .lg\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } +} + +@media (min-width: 1280px) { + .xl\:col-span-1 { + grid-column: span 1 / span 1; + } + + .xl\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .xl\:block { + display: block; + } + + .xl\:grid { + display: grid; + } + + .xl\:max-w-\[80rem\] { + max-width: 80rem; + } + + .xl\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .xl\:grid-cols-\[1fr_450px\] { + grid-template-columns: 1fr 450px; + } +} diff --git a/docs-site/static/syntax-theme-dark.css b/docs-site/static/syntax-theme-dark.css index b694d94e9..1153c3282 100644 --- a/docs-site/static/syntax-theme-dark.css +++ b/docs-site/static/syntax-theme-dark.css @@ -2,150 +2,153 @@ * theme "OneHalfLight" generated by syntect */ -.z-code { - color: #dcdfe4; - background-color: #282c34; -} +.dark { + .z-code { + color: #dcdfe4; + background-color: #282c34; + border: 1px solid #5c6370; + } -.z-comment { - color: #5c6370; -} -.z-variable.z-parameter.z-function { - color: #dcdfe4; -} -.z-keyword { - color: #c678dd; -} -.z-variable { - color: #e06c75; -} -.z-entity.z-name.z-function, .z-meta.z-require, .z-support.z-function.z-any-method { - color: #61afef; -} -.z-support.z-class, .z-entity.z-name.z-class, .z-entity.z-name.z-type.z-class { - color: #e5c07b; -} -.z-meta.z-class { - color: #e5c07b; -} -.z-keyword.z-other.z-special-method { - color: #61afef; -} -.z-storage { - color: #c678dd; -} -.z-support.z-function { - color: #61afef; -} -.z-string { - color: #98c379; -} -.z-constant.z-numeric { - color: #e5c07b; -} -.z-none { - color: #e5c07b; -} -.z-none { - color: #e5c07b; -} -.z-constant { - color: #e5c07b; -} -.z-entity.z-name.z-tag { - color: #e06c75; -} -.z-entity.z-other.z-attribute-name { - color: #e5c07b; -} -.z-entity.z-other.z-attribute-name.z-id, .z-punctuation.z-definition.z-entity { - color: #e5c07b; -} -.z-meta.z-selector { - color: #c678dd; -} -.z-markup.z-heading .z-punctuation.z-definition.z-heading, .z-entity.z-name.z-section { - color: #61afef; -} -.z-markup.z-bold, .z-punctuation.z-definition.z-bold { - color: #c678dd; -} -.z-markup.z-italic, .z-punctuation.z-definition.z-italic { - color: #c678dd; -} -.z-markup.z-raw.z-inline { - color: #98c379; -} -.z-meta.z-link { - color: #98c379; -} -.z-markup.z-quote { - color: #98c379; -} -.z-source.z-java .z-meta.z-class.z-java .z-meta.z-method.z-java { - color: #dcdfe4; -} -.z-source.z-java .z-meta.z-class.z-java .z-meta.z-class.z-body.z-java { - color: #dcdfe4; -} -.z-source.z-js .z-meta.z-function.z-js .z-variable.z-parameter.z-function.z-js { - color: #e06c75; -} -.z-source.z-js .z-variable.z-other.z-readwrite.z-js { - color: #e06c75; -} -.z-source.z-js .z-variable.z-other.z-object.z-js { - color: #dcdfe4; -} -.z-source.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-other.z-readwrite.z-js { - color: #e06c75; -} -.z-source.z-js .z-meta.z-block.z-js .z-variable.z-other.z-readwrite.z-js { - color: #e06c75; -} -.z-source.z-js .z-meta.z-block.z-js .z-variable.z-other.z-object.z-js { - color: #dcdfe4; -} -.z-source.z-js .z-meta.z-block.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-other.z-readwrite.z-js { - color: #dcdfe4; -} -.z-source.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-function.z-js { - color: #dcdfe4; -} -.z-source.z-js .z-meta.z-property.z-object.z-js .z-entity.z-name.z-function.z-js { - color: #61afef; -} -.z-source.z-js .z-support.z-constant.z-prototype.z-js { - color: #dcdfe4; -} -.z-markup.z-inserted { - color: #98c379; -} -.z-markup.z-deleted { - color: #e06c75; -} -.z-markup.z-changed { - color: #e5c07b; -} -.z-string.z-regexp { - color: #98c379; -} -.z-constant.z-character.z-escape { - color: #56b6c2; -} -.z-invalid.z-illegal { - color: #dcdfe4; - background-color: #e06c75; -} -.z-invalid.z-broken { - color: #dcdfe4; - background-color: #e5c07b; -} -.z-invalid.z-deprecated { - color: #dcdfe4; - background-color: #e5c07b; -} -.z-invalid.z-unimplemented { - color: #dcdfe4; - background-color: #c678dd; + .z-comment { + color: #5c6370; + } + .z-variable.z-parameter.z-function { + color: #dcdfe4; + } + .z-keyword { + color: #c678dd; + } + .z-variable { + color: #e06c75; + } + .z-entity.z-name.z-function, .z-meta.z-require, .z-support.z-function.z-any-method { + color: #61afef; + } + .z-support.z-class, .z-entity.z-name.z-class, .z-entity.z-name.z-type.z-class { + color: #e5c07b; + } + .z-meta.z-class { + color: #e5c07b; + } + .z-keyword.z-other.z-special-method { + color: #61afef; + } + .z-storage { + color: #c678dd; + } + .z-support.z-function { + color: #61afef; + } + .z-string { + color: #98c379; + } + .z-constant.z-numeric { + color: #e5c07b; + } + .z-none { + color: #e5c07b; + } + .z-none { + color: #e5c07b; + } + .z-constant { + color: #e5c07b; + } + .z-entity.z-name.z-tag { + color: #e06c75; + } + .z-entity.z-other.z-attribute-name { + color: #e5c07b; + } + .z-entity.z-other.z-attribute-name.z-id, .z-punctuation.z-definition.z-entity { + color: #e5c07b; + } + .z-meta.z-selector { + color: #c678dd; + } + .z-markup.z-heading .z-punctuation.z-definition.z-heading, .z-entity.z-name.z-section { + color: #61afef; + } + .z-markup.z-bold, .z-punctuation.z-definition.z-bold { + color: #c678dd; + } + .z-markup.z-italic, .z-punctuation.z-definition.z-italic { + color: #c678dd; + } + .z-markup.z-raw.z-inline { + color: #98c379; + } + .z-meta.z-link { + color: #98c379; + } + .z-markup.z-quote { + color: #98c379; + } + .z-source.z-java .z-meta.z-class.z-java .z-meta.z-method.z-java { + color: #dcdfe4; + } + .z-source.z-java .z-meta.z-class.z-java .z-meta.z-class.z-body.z-java { + color: #dcdfe4; + } + .z-source.z-js .z-meta.z-function.z-js .z-variable.z-parameter.z-function.z-js { + color: #e06c75; + } + .z-source.z-js .z-variable.z-other.z-readwrite.z-js { + color: #e06c75; + } + .z-source.z-js .z-variable.z-other.z-object.z-js { + color: #dcdfe4; + } + .z-source.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-other.z-readwrite.z-js { + color: #e06c75; + } + .z-source.z-js .z-meta.z-block.z-js .z-variable.z-other.z-readwrite.z-js { + color: #e06c75; + } + .z-source.z-js .z-meta.z-block.z-js .z-variable.z-other.z-object.z-js { + color: #dcdfe4; + } + .z-source.z-js .z-meta.z-block.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-other.z-readwrite.z-js { + color: #dcdfe4; + } + .z-source.z-js .z-meta.z-function-call.z-method.z-js .z-variable.z-function.z-js { + color: #dcdfe4; + } + .z-source.z-js .z-meta.z-property.z-object.z-js .z-entity.z-name.z-function.z-js { + color: #61afef; + } + .z-source.z-js .z-support.z-constant.z-prototype.z-js { + color: #dcdfe4; + } + .z-markup.z-inserted { + color: #98c379; + } + .z-markup.z-deleted { + color: #e06c75; + } + .z-markup.z-changed { + color: #e5c07b; + } + .z-string.z-regexp { + color: #98c379; + } + .z-constant.z-character.z-escape { + color: #56b6c2; + } + .z-invalid.z-illegal { + color: #dcdfe4; + background-color: #e06c75; + } + .z-invalid.z-broken { + color: #dcdfe4; + background-color: #e5c07b; + } + .z-invalid.z-deprecated { + color: #dcdfe4; + background-color: #e5c07b; + } + .z-invalid.z-unimplemented { + color: #dcdfe4; + background-color: #c678dd; + } } diff --git a/docs-site/static/syntax-theme-light.css b/docs-site/static/syntax-theme-light.css index b6b51639f..e0a5f30a8 100644 --- a/docs-site/static/syntax-theme-light.css +++ b/docs-site/static/syntax-theme-light.css @@ -5,6 +5,8 @@ .z-code { color: #383a42; background-color: #fafafa; + border: 1px solid #e0e0e0; + overflow: auto; } .z-comment { diff --git a/docs-site/static/top.svg b/docs-site/static/top.svg new file mode 100644 index 000000000..7205e0948 --- /dev/null +++ b/docs-site/static/top.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs-site/styles/styles.css b/docs-site/styles/styles.css new file mode 100644 index 000000000..995148753 --- /dev/null +++ b/docs-site/styles/styles.css @@ -0,0 +1,248 @@ +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "tailwindcss/utilities"; +@import "tailwindcss/typography"; + +@layer base { + :root { + --background: #ffffff; + --background-secondary: #5F456B; + + /* 1f2937 gray-800*/ + --foreground: #1f2937; /* gray-900 */ + --primary: #D45546; + --redrust: #c12110; + --orangerust: #cc4111; + + --border: #3A3A54; + + --card: #1D1D2A; + --card-foreground: #FDCEF1; + + --radius: 0.5rem; + } + + .dark { + --background: black; + --foreground: hsl(213, 31%, 91%); + + --muted: hsl(223, 47%, 11%); + --muted-foreground: hsl(215.4, 16.3%, 56.9%); + + --accent: hsl(216, 34%, 17%); + --accent-foreground: hsl(210, 40%, 98%); + + --popover: hsl(224, 71%, 4%); + --popover-foreground: hsl(215, 20.2%, 65.1%); + + --border: hsl(216, 34%, 17%); + --input: hsl(216, 34%, 17%); + + --card: hsl(224, 71%, 4%); + --card-foreground: hsl(213, 31%, 91%); + + --primary: hsl(210, 40%, 98%); + --primary-foreground: hsl(222.2, 47.4%, 1.2%); + + --secondary: hsl(222.2, 47.4%, 11.2%); + --secondary-foreground: hsl(210, 40%, 98%); + + --destructive: hsl(0, 63%, 31%); + --destructive-foreground: hsl(210, 40%, 98%); + + --ring: hsl(216, 34%, 17%); + + --radius: 0.5rem; + } +} + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground font-text; + font-feature-settings: "rlig" 1, "calt" 1; + } + + h1, h2, h3, h4, h5 { + letter-spacing: -0.03em; + scroll-margin-top: 56px; + } + a.active { + @apply text-primary; + } +} + +.infobox { + @apply relative my-8 w-full rounded-lg border px-4 py-3 text-sm border-green-500/50 text-green-500 bg-green-50 dark:bg-green-950 dark:border-green-500 pl-10; + + &:before{ + content: ''; + width: 15px; + height: 15px; + background-color: currentColor; + mask: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z' fill='currentColor' fill-rule='evenodd' clip-rule='evenodd'%3E%3C/path%3E%3C/svg%3E"); + @apply translate-y-[-3px] absolute left-4 top-4; + } +} + +.section-colored { + h1, h2 { + @apply text-background; + } +} +.dark { + .section-colored { + + h1, + h2 { + @apply text-white; + } + } +} + +.section { + @apply px-2 sm:px-0; + h1 { + @apply font-semibold; + @apply sm:text-6xl; + @apply mb-8; + letter-spacing: -0.05em; + } + h2 { + @apply text-xl sm:text-3xl font-light; + @apply mt-0; + } + pre { + @apply my-0; + } +} +.footer-links { + a { + @apply no-underline text-white mx-2; + } +} +.fatbtn { + @apply no-underline text-lg font-semibold text-foreground bg-background rounded-sm px-8 py-3; +} +.video-container { + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + height: 0; +} +.video-container iframe { +position: absolute; +top: 0; +left: 0; +width: 100%; +height: 100%; +} +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + @apply px-2 md:px-0 +} +.prose { + ul { + padding-inline-start: 1em; + } +} + + + +.navbar-form { + position: relative; + } + +#suggestions { + position: absolute; + right: 0; + margin-top: 0.5rem; + width: calc(100vw - 8rem); + max-height: 500px; + overflow: auto; + @apply bg-background; +} + +#suggestions a { + display: block; + text-decoration: none; + padding: 0.75rem; + margin: 0 0.5rem; +} + +#suggestions a:focus { + @apply bg-gray-100 dark:bg-zinc-700; + outline: 0; +} + +#suggestions div:not(:first-child) { + @apply border-gray-200; +} + +#suggestions div:first-child { + margin-top: 0.5rem; +} + +#suggestions div:last-child { + margin-bottom: 0.5rem; +} + +#suggestions a:hover { + @apply bg-gray-100 dark:bg-zinc-800; +} + +#suggestions span { + @apply text-sm; +} + +#suggestions span:first-child { + @apply text-foreground; + @apply font-semibold; +} + +#suggestions span:nth-child(2) { + @apply text-gray-700 dark:text-gray-400; +} + +@media screen(sm) { + #suggestions { + width: 30rem; + } + + #suggestions a { + display: flex; + } + + #suggestions span:first-child { + width: 9rem; + padding-right: 1rem; + @apply border-gray-200; + display: inline-block; + text-align: right; + } + + #suggestions span:nth-child(2) { + width: 19rem; + padding-left: 1rem; + } +} + +html .toggle-dark { + display: block; +} + +html .toggle-light { + display: none; +} + +html.dark .toggle-light { + display: block; +} + +html.dark .toggle-dark { + display: none; +} diff --git a/docs-site/tailwind.config.js b/docs-site/tailwind.config.js new file mode 100644 index 000000000..02bc0cdf9 --- /dev/null +++ b/docs-site/tailwind.config.js @@ -0,0 +1,58 @@ +/** @type {import('tailwindcss').Config} */ + +const { fontFamily } = require("tailwindcss/defaultTheme"); + +module.exports = { + darkMode: ["class"], + content: ["./themes/**/*.html", "./templates/**/*.html", "./content/**/*.md"], + theme: { + extend: { + typography: ({ theme }) => ({ + DEFAULT: { + // this is for prose class + css: { + "--tw-prose-headings": theme("colors.foreground"), + "--tw-prose-body": theme("colors.foreground"), + }, + }, + }), + spacing: {}, + colors: { + background: "var(--background)", + "background-secondary": "var(--background-secondary)", + foreground: "var(--foreground)", + redrust: "var(--redrust)", + orangerust: "var(--orangerust)", + primary: { + DEFAULT: "var(--primary)", + foreground: "var(--primary-foreground)", + }, + secondary: { + DEFAULT: "var(--secondary)", + foreground: "var(--secondary-foreground)", + }, + border: "var(--border)", + card: { + DEFAULT: "var(--card)", + foreground: "var(--card-foreground)", + }, + }, + borderRadius: { + lg: `var(--radius)`, + md: `calc(var(--radius) - 2px)`, + sm: "calc(var(--radius) - 4px)", + }, + fontFamily: { + inter: ["Inter"], + text: ["Inter"], + heading: ["Arimo"], + }, + }, + }, + variants: { + extend: { + inset: ["negative"], + }, + }, + plugins: [require("@tailwindcss/typography")], +}; diff --git a/docs-site/themes/adidoks/templates/404.html b/docs-site/templates/404.html similarity index 100% rename from docs-site/themes/adidoks/templates/404.html rename to docs-site/templates/404.html diff --git a/docs-site/templates/base.html b/docs-site/templates/base.html new file mode 100644 index 000000000..ad6ce1c02 --- /dev/null +++ b/docs-site/templates/base.html @@ -0,0 +1,45 @@ +{% import 'macros/footer.html' as macros_footer -%} +{% import 'macros/header.html' as macros_header -%} +{% import 'macros/javascript.html' as macros_js -%} +{% import 'macros/docs-sidebar.html' as macros_sidebar -%} +{% import 'macros/docs-edit-page.html' as macros_edit_page -%} +{% import 'macros/docs-navigation.html' as macros_navigation -%} +{% import 'macros/docs-toc.html' as macros_toc -%} +{% import 'macros/page-publish-metadata.html' as macros_publish -%} +{% import 'macros/youtube.html' as youtube -%} + + + + + + + + + + + + + + + + + + + + + +

+
+ {% block header %} + {{ macros_header::header(current_section="/") }} + {% endblock header %} + + {% block content %}{% endblock content %} +
+ + {{macros_footer::footer()}} + {{ macros_js::javascript() }} + + + + diff --git a/docs-site/templates/blog/page.html b/docs-site/templates/blog/page.html new file mode 100644 index 000000000..55cd0d60b --- /dev/null +++ b/docs-site/templates/blog/page.html @@ -0,0 +1,30 @@ +{# Default page template used for blog contents #} + +{% extends "page.html" %} + +{% block body %} +{% set page_class = "blog single" %} +{% endblock body %} + +{% block header %} +{{ macros_header::header(current_section='blog')}} +{% endblock header %} + +{% block content %} +
+
+ {{ macros_publish::page_publish_metadata(page=page) }} +

{{ page.title }}

+
+ {% if page.taxonomies.authors and + config.taxonomies %} {% for author in page.taxonomies.authors %}{% if author_flag %} and {% endif %}{{ author }}{% set_global author_flag + = true %}{% endfor %}{% endif %} +
+ {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} +
+ {{ page.content | safe }} +
+ +
+
+{% endblock content %} diff --git a/docs-site/templates/blog/section.html b/docs-site/templates/blog/section.html new file mode 100644 index 000000000..699a0d34b --- /dev/null +++ b/docs-site/templates/blog/section.html @@ -0,0 +1,48 @@ +{% extends "section.html" %} + +{% block body %} +{% set page_class = "blog list" %} +{% endblock body %} + +{% block header %} +{# This value is matched by the config.extra.menu.main->section #} +{% set current_section = "blog" %} +{{ macros_header::header(current_section=current_section)}} +{% endblock header %} + +{% block content %} + + + + + + +
+

Latest Updates

+

Updates and techincal articles from the team and contributors

+
+ +
+
+
+ {% for page in paginator.pages %} + +
+

{{ page.title }}

+

{{page.description | safe }}

+
+
+
+ Read more +
+ +
+
+ {% endfor %} + {% if paginator.previous or paginator.next %} + {{ macros_section_nav::navigation(paginator=paginator) }} + {% endif %} +
+
+
+{% endblock content %} diff --git a/docs-site/templates/casts/page.html b/docs-site/templates/casts/page.html new file mode 100644 index 000000000..ed89f8f69 --- /dev/null +++ b/docs-site/templates/casts/page.html @@ -0,0 +1,28 @@ +{# Default page template used for blog contents #} + +{% extends "page.html" %} + +{% block body %} +{% set page_class = "casts single" %} +{% endblock body %} + +{% block header %} +{{ macros_header::header(current_section='casts')}} +{% endblock header %} + +{% block content %} +
+
+ {{ youtube::youtube(id=page.extra.id) }} + {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} +
+ {{ macros_publish::page_publish_metadata(page=page) }} +

{{ page.title }}

+ {{ page.content | safe }} +
+ +
+
+ + +{% endblock content %} diff --git a/docs-site/templates/casts/section.html b/docs-site/templates/casts/section.html new file mode 100644 index 000000000..54536d9d7 --- /dev/null +++ b/docs-site/templates/casts/section.html @@ -0,0 +1,54 @@ +{% extends "section.html" %} + +{% block body %} +{% set page_class = "casts list" %} +{% endblock body %} + +{% block header %} +{# This value is matched by the config.extra.menu.main->section #} +{% set current_section = "casts" %} +{{ macros_header::header(current_section=current_section)}} +{% endblock header %} + +{% block content %} + + + + + + +
+

Loco Casts

+

Short and focused tutorials for learning various Loco features

+
+ +
+
+
+ {% for page in paginator.pages %} + +
+ {{ youtube::thumb(id=page.extra.id) }} +
+
+
+

{{ page.title }}

+

{{page.description | safe }}

+
+
+
+ Watch +
+ +
+
+
+ {% endfor %} + {% if paginator.previous or paginator.next %} + {{ macros_section_nav::navigation(paginator=paginator) }} + {% endif %} +
+
+
+ +{% endblock content %} diff --git a/docs-site/templates/docs/page.html b/docs-site/templates/docs/page.html new file mode 100644 index 000000000..36b2b7cf7 --- /dev/null +++ b/docs-site/templates/docs/page.html @@ -0,0 +1,54 @@ +{% extends "page.html" %} + +{% block body %} +{% set page_class = "docs single" %} +{% endblock body %} + +{% block header %} +{# This value is matched by the config.extra.menu.main~url #} +{% set current_section = "docs" %} +{{ macros_header::header(current_section=current_section)}} +{% endblock header %} + +{% block content %} +
+
+
+ +
+
+
+
+
+
+

{{ page.title | safe }}

+ {% if page.extra.lead %}

{{ page.extra.lead | safe }}

{% endif %} + + {{ page.content | safe }} +
+ {% if config.extra.edit_page %} + {{ macros_edit_page::docs_edit_page(current_path=current_path) }} + {% endif %} + {{ macros_navigation::docs_navigation(page=page, current_section=current_section) }} +
+ + + +
+ +
+ + + +
+ + + +{% endblock content %} diff --git a/docs-site/templates/docs/section.html b/docs-site/templates/docs/section.html new file mode 100644 index 000000000..61d50b9cd --- /dev/null +++ b/docs-site/templates/docs/section.html @@ -0,0 +1,49 @@ +{% extends "section.html" %} + +{% block body %} +{% set page_class = "docs list" %} +{% endblock body %} + +{% block header %} +{# This value is matched by the config.extra.menu.main~section #} +{% set current_section = "docs" %} +{{ macros_header::header(current_section=current_section)}} +{% endblock header %} + +{% block content %} +
+
+
+
+
+

{{ section.title }}

+
{{ section.content | safe }}
+
+ {% set index_path = current_path ~ "_index.md" | trim_start_matches(pat="/") %} + {% set index = get_section(path=index_path) %} + {% for page in index.pages %} + + {% endfor %} + {% for s in index.subsections %} + {% set subsection = get_section(path=s) %} + {% if subsection.pages %} + {% for page in subsection.pages %} + + {% endfor %} + {% endif %} + {% endfor %} +
+
+
+
+
+
+{% endblock content %} \ No newline at end of file diff --git a/docs-site/templates/index.html b/docs-site/templates/index.html new file mode 100644 index 000000000..754e2efa8 --- /dev/null +++ b/docs-site/templates/index.html @@ -0,0 +1,182 @@ +{% import 'macros/footer.html' as macros_footer -%} + +{% extends "base.html" %} + +{% block seo %} +{{ super() }} + +{% if config.title %} +{% set title = config.title %} +{% else %} +{% set title = "" %} +{% endif %} + +{% if config.extra.title_addition and title %} +{% set title_addition = title_separator ~ config.extra.title_addition %} +{% elif config.extra.title_addition %} +{% set title_addition = config.extra.title_addition %} +{% else %} +{% set title_addition = "" %} +{% endif %} + +{% set description = config.description %} + +{{ macros_head::seo(title=title, title_addition=title_addition, description=description, is_home=true) }} +{% endblock seo %} + +{% block content %} +
+ +
+ +
+ + +
+
+

+ It’s Like Ruby on Rails, but for Rust. +

+

+ Get the same great building experience of Rails, with the incredible
performance and safety of Rust. +

+
+
+
+
+ +
+
+
+ + +
+ + +
+
+

+ It’s time to make Rust your super-power. +

+

+ Using Rust with Loco is super easy. With a simple request lifecycle,
code generators, productivity + toolkits and more. +

+
+ +
+
+
+ +
+
$ cargo loco generate scaffold post title:string content:text
added: "src/controllers/post.rs" +injected: "src/controllers/mod.rs" +injected: "src/app.rs" +...
$ cargo loco start
+
+ ▄ ▀ + ▀ ▄ + ▄ ▀ ▄ ▄ ▄▀ + ▄ ▀▄▄ + ▄ ▀ ▀ ▀▄▀█▄ + ▀█▄ +▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▀▀█ + ██████ █████ ███ █████ ███ █████ ███ ▀█ + ██████ █████ ███ █████ ▀▀▀ █████ ███ ▄█▄ + ██████ █████ ███ █████ █████ ███ ████▄ + ██████ █████ ███ █████ ▄▄▄ █████ ███ █████ + ██████ █████ ███ ████ ███ █████ ███ ████▀ + ▀▀▀██▄ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ██▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://loco.rs +
+environment: development + database: automigrate + logger: disabled +compilation: debug + modes: server + +
listening on localhost:5150
+
+
+
+ + +
+
+ + +
+ + + +
+
+

+ Enjoy that sweet & effortless Rust performance +

+

+ Loco packs a lot of features and still gives you 10x more
performance compared to Node.js +

+
+ +
+
+ + +
+
+ + + +
+ +
+
+
+

+ Build apps locally and save lots of time. +

+

+ No need for SaaS or cloud services. Save time, money, and effort with
auth, workers, emails & more + out of the box. +

+
+ +
+ + {% for val in config.extra.homepage.features %} +
+
+ {{ val.example | markdown(inline=true) | safe }} +
+ +

+ {{ val.name }} +

+

+ {{val.description | safe}} +

+
+ {% endfor %} + +
+ + +
+
+ +
+{% endblock content %} + diff --git a/docs-site/templates/macros/docs-edit-page.html b/docs-site/templates/macros/docs-edit-page.html new file mode 100644 index 000000000..5cddf792c --- /dev/null +++ b/docs-site/templates/macros/docs-edit-page.html @@ -0,0 +1,9 @@ +{% macro docs_edit_page(current_path) %} +

+ + Edit this page on GitHub

+{% endmacro %} \ No newline at end of file diff --git a/docs-site/templates/macros/docs-navigation.html b/docs-site/templates/macros/docs-navigation.html new file mode 100644 index 000000000..9b4c150e5 --- /dev/null +++ b/docs-site/templates/macros/docs-navigation.html @@ -0,0 +1,107 @@ +{% macro docs_navigation(page, current_section) %} +
+ {# Find lighter navigation. There are three types: #} + {# 1. directly find the lighter if exists, #} + {# 2. find the last page in the previous sibling section, and #} + {# 3. find the last page in the parent section. #} + {% if page.lower %} + +
+
+ ← {{ page.lower.title }} +
+
+
+ {% elif not page.extra.top %} + {% set index = get_section(path=page.ancestors | reverse | first) %} + {% set parent = get_section(path=index.ancestors | reverse | first)%} + {% set first_subsection = get_section(path=parent.subsections | first) %} + {% if index == first_subsection %} + {% if parent.pages %} + {% set last_page = parent.pages | last %} + +
+
+ ← {{ last_page.title }} +
+
+
+ {% endif %} + {% else %} + {% for s in parent.subsections | reverse %} + {% set subsection = get_section(path=s) %} + {% if subsection.permalink == index.permalink %} + {% set_global found_current = true %} + {% else %} + {% if found_current %} + {% if subsection.pages %} + {% set last_page = subsection.pages | last %} + +
+
+ ← {{ last_page.title }} +
+
+
+ {% endif %} + {# no break #} + {% set_global found_current = false %} + {% endif %} + {% endif %} + {% endfor %} + {% endif %} + {% endif %} + + {# Find heavier navigation. There are also three types: #} + {# 1. directly find the heavier if exists, #} + {# 2. find the first page in the subsection, and #} + {# 3. find the first page in the next sibling section. #} + {% if page.higher %} + +
+
+ {{ page.higher.title }} → +
+
+
+ {% elif page.extra.top %} + {% set index_path = current_section ~ "/_index.md" | trim_start_matches(pat="/") %} + {% set index = get_section(path=index_path) %} + {% set first_subsection = get_section(path=index.subsections | first) %} + {% if first_subsection.pages %} + {% set first_page = first_subsection.pages | first %} + +
+
+ {{ first_page.title }} → +
+
+
+ {% endif %} + {% else %} + {% set index = get_section(path=page.ancestors | reverse | first) %} + {% set parent = get_section(path=index.ancestors | reverse | first)%} + {% for s in parent.subsections %} + {% set subsection = get_section(path=s) %} + {% if subsection.permalink == index.permalink %} + {% set_global found_current = true %} + {% else %} + {% if found_current %} + {% if subsection.pages %} + {% set first_page = subsection.pages | first %} + +
+
+ {{ first_page.title }} → +
+
+
+ {% endif %} + {# no break #} + {% set_global found_current = false %} + {% endif %} + {% endif %} + {% endfor %} + {% endif %} +
+{% endmacro %} diff --git a/docs-site/templates/macros/docs-sidebar.html b/docs-site/templates/macros/docs-sidebar.html new file mode 100644 index 000000000..e29b3fc32 --- /dev/null +++ b/docs-site/templates/macros/docs-sidebar.html @@ -0,0 +1,40 @@ +{% macro docs_sidebar(current_section) %} +
+ +
+{% endmacro %} diff --git a/docs-site/templates/macros/docs-toc.html b/docs-site/templates/macros/docs-toc.html new file mode 100644 index 000000000..a16d3f395 --- /dev/null +++ b/docs-site/templates/macros/docs-toc.html @@ -0,0 +1,22 @@ +{% macro docs_toc(page) %} +{% if page.extra.toc %} + +{% endif %} +{% endmacro %} diff --git a/docs-site/templates/macros/footer.html b/docs-site/templates/macros/footer.html new file mode 100644 index 000000000..dc3c440bb --- /dev/null +++ b/docs-site/templates/macros/footer.html @@ -0,0 +1,23 @@ +{% macro footer() %} + +{% endmacro %} diff --git a/docs-site/templates/macros/header.html b/docs-site/templates/macros/header.html new file mode 100644 index 000000000..1fd3fa392 --- /dev/null +++ b/docs-site/templates/macros/header.html @@ -0,0 +1,141 @@ +{% macro header(current_section) %} +
+
+ + +
+ + +
+ +
+
+ +
+ + {% if config.build_search_index %} +
+ +
+ {% endif %} + + + + +
+
+
+ + +{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/macros/javascript.html b/docs-site/templates/macros/javascript.html similarity index 97% rename from docs-site/themes/adidoks/templates/macros/javascript.html rename to docs-site/templates/macros/javascript.html index 7d5e387f9..bba7557db 100644 --- a/docs-site/themes/adidoks/templates/macros/javascript.html +++ b/docs-site/templates/macros/javascript.html @@ -5,4 +5,4 @@ {% endif %} -{% endmacro %} +{% endmacro %} \ No newline at end of file diff --git a/docs-site/templates/macros/page-publish-metadata.html b/docs-site/templates/macros/page-publish-metadata.html new file mode 100644 index 000000000..5b34bd956 --- /dev/null +++ b/docs-site/templates/macros/page-publish-metadata.html @@ -0,0 +1,6 @@ +{% macro page_publish_metadata(page) %} +
+ {{ page.date | date(format=config.extra.timeformat | default(value="%A, %B %e, %Y"), + timezone=config.extra.timezone | default(value="America/New_York")) }} +
+{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/macros/youtube.html b/docs-site/templates/macros/youtube.html similarity index 67% rename from docs-site/themes/adidoks/templates/macros/youtube.html rename to docs-site/templates/macros/youtube.html index 91badf0bf..0ffea93b5 100644 --- a/docs-site/themes/adidoks/templates/macros/youtube.html +++ b/docs-site/templates/macros/youtube.html @@ -1,5 +1,4 @@ {% macro youtube(id, autoplay=false, class=false) %} -
-
{% endmacro %} {% macro thumb(id, class=false) %} - + {% endmacro %} diff --git a/docs-site/templates/page.html b/docs-site/templates/page.html new file mode 100644 index 000000000..c34ec3557 --- /dev/null +++ b/docs-site/templates/page.html @@ -0,0 +1,60 @@ +{# Default page.html template #} + +{% extends "base.html" %} + +{% block seo %} +{{ super() }} +{% set title_addition = "" %} +{% if page.title and config.title %} +{% set title = page.title %} +{% set title_addition = title_separator ~ config.title %} +{% elif page.title %} +{% set title = page.title %} +{% else %} +{% set title = config.title %} +{% endif %} + +{% if page.description %} +{% set description = page.description %} +{% else %} +{% set description = config.description %} +{% endif %} +{% set created_time = page.date %} +{% set updated_time = page.updated %} +{% if current_section %} +{% set page_section = current_section %} +{% else %} +{% set page_section = "" %} +{% endif %} + +{{ macros_head::seo(title=title, title_addition=title_addition, description=description, type="article", is_page=true, +created_time=created_time, updated_time=updated_time, page_section=page_section) }} +{% endblock seo %} + +{% block body %} +{% if section.extra.class %} +{% set page_class = page.extra.class %} +{% else %} +{% set page_class = "page single" %} +{% endif %} +{% endblock body %} + +{% block content %} +
+
+
+
+
+ + {% if page.extra.lead %}

{{ page.extra.lead }}

{% endif %} +
+ {{ page.content | safe }} +
+
+
+
+
+
+{% endblock content %} diff --git a/docs-site/templates/section.html b/docs-site/templates/section.html new file mode 100644 index 000000000..0703983a9 --- /dev/null +++ b/docs-site/templates/section.html @@ -0,0 +1,50 @@ +{# Default section.html template #} + +{% extends "base.html" %} + +{% block seo %} +{{ super() }} +{% set title_addition = "" %} + +{% if section.title and config.title %} +{% set title = section.title %} +{% set title_addition = title_separator ~ config.title %} +{% elif section.title %} +{% set title = section.title %} +{% else %} +{% set title = config.title %} +{% endif %} + +{% if section.description %} +{% set description = section.description %} +{% else %} +{% set description = config.description %} +{% endif %} + +{{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} +{% endblock seo %} + +{% block body %} +{% if section.extra.class %} +{% set page_class = section.extra.class %} +{% else %} +{% set page_class = "page list" %} +{% endif %} +{% endblock body %} + +{% block content %} +
+
+
+
+
+ + {{ section.content | safe }} +
+
+
+
+
+{% endblock content %} \ No newline at end of file diff --git a/docs-site/templates/.gitkeep b/docs-site/templates/taxonomy_list.html similarity index 100% rename from docs-site/templates/.gitkeep rename to docs-site/templates/taxonomy_list.html diff --git a/docs-site/templates/taxonomy_single.html b/docs-site/templates/taxonomy_single.html new file mode 100644 index 000000000..e69de29bb diff --git a/docs-site/themes/adidoks/.gitignore b/docs-site/themes/adidoks/.gitignore deleted file mode 100644 index 1e496a387..000000000 --- a/docs-site/themes/adidoks/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -public -.vs -.vscode diff --git a/docs-site/themes/adidoks/CODE_OF_CONDUCT.md b/docs-site/themes/adidoks/CODE_OF_CONDUCT.md deleted file mode 100644 index b5dc1270e..000000000 --- a/docs-site/themes/adidoks/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations - diff --git a/docs-site/themes/adidoks/CONTRIBUTING.md b/docs-site/themes/adidoks/CONTRIBUTING.md deleted file mode 100644 index 95c7022e8..000000000 --- a/docs-site/themes/adidoks/CONTRIBUTING.md +++ /dev/null @@ -1,28 +0,0 @@ -# Contributing - -We'd love your help! Thanks for caring about the theme of Zola. - -## Licensing - -This repository is under the MIT license. You can find the full text of the [license](./LICENSE) in this repository. - -## Code of Conduct - -The AdiDoks theme has a [code of conduct](./CODE_OF_CONDUCT.md) that governs all sub-projects, including this one. Please respect it! - -## Contribute to Doks - -- Follow the [GitHub flow](https://guides.github.com/introduction/flow/). -- Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) - -## Create an issue - -- [Bug report](https://github.com/aaranxu/adidoks/issues/new?template=bug-report---.md) -- [Feature request](https://github.com/aaranxu/adidoks/issues/new?template=feature-request---.md) - -## Improve documentation - -👉 The documentation lives in [`./content/docs/`](https://github.com/aaranxu/adidoks/tree/master/content/docs) of the [`adidoks` repository](https://github.com/h-enk/getdoks.org). - -- Follow the [GitHub flow](https://guides.github.com/introduction/flow/). -- Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) diff --git a/docs-site/themes/adidoks/LICENSE b/docs-site/themes/adidoks/LICENSE deleted file mode 100644 index 60fda43ec..000000000 --- a/docs-site/themes/adidoks/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2021 Aaran Xu - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/docs-site/themes/adidoks/README.md b/docs-site/themes/adidoks/README.md deleted file mode 100644 index 8b060ac34..000000000 --- a/docs-site/themes/adidoks/README.md +++ /dev/null @@ -1,177 +0,0 @@ -# Zola Theme AdiDoks - -AdiDoks is a modern documentation theme, which is a port of the Hugo -theme [Doks](https://github.com/h-enk/doks) for Zola. - -## Demo - -[Live Preview](https://adidoks.netlify.app/). - -## Requirements - -Before using the theme, you need to install the [Zola](https://www.getzola.org/documentation/getting-started/installation/) ≥ 0.15.0. - -## Quick Start - -```bash -git clone https://github.com/aaranxu/adidoks.git -cd adidoks -zola serve -# open http://127.0.0.1:1111/ in the browser -``` - -Read more from [the document of the AdiDoks](https://adidoks.org/docs/getting-started/introduction/). - -## Installation - -Just earlier we showed you how to run the theme directly. Now we start to -install the theme in an existing site step by step. - -### Step 1: Create a new zola site - -```bash -zola init mysite -``` - -### Step 2: Install AdiDoks - -Download this theme to your themes directory: - -```bash -cd mysite/themes -git clone https://github.com/aaranxu/adidoks.git -``` - -Or install as a submodule: - -```bash -cd mysite -git init # if your project is a git repository already, ignore this command -git submodule add https://github.com/aaranxu/adidoks.git themes/adidoks -``` - -### Step 3: Configuration - -Enable the theme in your `config.toml` in the site directory: - -```toml -theme = "adidoks" -``` - -Or copy the `config.toml.example` from the theme directory to your project's -root directory: - -```bash -cp themes/adidoks/config.toml.example config.toml -``` - -### Step 4: Add new content - -You can copy the content from the theme directory to your project: - -```bash -cp -r themes/adidoks/content . -``` - -You can modify or add new posts in the `content/blog`, `content/docs` or other -content directories as needed. - -### Step 5: Run the project - -Just run `zola serve` in the root path of the project: - -```bash -zola serve -``` - -AdiDoks will start the Zola development web server accessible by default at -`http://127.0.0.1:1111`. Saved changes will live reload in the browser. - -## Customisation - -You can customize your configurations, templates and content for yourself. Look -at the `config.toml`, `theme.toml`, `content` files and templates files in this -repo for an idea. - -### Global Configuration - -There are some configuration options that you can customize in `config.toml`. - -#### Configuration options before `extra` options - -Set the authors's taxonomies for the site. - -```toml -taxonomies = [ - {name = "authors"}, -] -``` - -Use search function for the content. - -```toml -build_search_index = true -``` - -#### Configuration options under the `extra` - -The following options should be under the `[extra]` in `config.toml` - -- `language_code` - set HTML file language (default to `en-US`) -- `theme_color` - your site's HTML color (default to `#fff`) -- `title_separator` - the separator to your site title, like `|` and `-` (defaults to `|`) -- `title_addition` - the additon content for the title of the homepage -- `timeformat` - the timeformat for the blog article published date -- `timezone` - the timezone for the blog article published date -- `edit_page` (and `docs_repo`, `repo_branch`) - whether to show the edit page in the github repo for your docs -- `math` (and `library`) - set KaTeX or MathJax library -- `[extra.open]` - Open Graph + Twitter Cards for the site -- `[extra.schema]` - set JSON-LD for the site -- `[[extra.menu.main]]` - the header navigations for the site -- `[[extra.menu.social]]` - the social links on the header of the page -- `[extra.footer]` - the footer content on the left -- `[[extra.footer.nav]]` - the footer navigations on the right - -### Templates - -All pages are extend to the `base.html`, and you can customize them as need. - -### Content - -#### Homepage - -Go to the *content/_index.md* file to add your own homepage content. - -- `[extra]` - the main content of the homepage -- `[[extra.ist]]` - the lists' content of the homepage - -#### Sections - -Each section includes a `_index.md`, and you can customize it or add your new -section under the `content` folder. - -#### Pages - -There are mainly three types of pages in the site. - -- `blog` - blog article -- `docs` - documentation article -- `authors` - authors page if you need to add some information for a new author - -## Reporting Issues - -We use GitHub Issues as the official bug tracker for the **AdiDoks**. Please -search [existing issues](https://github.com/aaranxu/adidoks/issues). It’s -possible someone has already reported the same problem. - -If your problem or idea is not addressed yet, [open a new issue](https://github.com/aaranxu/adidoks/issues/new). - -## Contributing - -We'd love your help! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) to learn -about the kinds of contributions we're looking for. - -## License - -**AdiDoks** is distributed under the terms of the -[MIT license](https://github.com/aaranxu/adidoks/blob/main/LICENSE). diff --git a/docs-site/themes/adidoks/config.toml b/docs-site/themes/adidoks/config.toml deleted file mode 100644 index 5a31f7653..000000000 --- a/docs-site/themes/adidoks/config.toml +++ /dev/null @@ -1,132 +0,0 @@ -# The URL the site will be built for -base_url = "https://adidoks.netlify.com" -title = "AdiDoks" -description = "AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." - -# The default language; used in feeds and search index -# Note: the search index doesn't support Chinese/Japanese/Korean Languages -default_language = "en" - -# Whether to automatically compile all Sass files in the sass directory -compile_sass = true - -# Whether to generate a feed file for the site -generate_feed = true - -# When set to "true", the generated HTML files are minified. -minify_html = false - -# The taxonomies to be rendered for the site and their configuration. -taxonomies = [ - { name = "authors" }, # Basic definition: no feed or pagination -] - -# Whether to build a search index to be used later on by a JavaScript library -# When set to "true", a search index is built from the pages and section -# content for `default_language`. -build_search_index = true - -[languages.fi] -title = "AdiDoks" - - -[search] -# Whether to include the title of the page/section in the index -include_title = true -# Whether to include the description of the page/section in the index -include_description = false -# Whether to include the rendered content of the page/section in the index -include_content = true - -[markdown] -# Whether to do syntax highlighting. -# Theme can be customised by setting the `highlight_theme` -# variable to a theme supported by Zola -highlight_code = true - -[extra] -# Put all your custom variables here -author = "Aaran Xu" -github = "https://github.com/aaranxu" -twitter = "https://twitter.com/aaranxu" -email = "aaranxu@outlook.com" -ganalytics = "" # Google Analytics code - -# If running on netlify.app site, set to true -is_netlify = true - -# Set HTML file language -language_code = "en-US" - -# Set theme-color meta tag for Chrome browser -theme_color = "#fff" - -# More about site's title -title_separator = "|" # set as |, -, _, etc -title_addition = "Modern Documentation Theme" - - -# Set date format in blog publish metadata -timeformat = "%Y-%m-%d %H:%M:%S" # e.g. 2021-05-01 09:19:42 -timezone = "UTC" - -# Edit page on reposity or not -edit_page = false -docs_repo = "https://github.com/aaranxu/adidoks" -repo_branch = "main" - -## Math settings -# options: true, false. Enable math support globally, -# default: false. You can always enable math on a per page. -math = false -library = "katex" # options: "katex", "mathjax". default is "katex". - -## Open Graph + Twitter Cards -[extra.open] -enable = true -# this image will be used as fallback if a page has no image of its own -image = "doks.png" -twitter_site = "aaranxu" -twitter_creator = "aaranxu" -facebook_author = "ichunyun" -facebook_publisher = "ichunyun" -og_locale = "en_US" - -## JSON-LD -[extra.schema] -type = "Organization" -logo = "logo-doks.png" -twitter = "https://twitter.com/aaranxu" -linked_in = "" -github = "https://github.com/aaranxu" -section = "blog" # see config.extra.main~url -## Sitelinks Search Box -site_links_search_box = false - - -[[extra.menu.social]] -name = "Twitter" -pre = '' -url = "https://twitter.com/aaranxu" -weight = 10 - -[[extra.menu.social]] -name = "GitHub" -pre = '' -url = "https://github.com/aaranxu/adidoks" -post = "v0.1.0" -weight = 20 - -# Footer contents -[extra.footer] -info = 'Powered by Netlify, Zola, and AdiDoks' - -[[extra.footer.nav]] -name = "Privacy" -url = "/privacy-policy/" -weight = 10 - -[[extra.footer.nav]] -name = "Code of Conduct" -url = "/docs/contributing/code-of-conduct/" -weight = 20 diff --git a/docs-site/themes/adidoks/config.toml.example b/docs-site/themes/adidoks/config.toml.example deleted file mode 100644 index a395048f3..000000000 --- a/docs-site/themes/adidoks/config.toml.example +++ /dev/null @@ -1,143 +0,0 @@ -# The URL the site will be built for -base_url = "https://adidoks.netlify.com" -title = "AdiDoks" -description = "AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." - -# The site theme to use. -theme = "adidoks" - -# The default language; used in feeds and search index -# Note: the search index doesn't support Chinese/Japanese/Korean Languages -default_language = "en" - -# Whether to automatically compile all Sass files in the sass directory -compile_sass = true - -# Whether to generate a feed file for the site -generate_feed = true - -# When set to "true", the generated HTML files are minified. -minify_html = false - -# The taxonomies to be rendered for the site and their configuration. -taxonomies = [ - {name = "authors"}, # Basic definition: no feed or pagination -] - -# Whether to build a search index to be used later on by a JavaScript library -# When set to "true", a search index is built from the pages and section -# content for `default_language`. -build_search_index = true - -[search] -# Whether to include the title of the page/section in the index -include_title = true -# Whether to include the description of the page/section in the index -include_description = false -# Whether to include the rendered content of the page/section in the index -include_content = true - -[markdown] -# Whether to do syntax highlighting. -# Theme can be customised by setting the `highlight_theme` -# variable to a theme supported by Zola -highlight_code = true - -[extra] -# Put all your custom variables here -author = "Aaran Xu" -github = "https://github.com/aaranxu" -twitter = "https://twitter.com/aaranxu" -email = "aaranxu@outlook.com" - -# If running on netlify.app site, set to true -is_netlify = true - -# Set HTML file language -language_code = "en-US" - -# Set theme-color meta tag for Chrome browser -theme_color = "#fff" - -# More about site's title -title_separator = "|" # set as |, -, _, etc -title_addition = "Modern Documentation Theme" - - -# Set date format in blog publish metadata -timeformat = "%B %e, %Y" # e.g. June 14, 2021 -timezone = "America/New_York" - -# Edit page on reposity or not -edit_page = false -docs_repo = "https://github.com/aaranxu/adidoks" -repo_branch = "main" - -## Math settings -# options: true, false. Enable math support globally, -# default: false. You can always enable math on a per page. -math = false -library = "katex" # options: "katex", "mathjax". default is "katex". - -## Open Graph + Twitter Cards -[extra.open] -enable = true -# this image will be used as fallback if a page has no image of its own -image = "doks.png" -twitter_site = "aaranxu" -twitter_creator = "aaranxu" -facebook_author = "ichunyun" -facebook_publisher = "ichunyun" -og_locale = "en_US" - -## JSON-LD -[extra.schema] -type = "Organization" -logo = "logo-doks.png" -twitter = "https://twitter.com/aaranxu" -linked_in = "" -github = "https://github.com/aaranxu" -section = "blog" # see config.extra.main~url -## Sitelinks Search Box -site_links_search_box = false - - -# Menu items -[[extra.menu.main]] -name = "Docs" -section = "docs" -url = "/docs/getting-started/introduction/" -weight = 10 - -[[extra.menu.main]] -name = "Blog" -section = "blog" -url = "/blog/" -weight = 20 - -[[extra.menu.social]] -name = "Twitter" -pre = '' -url = "https://twitter.com/aaranxu" -weight = 10 - -[[extra.menu.social]] -name = "GitHub" -pre = '' -url = "https://github.com/aaranxu/adidoks" -post = "v0.1.0" -weight = 20 - -# Footer contents -[extra.footer] -info = 'Powered by Netlify, Zola, and AdiDoks' - -[[extra.footer.nav]] -name = "Privacy" -url = "/privacy-policy/" -weight = 10 - -[[extra.footer.nav]] -name = "Code of Conduct" -url = "/docs/contributing/code-of-conduct/" -weight = 20 diff --git a/docs-site/themes/adidoks/content/_index.fi.md b/docs-site/themes/adidoks/content/_index.fi.md deleted file mode 100644 index 0e52f3c5d..000000000 --- a/docs-site/themes/adidoks/content/_index.fi.md +++ /dev/null @@ -1,51 +0,0 @@ -+++ -title = "Nykyaikainen teema dokumentaatiolle" - - -# The homepage contents -[extra] -lead = 'AdiDoks on nykyaikainen teema dokumentaatiosivustoille. Se on portattu Zolalle Hugo-teemasta nimeltä Doks.' -url = "/docs/getting-started/introduction/" -url_button = "Aloita" -repo_version = "GitHub v0.1.0" -repo_license = "Open-source MIT License." -repo_url = "https://github.com/aaranxu/adidoks" - -# Menu items -[[extra.menu.main]] -name = "Dokumentaatio" -section = "docs" -url = "/docs/getting-started/introduction/" -weight = 10 - -[[extra.menu.main]] -name = "Blogi" -section = "blog" -url = "/blog/" -weight = 20 - -[[extra.list]] -title = "Turvallisuustietoinen" -content = 'Saat A+-arvosanoja Mozilla Observatoryssä suoraan. Voit vaihtaa turvallisuusheadereita tarpeidesi mukaan.' - -[[extra.list]] -title = "Salamannopea ⚡️" -content = 'Saat hyvät pisteet Google Lighthousessa defaultina. Doks poistaa tarpeettomat css:t, esinoutaa linkit, ja lataa kuvat laiskasti.' - -[[extra.list]] -title = "SEO-valmis" -content = "Käytä järkeviä oletusarvoja rakenteiselle datalle, open graphille ja Twitter-korteille. Tai muunna SEO-asetukset mieleisiksesi helposti." - -[[extra.list]] -title = "Fulltext-haku" -content = "Tee hakuja sivuillesi FlexSearchilla. Muuntele indeksointiasetuksia mieleisiksesi helposti." - -[[extra.list]] -title = "Sivujen layoutit" -content = "Rakenna sivuja laskeutumisivun, blogisivun tai dokumentaatiolayoutin mukaan. Lisää osioita ja komponentteja tarpeen mukaan." - -[[extra.list]] -title = "Dark mode" -content = "Vaihda hämärässä käytettävään käyttöliittymäteemaan nappia painamalla. Muuta värit muuttujilla vastaamaan brändiäsi." - -+++ diff --git a/docs-site/themes/adidoks/content/_index.md b/docs-site/themes/adidoks/content/_index.md deleted file mode 100644 index fb5961ee5..000000000 --- a/docs-site/themes/adidoks/content/_index.md +++ /dev/null @@ -1,51 +0,0 @@ -+++ -title = "Modern Documentation Theme" - - -# The homepage contents -[extra] -lead = 'AdiDoks is a modern documentation theme, which is a port of the Hugo theme Doks for Zola.' -url = "/docs/getting-started/introduction/" -url_button = "Get started" -repo_version = "GitHub v0.1.0" -repo_license = "Open-source MIT License." -repo_url = "https://github.com/aaranxu/adidoks" - -# Menu items -[[extra.menu.main]] -name = "Docs" -section = "docs" -url = "/docs/getting-started/introduction/" -weight = 10 - -[[extra.menu.main]] -name = "Blog" -section = "blog" -url = "/blog/" -weight = 20 - -[[extra.list]] -title = "Security aware" -content = 'Get A+ scores on Mozilla Observatory out of the box. Easily change the default Security Headers to suit your needs.' - -[[extra.list]] -title = "Fast by default ⚡️" -content = 'Get 100 scores on Google Lighthouse by default. Doks removes unused css, prefetches links, and lazy loads images.' - -[[extra.list]] -title = "SEO-ready" -content = "Use sensible defaults for structured data, open graph, and Twitter cards. Or easily change the SEO settings to your liking." - -[[extra.list]] -title = "Full text search" -content = "Search your Doks site with FlexSearch. Easily customize index settings and search options to your liking." - -[[extra.list]] -title = "Page layouts" -content = "Build pages with a landing page, blog, or documentation layout. Add custom sections and components to suit your needs." - -[[extra.list]] -title = "Dark mode" -content = "Switch to a low-light UI with the click of a button. Change colors with variables to match your branding." - -+++ diff --git a/docs-site/themes/adidoks/content/authors/_index.md b/docs-site/themes/adidoks/content/authors/_index.md deleted file mode 100644 index 0686f7689..000000000 --- a/docs-site/themes/adidoks/content/authors/_index.md +++ /dev/null @@ -1,18 +0,0 @@ -+++ -title = "Authors" -description = "The authurs of the blog articles." -date = 2021-04-01T08:00:00+00:00 -updated = 2021-04-01T08:00:00+00:00 -draft = false - -# If add a new author page in this section, please add a new item, -# and the format is as follows: -# -# "author-name-in-url" = "the-full-path-of-the-author-page" -# -# Note: We use quoted keys here. -[extra.author_pages] -"aaran-xu" = "authors/aaran-xu.md" -+++ - -The authors of the blog articles. diff --git a/docs-site/themes/adidoks/content/authors/aaran-xu.md b/docs-site/themes/adidoks/content/authors/aaran-xu.md deleted file mode 100644 index 386b0feb8..000000000 --- a/docs-site/themes/adidoks/content/authors/aaran-xu.md +++ /dev/null @@ -1,11 +0,0 @@ -+++ -title = "Aaran Xu" -description = "Creator of AdiDoks." -date = 2021-04-01T08:50:45+00:00 -updated = 2021-04-01T08:50:45+00:00 -draft = false -+++ - -Creator of **AdiDoks**. - -[@aaranxu](https://github.com/aaranxu) diff --git a/docs-site/themes/adidoks/content/blog/_index.md b/docs-site/themes/adidoks/content/blog/_index.md deleted file mode 100644 index 95ecd8e1c..000000000 --- a/docs-site/themes/adidoks/content/blog/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = "Blog" -description = "Blog" -sort_by = "date" -paginate_by = 2 -template = "blog/section.html" -+++ diff --git a/docs-site/themes/adidoks/content/blog/hello-world.md b/docs-site/themes/adidoks/content/blog/hello-world.md deleted file mode 100644 index 541c6132b..000000000 --- a/docs-site/themes/adidoks/content/blog/hello-world.md +++ /dev/null @@ -1,41 +0,0 @@ -+++ -title = "Hello World" -description = "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." -date = 2021-05-01T09:19:42+00:00 -updated = 2021-05-01T09:19:42+00:00 -draft = false -template = "blog/page.html" - -[taxonomies] -authors = ["Rustaceans"] - -[extra] -lead = "This is the source code of the traditional Hello World program." -+++ - -```rust -// This is a comment, and is ignored by the compiler - -// This is the main function -fn main() { - // Statements here are executed when the compiled binary is called - - // Print text to the console - println!("Hello World!"); -} -``` - -`println!` is a macro that prints text to the console. - -A binary can be generated using the Rust compiler: `rustc`. - -```bash -$ rustc hello.rs -``` - -`rustc` will produce a `hello` binary that can be executed. - -```bash -$ ./hello -Hello World! -``` diff --git a/docs-site/themes/adidoks/content/blog/markdown-syntax.md b/docs-site/themes/adidoks/content/blog/markdown-syntax.md deleted file mode 100644 index baccf9794..000000000 --- a/docs-site/themes/adidoks/content/blog/markdown-syntax.md +++ /dev/null @@ -1,152 +0,0 @@ -+++ -title = "Markdown Syntax Guide" -description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements." -date = 2021-04-20T09:19:42+00:00 -updated = 2021-04-20T09:19:42+00:00 -draft = false -template = "blog/page.html" - -[taxonomies] -authors = ["Public"] - -[extra] -lead = "This article offers a sample of basic Markdown syntax that can be used in Zola content files, also it shows whether basic HTML elements are decorated with CSS in a Zola theme." -+++ - -## Headings - -The following HTML `

`—`

` elements represent six levels of section -headings. `

` is the highest section level while `

` is the lowest. - -# H1 -## H2 -### H3 -#### H4 -##### H5 -###### H6 - -## Paragraph - -Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, -voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma -dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as -cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin -porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? -Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit -ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda -veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore -eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata -tiustia prat. - -Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne -sapicia is sinveli squiatum, core et que aut hariosam ex eat. - -## Blockquotes - -The blockquote element represents content that is quoted from another source, -optionally with a citation which must be within a `footer` or `cite` element, -and optionally with in-line changes such as annotations and abbreviations. - -#### Blockquote without attribution - -> Tiam, ad mint andaepu dandae nostion secatur sequo quae. -> **Note** that you can use *Markdown syntax* within a blockquote. - -#### Blockquote with attribution - -> Don't communicate by sharing memory, share memory by communicating.
-> — Rob Pike[^1] - -> All men by nature desire to know.
-> ― Aristotle[^2] - -## Tables - -Tables aren't part of the core Markdown spec, but Zola supports them -out-of-the-box. - - Name | Age ---------|------ - Bob | 27 - Alice | 23 - -#### Inline Markdown within tables - -| Italics | Bold | Code | -| -------- | -------- | ------ | -| *italics* | **bold** | `code` | - -## Code Blocks - -#### Code block with backticks - -```html - - - - - Example HTML5 Document - - -

Test

- - -``` - -#### Code block indented with four spaces - - - - - - Example HTML5 Document - - -

Test

- - - -## List Types - -#### Ordered List - -1. First item -2. Second item -3. Third item - -#### Unordered List - -- List item -- Another item -- And another item - -#### Nested list - -- Fruit - - Apple - - Orange - - Banana -- Dairy - - Milk - - Cheese - -## Other Elements — abbr, sub, sup, kbd, mark - -GIF is a bitmap image format. - -H2O - -Xn + Yn = Zn - -Press CTRL+ALT+Delete to end the -session. - -Most salamanders are nocturnal, and hunt for insects, worms, and -other small creatures. - ---- - -[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) -during Gopherfest, November 18, 2015. - -[^2]: The quote is the first sentence of Aristotle's [Metaphysics](http://classics.mit.edu/Aristotle/metaphysics.html). \ No newline at end of file diff --git a/docs-site/themes/adidoks/content/blog/math-typesetting.md b/docs-site/themes/adidoks/content/blog/math-typesetting.md deleted file mode 100644 index 99eaca82d..000000000 --- a/docs-site/themes/adidoks/content/blog/math-typesetting.md +++ /dev/null @@ -1,48 +0,0 @@ -+++ -title = "Math Typesetting" -description = "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." -date = 2021-04-08T09:19:42+00:00 -updated = 2021-04-08T09:19:42+00:00 -draft = false -template = "blog/page.html" - -[taxonomies] -authors = ["Public"] - -[extra] -lead = "Mathematical notation in a project can be enabled by using third party JavaScript libraries." -math = true -+++ - - -In this example we will be using [KaTeX](https://katex.org/) - -- Create a macro under `/template/macros/math.html` with a macro named `math`. -- Within this macro reference the [Auto-render Extension](https://katex.org/docs/autorender.html) or host these scripts locally. -- Import the macro in your templates like so: - -```bash -{% import 'macros/math.html' as macros %} -{% if page.extra.math or section.extra.math or config.extra.math %} -{{ macros::math() }} -{% endif %} -``` - -- To enable KaTex globally set the parameter `extra.math` to `true` in a project's configuration -- To enable KaTex on a per page basis include the parameter `extra.math = true` in content files - -**Note:** - -1. The MathJax library is the other optional choice, and you can set the parameter `extra.library` to `mathjax` in a project's configuration -2. Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html) - -### Examples - -

-Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\) -

- -Block math: -$$ - \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } -$$ diff --git a/docs-site/themes/adidoks/content/blog/placeholder-text.md b/docs-site/themes/adidoks/content/blog/placeholder-text.md deleted file mode 100644 index 750d5ab8c..000000000 --- a/docs-site/themes/adidoks/content/blog/placeholder-text.md +++ /dev/null @@ -1,62 +0,0 @@ -+++ -title = "Placeholder Text" -description = "Lorem Ipsum Dolor Si Amet" -date = 2021-04-10T09:19:42+00:00 -updated = 2021-04-10T09:19:42+00:00 -draft = false -template = "blog/page.html" - -[taxonomies] -authors = ["Public"] - -+++ - -Lorem est tota propiore conpellat pectoribus de pectora summo. Redit -teque digerit hominumque toris verebor lumina non cervice subde tollit usus -habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus -inhospita parcite confusaque translucet patri vestro qui optatis lumine -cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum. - -1. Exierant elisi ambit vivere dedere -2. Duce pollice -3. Eris modo -4. Spargitque ferrea quos palude - -Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus -silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis. - -1. Comas hunc haec pietate fetum procerum dixit -2. Post torum vates letum Tiresia -3. Flumen querellas -4. Arcanaque montibus omnes -5. Quidem et - -# Vagus elidunt - - - -[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon) - -## Mane refeci capiebant unda mulcebat - -Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit -colit est profanae esse virescere furit nec; iaculi matertera et visa est, -viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. -**Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, -sidus sequendo urbis. - -Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli -Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare -Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert -ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae -vulnus haerentia iuste et exercebat, sui et. - -Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit -sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis -corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti -flumina mortis facto sic: undique a alios vincula sunt iactata abdita! -Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**. - - diff --git a/docs-site/themes/adidoks/content/blog/say-hello-to-zola-doks.md b/docs-site/themes/adidoks/content/blog/say-hello-to-zola-doks.md deleted file mode 100644 index 5599f4a59..000000000 --- a/docs-site/themes/adidoks/content/blog/say-hello-to-zola-doks.md +++ /dev/null @@ -1,15 +0,0 @@ -+++ -title = "Say hello to AdiDoks 👋" -description = "Introducing AdiDoks, a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." -date = 2021-04-03T07:00:00+00:00 -updated = 2021-04-03T07:00:00+00:00 -template = "blog/page.html" -draft = false - -[taxonomies] -authors = ["Aaran Xu"] - -[extra] -lead = 'Introducing AdiDoks, a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola.' -images = [] -+++ diff --git a/docs-site/themes/adidoks/content/docs/_index.md b/docs-site/themes/adidoks/content/docs/_index.md deleted file mode 100644 index d715a6cc7..000000000 --- a/docs-site/themes/adidoks/content/docs/_index.md +++ /dev/null @@ -1,9 +0,0 @@ -+++ -title = "Docs" -description = "The documents of the AdiDoks theme." -date = 2025-05-01T08:00:00+00:00 -updated = 2021-05-01T08:00:00+00:00 -sort_by = "weight" -weight = 1 -template = "docs/section.html" -+++ diff --git a/docs-site/themes/adidoks/content/docs/contributing/code-of-conduct.md b/docs-site/themes/adidoks/content/docs/contributing/code-of-conduct.md deleted file mode 100644 index f212db141..000000000 --- a/docs-site/themes/adidoks/content/docs/contributing/code-of-conduct.md +++ /dev/null @@ -1,146 +0,0 @@ -+++ -title = "Code of Conduct" -description = "Contributor Covenant Code of Conduct." -date = 2021-05-01T18:20:00+00:00 -updated = 2021-05-01T18:20:00+00:00 -draft = false -weight = 420 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "Contributor Covenant Code of Conduct." -toc = true -top = false -+++ - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/docs-site/themes/adidoks/content/docs/contributing/how-to-contribute.md b/docs-site/themes/adidoks/content/docs/contributing/how-to-contribute.md deleted file mode 100644 index 6999e367e..000000000 --- a/docs-site/themes/adidoks/content/docs/contributing/how-to-contribute.md +++ /dev/null @@ -1,37 +0,0 @@ -+++ -title = "How to Contribute" -description = "Contribute to AdiDoks, improve documentation, or submit to showcase." -date = 2021-05-01T18:10:00+00:00 -updated = 2021-05-01T18:10:00+00:00 -draft = false -weight = 410 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "Contribute to AdiDoks, improve documentation, or submit to showcase." -toc = true -top = false -+++ - -👉 Make sure to read the [Code of Conduct](../code-of-conduct/). - -## Contribute to Doks - -👉 The AdiDoks code lives in the [`adidoks` repository](https://github.com/aaranxu/adidoks) - -- Follow the [GitHub flow](https://guides.github.com/introduction/flow/). -- Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) - -### Create an issue - -- [Bug report](https://github.com/aaranxu/adidoks/issues/new?template=bug-report---.md) -- [Feature request](https://github.com/aaranxu/adidoks/issues/new?template=feature-request---.md) - -## Improve documentation - -👉 The documentation lives in [`./content/docs/`](https://github.com/aaranxu/adidoks/tree/master/content/docs) -of the [`adidoks` repository](https://github.com/h-enk/getdoks.org). - -- Follow the [GitHub flow](https://guides.github.com/introduction/flow/). -- Follow the [Conventional Commits Specification](https://www.conventionalcommits.org/en/v1.0.0/) diff --git a/docs-site/themes/adidoks/content/docs/getting-started/_index.md b/docs-site/themes/adidoks/content/docs/getting-started/_index.md deleted file mode 100644 index 8b972dbea..000000000 --- a/docs-site/themes/adidoks/content/docs/getting-started/_index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "Getting Started" -description = "Quick start and guides for installing the AdiDoks theme on your preferred operating system." -date = 2025-05-01T08:00:00+00:00 -updated = 2021-05-01T08:00:00+00:00 -template = "docs/section.html" -sort_by = "weight" -weight = 1 -draft = false -+++ diff --git a/docs-site/themes/adidoks/content/docs/getting-started/introduction.md b/docs-site/themes/adidoks/content/docs/getting-started/introduction.md deleted file mode 100644 index 6dfe20bf7..000000000 --- a/docs-site/themes/adidoks/content/docs/getting-started/introduction.md +++ /dev/null @@ -1,31 +0,0 @@ -+++ -title = "Introduction" -description = "AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola." -date = 2021-05-01T08:00:00+00:00 -updated = 2021-05-01T08:00:00+00:00 -draft = false -weight = 10 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = 'AdiDoks is a Zola theme helping you build modern documentation websites, which is a port of the Hugo theme Doks for Zola.' -toc = true -top = false -+++ - -## Quick Start - -One page summary of how to start a new AdiDoks project. [Quick Start →](../quick-start/) - -## Go further - -Contributing and Help. - -## Contributing - -Find out how to contribute to Doks. [Contributing →](../../contributing/how-to-contribute/) - -## Help - -Get help on Doks. [Help →](../../help/faq/) diff --git a/docs-site/themes/adidoks/content/docs/getting-started/quick-start.md b/docs-site/themes/adidoks/content/docs/getting-started/quick-start.md deleted file mode 100644 index db3a22d41..000000000 --- a/docs-site/themes/adidoks/content/docs/getting-started/quick-start.md +++ /dev/null @@ -1,94 +0,0 @@ -+++ -title = "Quick Start" -description = "One page summary of how to start a new AdiDoks project." -date = 2021-05-01T08:20:00+00:00 -updated = 2021-05-01T08:20:00+00:00 -draft = false -weight = 20 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "One page summary of how to start a new AdiDoks project." -toc = true -top = false -+++ - -## Requirements - -Before using the theme, you need to install the [Zola](https://www.getzola.org/documentation/getting-started/installation/) ≥ 0.15.0. - -## Run the Theme Directly - -```bash -git clone https://github.com/aaranxu/adidoks.git -cd adidoks -zola serve -``` - -Visit `http://127.0.0.1:1111/` in the browser. - -## Installation - -Just earlier we showed you how to run the theme directly. Now we start to -install the theme in an existing site step by step. - -### Step 1: Create a new zola site - -```bash -zola init mysite -``` - -### Step 2: Install AdiDoks - -Download this theme to your themes directory: - -```bash -cd mysite/themes -git clone https://github.com/aaranxu/adidoks.git -``` - -Or install as a submodule: - -```bash -cd mysite -git init # if your project is a git repository already, ignore this command -git submodule add https://github.com/aaranxu/adidoks.git themes/adidoks -``` - -### Step 3: Configuration - -Enable the theme in your `config.toml` in the site derectory: - -```toml -theme = "adidoks" -``` - -Or copy the `config.toml.example` from the theme directory to your project's -root directory: - -```bash -cp themes/adidoks/config.toml.example config.toml -``` - -### Step 4: Add new content - -You can copy the content from the theme directory to your project: - -```bash -cp -r themes/adidoks/content . -``` - -You can modify or add new posts in the `content/blog`, `content/docs` or other -content directories as needed. - -### Step 5: Run the project - -Just run `zola serve` in the root path of the project: - -```bash -zola serve -``` - -AdiDoks will start the Zola development web server accessible by default at -`http://127.0.0.1:1111`. Saved changes will live reload in the browser. diff --git a/docs-site/themes/adidoks/content/docs/help/_index.md b/docs-site/themes/adidoks/content/docs/help/_index.md deleted file mode 100644 index 8cfed4b82..000000000 --- a/docs-site/themes/adidoks/content/docs/help/_index.md +++ /dev/null @@ -1,10 +0,0 @@ -+++ -title = "Help" -description = "Get help on AdiDoks." -date = 2025-05-01T19:00:00+00:00 -updated = 2021-05-01T19:00:00+00:00 -template = "docs/section.html" -sort_by = "weight" -weight = 5 -draft = false -+++ diff --git a/docs-site/themes/adidoks/content/docs/help/faq.md b/docs-site/themes/adidoks/content/docs/help/faq.md deleted file mode 100644 index b00100164..000000000 --- a/docs-site/themes/adidoks/content/docs/help/faq.md +++ /dev/null @@ -1,39 +0,0 @@ -+++ -title = "FAQ" -description = "Answers to frequently asked questions." -date = 2021-05-01T19:30:00+00:00 -updated = 2021-05-01T19:30:00+00:00 -draft = false -weight = 30 -sort_by = "weight" -template = "docs/page.html" - -[extra] -lead = "Answers to frequently asked questions." -toc = true -top = false -+++ - -## What is the AdiDoks? - -AdiDoks is a Zola theme for Documentation's sites, ported by the Hugo Theme -[Doks](https://getdoks.org), which is a pretty nice theme. Thanks a lot to -[*h-enk*](https://github.com/h-enk), the creator of the [Doks](https://getdoks.org). - -## Keyboard shortcuts for search? - -- focus: `/` -- select: `↓` and `↑` -- open: `Enter` -- close: `Esc` - -## Other documentation? - -- [Netlify](https://docs.netlify.com/) -- [Zola](https://www.getzola.org/documentation/getting-started/overview/) - -## Contact the creator? - -Send *Aaran Xu* an E-mail: - -- diff --git a/docs-site/themes/adidoks/content/privacy-policy/_index.md b/docs-site/themes/adidoks/content/privacy-policy/_index.md deleted file mode 100644 index d8050da75..000000000 --- a/docs-site/themes/adidoks/content/privacy-policy/_index.md +++ /dev/null @@ -1,27 +0,0 @@ -+++ -title = "Privacy Policy" -description = "We do not use cookies and we do not collect any personal data." -date = 2021-05-01T08:00:00+00:00 -updated = 2020-05-01T08:00:00+00:00 -draft = false - -[extra] -class = "page single" -+++ - -__TLDR__: We do not use cookies and we do not collect any personal data. - -## Website visitors - -- No personal information is collected. -- No information is stored in the browser. -- No information is shared with, sent to or sold to third-parties. -- No information is shared with advertising companies. -- No information is mined and harvested for personal and behavioral trends. -- No information is monetized. - -## Contact us - -[Contact us](https://github.com/aaranxu/adidoks) if you have any questions. - -Effective Date: _1st May 2021_ diff --git a/docs-site/themes/adidoks/netlify.toml b/docs-site/themes/adidoks/netlify.toml deleted file mode 100644 index 0f91fa9c9..000000000 --- a/docs-site/themes/adidoks/netlify.toml +++ /dev/null @@ -1,9 +0,0 @@ -[build] -publish = "public" -command = "zola build" - -[build.environment] -ZOLA_VERSION = "0.15.0" - -[context.deploy-preview] -command = "zola build --base-url $DEPLOY_PRIME_URL" diff --git a/docs-site/themes/adidoks/sass/_custom.scss b/docs-site/themes/adidoks/sass/_custom.scss deleted file mode 100644 index 312b9d570..000000000 --- a/docs-site/themes/adidoks/sass/_custom.scss +++ /dev/null @@ -1,39 +0,0 @@ -.infobox{ - margin: 1em 0; - padding: 1.4em; - border-radius: 4px; - border: 1px solid; - border-color: rgb(195, 228, 205); - background-color: rgb(240,253,244); - color:rgb(22,101,52 ); -} -.infobox a { - color:rgb(4, 52, 22); - text-decoration: underline; -} - -label { - color: $gray-600; - border-radius: 0.2em; - padding: 0.1em 0.5em; - font-size: 0.9em; - margin: 0 0.1em; - border: 1px solid; - border-color: $gray-600; -} - -label.sidebar { - background-color: $gray-300; - color: $gray-700; - border: none; -} - -body.dark label.sidebar { - background-color: $gray-800; - color: $gray-600; - border: none; -} - -.flairbar { - margin-bottom: 1em; -} diff --git a/docs-site/themes/adidoks/sass/bootstrap/LICENSE b/docs-site/themes/adidoks/sass/bootstrap/LICENSE deleted file mode 100644 index 72dda234e..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011-2021 Twitter, Inc. -Copyright (c) 2011-2021 The Bootstrap Authors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/docs-site/themes/adidoks/sass/bootstrap/README.md b/docs-site/themes/adidoks/sass/bootstrap/README.md deleted file mode 100644 index 6d87cec6f..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/README.md +++ /dev/null @@ -1,239 +0,0 @@ -

- - Bootstrap logo - -

- -

Bootstrap

- -

- Sleek, intuitive, and powerful front-end framework for faster and easier web development. -
- Explore Bootstrap docs » -
-
- Report bug - · - Request feature - · - Themes - · - Blog -

- - -## Bootstrap 4 - -Our default branch is for development of our upcoming Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4. - - -## Table of contents - -- [Quick start](#quick-start) -- [Status](#status) -- [What's included](#whats-included) -- [Bugs and feature requests](#bugs-and-feature-requests) -- [Documentation](#documentation) -- [Contributing](#contributing) -- [Community](#community) -- [Versioning](#versioning) -- [Creators](#creators) -- [Thanks](#thanks) -- [Copyright and license](#copyright-and-license) - - -## Quick start - -Several quick start options are available: - -- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.0.0-beta3.zip) -- Clone the repo: `git clone https://github.com/twbs/bootstrap.git` -- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@next` -- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@next` -- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.0.0-beta3` -- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass` - -Read the [Getting started page](https://getbootstrap.com/docs/5.0/getting-started/introduction/) for information on the framework contents, templates and examples, and more. - - -## Status - -[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/) -[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) -[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap) -[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap) -[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap) -[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap) -[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest) -[![peerDependencies Status](https://img.shields.io/david/peer/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=peer) -[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=dev) -[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main)](https://coveralls.io/github/twbs/bootstrap?branch=main) -[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) -[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) -[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) -[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) -[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229) -[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers) -[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors) - - -## What's included - -Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this: - -```text -bootstrap/ -├── css/ -│ ├── bootstrap-grid.css -│ ├── bootstrap-grid.css.map -│ ├── bootstrap-grid.min.css -│ ├── bootstrap-grid.min.css.map -│ ├── bootstrap-grid.rtl.css -│ ├── bootstrap-grid.rtl.css.map -│ ├── bootstrap-grid.rtl.min.css -│ ├── bootstrap-grid.rtl.min.css.map -│ ├── bootstrap-reboot.css -│ ├── bootstrap-reboot.css.map -│ ├── bootstrap-reboot.min.css -│ ├── bootstrap-reboot.min.css.map -│ ├── bootstrap-reboot.rtl.css -│ ├── bootstrap-reboot.rtl.css.map -│ ├── bootstrap-reboot.rtl.min.css -│ ├── bootstrap-reboot.rtl.min.css.map -│ ├── bootstrap-utilities.css -│ ├── bootstrap-utilities.css.map -│ ├── bootstrap-utilities.min.css -│ ├── bootstrap-utilities.min.css.map -│ ├── bootstrap-utilities.rtl.css -│ ├── bootstrap-utilities.rtl.css.map -│ ├── bootstrap-utilities.rtl.min.css -│ ├── bootstrap-utilities.rtl.min.css.map -│ ├── bootstrap.css -│ ├── bootstrap.css.map -│ ├── bootstrap.min.css -│ ├── bootstrap.min.css.map -│ ├── bootstrap.rtl.css -│ ├── bootstrap.rtl.css.map -│ ├── bootstrap.rtl.min.css -│ └── bootstrap.rtl.min.css.map -└── js/ - ├── bootstrap.bundle.js - ├── bootstrap.bundle.js.map - ├── bootstrap.bundle.min.js - ├── bootstrap.bundle.min.js.map - ├── bootstrap.esm.js - ├── bootstrap.esm.js.map - ├── bootstrap.esm.min.js - ├── bootstrap.esm.min.js.map - ├── bootstrap.js - ├── bootstrap.js.map - ├── bootstrap.min.js - └── bootstrap.min.js.map -``` - -We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/). - - -## Bugs and feature requests - -Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). - - -## Documentation - -Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. - -Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`. - -### Running documentation locally - -1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder). -2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. -3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line. -4. Open `http://localhost:9001/` in your browser, and voilà. - -Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/). - -### Documentation for previous releases - -You can find all our previous releases docs on . - -[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. - - -## Contributing - -Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. - -Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). - -Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . - - -## Community - -Get updates on Bootstrap's development and chat with the project maintainers and community members. - -- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). -- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/). -- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/). -- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. -- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). -- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. - - -## Versioning - -For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible. - -See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release. - - -## Creators - -**Mark Otto** - -- -- - -**Jacob Thornton** - -- -- - - -## Thanks - - - BrowserStack Logo - - -Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers! - - -## Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)] - -[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website) -[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website) -[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website) -[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website) -[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website) -[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website) -[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website) -[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website) -[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website) -[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website) - - -## Backers - -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)] - -[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers) - - -## Copyright and license - -Code and documentation copyright 2011–2021 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css deleted file mode 100644 index cf7c9850d..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css +++ /dev/null @@ -1,4997 +0,0 @@ -/*! - * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - width: 100%; - padding-right: var(--bs-gutter-x, 0.75rem); - padding-left: var(--bs-gutter-x, 0.75rem); - 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; - } -} -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(var(--bs-gutter-y) * -1); - margin-right: calc(var(--bs-gutter-x) / -2); - margin-left: calc(var(--bs-gutter-x) / -2); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) / 2); - padding-left: calc(var(--bs-gutter-x) / 2); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.6666666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.3333333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.6666666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.3333333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.6666666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.3333333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.6666666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.3333333333%; -} - -.offset-2 { - margin-left: 16.6666666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.3333333333%; -} - -.offset-5 { - margin-left: 41.6666666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.3333333333%; -} - -.offset-8 { - margin-left: 66.6666666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.3333333333%; -} - -.offset-11 { - margin-left: 91.6666666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-sm-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-sm-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-sm-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-sm-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-sm-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-sm-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-sm-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-sm-0 { - margin-left: 0; - } - - .offset-sm-1 { - margin-left: 8.3333333333%; - } - - .offset-sm-2 { - margin-left: 16.6666666667%; - } - - .offset-sm-3 { - margin-left: 25%; - } - - .offset-sm-4 { - margin-left: 33.3333333333%; - } - - .offset-sm-5 { - margin-left: 41.6666666667%; - } - - .offset-sm-6 { - margin-left: 50%; - } - - .offset-sm-7 { - margin-left: 58.3333333333%; - } - - .offset-sm-8 { - margin-left: 66.6666666667%; - } - - .offset-sm-9 { - margin-left: 75%; - } - - .offset-sm-10 { - margin-left: 83.3333333333%; - } - - .offset-sm-11 { - margin-left: 91.6666666667%; - } - - .g-sm-0, -.gx-sm-0 { - --bs-gutter-x: 0; - } - - .g-sm-0, -.gy-sm-0 { - --bs-gutter-y: 0; - } - - .g-sm-1, -.gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - - .g-sm-1, -.gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - - .g-sm-2, -.gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - - .g-sm-2, -.gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - - .g-sm-3, -.gx-sm-3 { - --bs-gutter-x: 1rem; - } - - .g-sm-3, -.gy-sm-3 { - --bs-gutter-y: 1rem; - } - - .g-sm-4, -.gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - - .g-sm-4, -.gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - - .g-sm-5, -.gx-sm-5 { - --bs-gutter-x: 3rem; - } - - .g-sm-5, -.gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-md-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-md-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-md-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-md-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-md-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-md-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-md-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-md-0 { - margin-left: 0; - } - - .offset-md-1 { - margin-left: 8.3333333333%; - } - - .offset-md-2 { - margin-left: 16.6666666667%; - } - - .offset-md-3 { - margin-left: 25%; - } - - .offset-md-4 { - margin-left: 33.3333333333%; - } - - .offset-md-5 { - margin-left: 41.6666666667%; - } - - .offset-md-6 { - margin-left: 50%; - } - - .offset-md-7 { - margin-left: 58.3333333333%; - } - - .offset-md-8 { - margin-left: 66.6666666667%; - } - - .offset-md-9 { - margin-left: 75%; - } - - .offset-md-10 { - margin-left: 83.3333333333%; - } - - .offset-md-11 { - margin-left: 91.6666666667%; - } - - .g-md-0, -.gx-md-0 { - --bs-gutter-x: 0; - } - - .g-md-0, -.gy-md-0 { - --bs-gutter-y: 0; - } - - .g-md-1, -.gx-md-1 { - --bs-gutter-x: 0.25rem; - } - - .g-md-1, -.gy-md-1 { - --bs-gutter-y: 0.25rem; - } - - .g-md-2, -.gx-md-2 { - --bs-gutter-x: 0.5rem; - } - - .g-md-2, -.gy-md-2 { - --bs-gutter-y: 0.5rem; - } - - .g-md-3, -.gx-md-3 { - --bs-gutter-x: 1rem; - } - - .g-md-3, -.gy-md-3 { - --bs-gutter-y: 1rem; - } - - .g-md-4, -.gx-md-4 { - --bs-gutter-x: 1.5rem; - } - - .g-md-4, -.gy-md-4 { - --bs-gutter-y: 1.5rem; - } - - .g-md-5, -.gx-md-5 { - --bs-gutter-x: 3rem; - } - - .g-md-5, -.gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-lg-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-lg-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-lg-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-lg-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-lg-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-lg-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-lg-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-lg-0 { - margin-left: 0; - } - - .offset-lg-1 { - margin-left: 8.3333333333%; - } - - .offset-lg-2 { - margin-left: 16.6666666667%; - } - - .offset-lg-3 { - margin-left: 25%; - } - - .offset-lg-4 { - margin-left: 33.3333333333%; - } - - .offset-lg-5 { - margin-left: 41.6666666667%; - } - - .offset-lg-6 { - margin-left: 50%; - } - - .offset-lg-7 { - margin-left: 58.3333333333%; - } - - .offset-lg-8 { - margin-left: 66.6666666667%; - } - - .offset-lg-9 { - margin-left: 75%; - } - - .offset-lg-10 { - margin-left: 83.3333333333%; - } - - .offset-lg-11 { - margin-left: 91.6666666667%; - } - - .g-lg-0, -.gx-lg-0 { - --bs-gutter-x: 0; - } - - .g-lg-0, -.gy-lg-0 { - --bs-gutter-y: 0; - } - - .g-lg-1, -.gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - - .g-lg-1, -.gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - - .g-lg-2, -.gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - - .g-lg-2, -.gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - - .g-lg-3, -.gx-lg-3 { - --bs-gutter-x: 1rem; - } - - .g-lg-3, -.gy-lg-3 { - --bs-gutter-y: 1rem; - } - - .g-lg-4, -.gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - - .g-lg-4, -.gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - - .g-lg-5, -.gx-lg-5 { - --bs-gutter-x: 3rem; - } - - .g-lg-5, -.gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-xl-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xl-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-xl-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xl-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-xl-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xl-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-xl-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xl-0 { - margin-left: 0; - } - - .offset-xl-1 { - margin-left: 8.3333333333%; - } - - .offset-xl-2 { - margin-left: 16.6666666667%; - } - - .offset-xl-3 { - margin-left: 25%; - } - - .offset-xl-4 { - margin-left: 33.3333333333%; - } - - .offset-xl-5 { - margin-left: 41.6666666667%; - } - - .offset-xl-6 { - margin-left: 50%; - } - - .offset-xl-7 { - margin-left: 58.3333333333%; - } - - .offset-xl-8 { - margin-left: 66.6666666667%; - } - - .offset-xl-9 { - margin-left: 75%; - } - - .offset-xl-10 { - margin-left: 83.3333333333%; - } - - .offset-xl-11 { - margin-left: 91.6666666667%; - } - - .g-xl-0, -.gx-xl-0 { - --bs-gutter-x: 0; - } - - .g-xl-0, -.gy-xl-0 { - --bs-gutter-y: 0; - } - - .g-xl-1, -.gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xl-1, -.gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xl-2, -.gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xl-2, -.gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xl-3, -.gx-xl-3 { - --bs-gutter-x: 1rem; - } - - .g-xl-3, -.gy-xl-3 { - --bs-gutter-y: 1rem; - } - - .g-xl-4, -.gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xl-4, -.gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xl-5, -.gx-xl-5 { - --bs-gutter-x: 3rem; - } - - .g-xl-5, -.gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-xxl-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xxl-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-xxl-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xxl-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-xxl-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xxl-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-xxl-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xxl-0 { - margin-left: 0; - } - - .offset-xxl-1 { - margin-left: 8.3333333333%; - } - - .offset-xxl-2 { - margin-left: 16.6666666667%; - } - - .offset-xxl-3 { - margin-left: 25%; - } - - .offset-xxl-4 { - margin-left: 33.3333333333%; - } - - .offset-xxl-5 { - margin-left: 41.6666666667%; - } - - .offset-xxl-6 { - margin-left: 50%; - } - - .offset-xxl-7 { - margin-left: 58.3333333333%; - } - - .offset-xxl-8 { - margin-left: 66.6666666667%; - } - - .offset-xxl-9 { - margin-left: 75%; - } - - .offset-xxl-10 { - margin-left: 83.3333333333%; - } - - .offset-xxl-11 { - margin-left: 91.6666666667%; - } - - .g-xxl-0, -.gx-xxl-0 { - --bs-gutter-x: 0; - } - - .g-xxl-0, -.gy-xxl-0 { - --bs-gutter-y: 0; - } - - .g-xxl-1, -.gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xxl-1, -.gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xxl-2, -.gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xxl-2, -.gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xxl-3, -.gx-xxl-3 { - --bs-gutter-x: 1rem; - } - - .g-xxl-3, -.gy-xxl-3 { - --bs-gutter-y: 1rem; - } - - .g-xxl-4, -.gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xxl-4, -.gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xxl-5, -.gx-xxl-5 { - --bs-gutter-x: 3rem; - } - - .g-xxl-5, -.gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: 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; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -@media (min-width: 576px) { - .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-table { - display: table !important; - } - - .d-sm-table-row { - display: table-row !important; - } - - .d-sm-table-cell { - display: table-cell !important; - } - - .d-sm-flex { - display: flex !important; - } - - .d-sm-inline-flex { - display: inline-flex !important; - } - - .d-sm-none { - display: none !important; - } - - .flex-sm-fill { - flex: 1 1 auto !important; - } - - .flex-sm-row { - flex-direction: row !important; - } - - .flex-sm-column { - flex-direction: column !important; - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-sm-wrap { - flex-wrap: wrap !important; - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-sm-start { - justify-content: flex-start !important; - } - - .justify-content-sm-end { - justify-content: flex-end !important; - } - - .justify-content-sm-center { - justify-content: center !important; - } - - .justify-content-sm-between { - justify-content: space-between !important; - } - - .justify-content-sm-around { - justify-content: space-around !important; - } - - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - - .align-items-sm-start { - align-items: flex-start !important; - } - - .align-items-sm-end { - align-items: flex-end !important; - } - - .align-items-sm-center { - align-items: center !important; - } - - .align-items-sm-baseline { - align-items: baseline !important; - } - - .align-items-sm-stretch { - align-items: stretch !important; - } - - .align-content-sm-start { - align-content: flex-start !important; - } - - .align-content-sm-end { - align-content: flex-end !important; - } - - .align-content-sm-center { - align-content: center !important; - } - - .align-content-sm-between { - align-content: space-between !important; - } - - .align-content-sm-around { - align-content: space-around !important; - } - - .align-content-sm-stretch { - align-content: stretch !important; - } - - .align-self-sm-auto { - align-self: auto !important; - } - - .align-self-sm-start { - align-self: flex-start !important; - } - - .align-self-sm-end { - align-self: flex-end !important; - } - - .align-self-sm-center { - align-self: center !important; - } - - .align-self-sm-baseline { - align-self: baseline !important; - } - - .align-self-sm-stretch { - align-self: stretch !important; - } - - .order-sm-first { - order: -1 !important; - } - - .order-sm-0 { - order: 0 !important; - } - - .order-sm-1 { - order: 1 !important; - } - - .order-sm-2 { - order: 2 !important; - } - - .order-sm-3 { - order: 3 !important; - } - - .order-sm-4 { - order: 4 !important; - } - - .order-sm-5 { - order: 5 !important; - } - - .order-sm-last { - order: 6 !important; - } - - .m-sm-0 { - margin: 0 !important; - } - - .m-sm-1 { - margin: 0.25rem !important; - } - - .m-sm-2 { - margin: 0.5rem !important; - } - - .m-sm-3 { - margin: 1rem !important; - } - - .m-sm-4 { - margin: 1.5rem !important; - } - - .m-sm-5 { - margin: 3rem !important; - } - - .m-sm-auto { - margin: auto !important; - } - - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-sm-0 { - margin-top: 0 !important; - } - - .mt-sm-1 { - margin-top: 0.25rem !important; - } - - .mt-sm-2 { - margin-top: 0.5rem !important; - } - - .mt-sm-3 { - margin-top: 1rem !important; - } - - .mt-sm-4 { - margin-top: 1.5rem !important; - } - - .mt-sm-5 { - margin-top: 3rem !important; - } - - .mt-sm-auto { - margin-top: auto !important; - } - - .me-sm-0 { - margin-right: 0 !important; - } - - .me-sm-1 { - margin-right: 0.25rem !important; - } - - .me-sm-2 { - margin-right: 0.5rem !important; - } - - .me-sm-3 { - margin-right: 1rem !important; - } - - .me-sm-4 { - margin-right: 1.5rem !important; - } - - .me-sm-5 { - margin-right: 3rem !important; - } - - .me-sm-auto { - margin-right: auto !important; - } - - .mb-sm-0 { - margin-bottom: 0 !important; - } - - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - - .mb-sm-3 { - margin-bottom: 1rem !important; - } - - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - - .mb-sm-5 { - margin-bottom: 3rem !important; - } - - .mb-sm-auto { - margin-bottom: auto !important; - } - - .ms-sm-0 { - margin-left: 0 !important; - } - - .ms-sm-1 { - margin-left: 0.25rem !important; - } - - .ms-sm-2 { - margin-left: 0.5rem !important; - } - - .ms-sm-3 { - margin-left: 1rem !important; - } - - .ms-sm-4 { - margin-left: 1.5rem !important; - } - - .ms-sm-5 { - margin-left: 3rem !important; - } - - .ms-sm-auto { - margin-left: auto !important; - } - - .p-sm-0 { - padding: 0 !important; - } - - .p-sm-1 { - padding: 0.25rem !important; - } - - .p-sm-2 { - padding: 0.5rem !important; - } - - .p-sm-3 { - padding: 1rem !important; - } - - .p-sm-4 { - padding: 1.5rem !important; - } - - .p-sm-5 { - padding: 3rem !important; - } - - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-sm-0 { - padding-top: 0 !important; - } - - .pt-sm-1 { - padding-top: 0.25rem !important; - } - - .pt-sm-2 { - padding-top: 0.5rem !important; - } - - .pt-sm-3 { - padding-top: 1rem !important; - } - - .pt-sm-4 { - padding-top: 1.5rem !important; - } - - .pt-sm-5 { - padding-top: 3rem !important; - } - - .pe-sm-0 { - padding-right: 0 !important; - } - - .pe-sm-1 { - padding-right: 0.25rem !important; - } - - .pe-sm-2 { - padding-right: 0.5rem !important; - } - - .pe-sm-3 { - padding-right: 1rem !important; - } - - .pe-sm-4 { - padding-right: 1.5rem !important; - } - - .pe-sm-5 { - padding-right: 3rem !important; - } - - .pb-sm-0 { - padding-bottom: 0 !important; - } - - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - - .pb-sm-3 { - padding-bottom: 1rem !important; - } - - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - - .pb-sm-5 { - padding-bottom: 3rem !important; - } - - .ps-sm-0 { - padding-left: 0 !important; - } - - .ps-sm-1 { - padding-left: 0.25rem !important; - } - - .ps-sm-2 { - padding-left: 0.5rem !important; - } - - .ps-sm-3 { - padding-left: 1rem !important; - } - - .ps-sm-4 { - padding-left: 1.5rem !important; - } - - .ps-sm-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 768px) { - .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-table { - display: table !important; - } - - .d-md-table-row { - display: table-row !important; - } - - .d-md-table-cell { - display: table-cell !important; - } - - .d-md-flex { - display: flex !important; - } - - .d-md-inline-flex { - display: inline-flex !important; - } - - .d-md-none { - display: none !important; - } - - .flex-md-fill { - flex: 1 1 auto !important; - } - - .flex-md-row { - flex-direction: row !important; - } - - .flex-md-column { - flex-direction: column !important; - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-md-grow-0 { - flex-grow: 0 !important; - } - - .flex-md-grow-1 { - flex-grow: 1 !important; - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-md-wrap { - flex-wrap: wrap !important; - } - - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-md-start { - justify-content: flex-start !important; - } - - .justify-content-md-end { - justify-content: flex-end !important; - } - - .justify-content-md-center { - justify-content: center !important; - } - - .justify-content-md-between { - justify-content: space-between !important; - } - - .justify-content-md-around { - justify-content: space-around !important; - } - - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - - .align-items-md-start { - align-items: flex-start !important; - } - - .align-items-md-end { - align-items: flex-end !important; - } - - .align-items-md-center { - align-items: center !important; - } - - .align-items-md-baseline { - align-items: baseline !important; - } - - .align-items-md-stretch { - align-items: stretch !important; - } - - .align-content-md-start { - align-content: flex-start !important; - } - - .align-content-md-end { - align-content: flex-end !important; - } - - .align-content-md-center { - align-content: center !important; - } - - .align-content-md-between { - align-content: space-between !important; - } - - .align-content-md-around { - align-content: space-around !important; - } - - .align-content-md-stretch { - align-content: stretch !important; - } - - .align-self-md-auto { - align-self: auto !important; - } - - .align-self-md-start { - align-self: flex-start !important; - } - - .align-self-md-end { - align-self: flex-end !important; - } - - .align-self-md-center { - align-self: center !important; - } - - .align-self-md-baseline { - align-self: baseline !important; - } - - .align-self-md-stretch { - align-self: stretch !important; - } - - .order-md-first { - order: -1 !important; - } - - .order-md-0 { - order: 0 !important; - } - - .order-md-1 { - order: 1 !important; - } - - .order-md-2 { - order: 2 !important; - } - - .order-md-3 { - order: 3 !important; - } - - .order-md-4 { - order: 4 !important; - } - - .order-md-5 { - order: 5 !important; - } - - .order-md-last { - order: 6 !important; - } - - .m-md-0 { - margin: 0 !important; - } - - .m-md-1 { - margin: 0.25rem !important; - } - - .m-md-2 { - margin: 0.5rem !important; - } - - .m-md-3 { - margin: 1rem !important; - } - - .m-md-4 { - margin: 1.5rem !important; - } - - .m-md-5 { - margin: 3rem !important; - } - - .m-md-auto { - margin: auto !important; - } - - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-md-0 { - margin-top: 0 !important; - } - - .mt-md-1 { - margin-top: 0.25rem !important; - } - - .mt-md-2 { - margin-top: 0.5rem !important; - } - - .mt-md-3 { - margin-top: 1rem !important; - } - - .mt-md-4 { - margin-top: 1.5rem !important; - } - - .mt-md-5 { - margin-top: 3rem !important; - } - - .mt-md-auto { - margin-top: auto !important; - } - - .me-md-0 { - margin-right: 0 !important; - } - - .me-md-1 { - margin-right: 0.25rem !important; - } - - .me-md-2 { - margin-right: 0.5rem !important; - } - - .me-md-3 { - margin-right: 1rem !important; - } - - .me-md-4 { - margin-right: 1.5rem !important; - } - - .me-md-5 { - margin-right: 3rem !important; - } - - .me-md-auto { - margin-right: auto !important; - } - - .mb-md-0 { - margin-bottom: 0 !important; - } - - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - - .mb-md-3 { - margin-bottom: 1rem !important; - } - - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - - .mb-md-5 { - margin-bottom: 3rem !important; - } - - .mb-md-auto { - margin-bottom: auto !important; - } - - .ms-md-0 { - margin-left: 0 !important; - } - - .ms-md-1 { - margin-left: 0.25rem !important; - } - - .ms-md-2 { - margin-left: 0.5rem !important; - } - - .ms-md-3 { - margin-left: 1rem !important; - } - - .ms-md-4 { - margin-left: 1.5rem !important; - } - - .ms-md-5 { - margin-left: 3rem !important; - } - - .ms-md-auto { - margin-left: auto !important; - } - - .p-md-0 { - padding: 0 !important; - } - - .p-md-1 { - padding: 0.25rem !important; - } - - .p-md-2 { - padding: 0.5rem !important; - } - - .p-md-3 { - padding: 1rem !important; - } - - .p-md-4 { - padding: 1.5rem !important; - } - - .p-md-5 { - padding: 3rem !important; - } - - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-md-0 { - padding-top: 0 !important; - } - - .pt-md-1 { - padding-top: 0.25rem !important; - } - - .pt-md-2 { - padding-top: 0.5rem !important; - } - - .pt-md-3 { - padding-top: 1rem !important; - } - - .pt-md-4 { - padding-top: 1.5rem !important; - } - - .pt-md-5 { - padding-top: 3rem !important; - } - - .pe-md-0 { - padding-right: 0 !important; - } - - .pe-md-1 { - padding-right: 0.25rem !important; - } - - .pe-md-2 { - padding-right: 0.5rem !important; - } - - .pe-md-3 { - padding-right: 1rem !important; - } - - .pe-md-4 { - padding-right: 1.5rem !important; - } - - .pe-md-5 { - padding-right: 3rem !important; - } - - .pb-md-0 { - padding-bottom: 0 !important; - } - - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - - .pb-md-3 { - padding-bottom: 1rem !important; - } - - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - - .pb-md-5 { - padding-bottom: 3rem !important; - } - - .ps-md-0 { - padding-left: 0 !important; - } - - .ps-md-1 { - padding-left: 0.25rem !important; - } - - .ps-md-2 { - padding-left: 0.5rem !important; - } - - .ps-md-3 { - padding-left: 1rem !important; - } - - .ps-md-4 { - padding-left: 1.5rem !important; - } - - .ps-md-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 992px) { - .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-table { - display: table !important; - } - - .d-lg-table-row { - display: table-row !important; - } - - .d-lg-table-cell { - display: table-cell !important; - } - - .d-lg-flex { - display: flex !important; - } - - .d-lg-inline-flex { - display: inline-flex !important; - } - - .d-lg-none { - display: none !important; - } - - .flex-lg-fill { - flex: 1 1 auto !important; - } - - .flex-lg-row { - flex-direction: row !important; - } - - .flex-lg-column { - flex-direction: column !important; - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-lg-wrap { - flex-wrap: wrap !important; - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-lg-start { - justify-content: flex-start !important; - } - - .justify-content-lg-end { - justify-content: flex-end !important; - } - - .justify-content-lg-center { - justify-content: center !important; - } - - .justify-content-lg-between { - justify-content: space-between !important; - } - - .justify-content-lg-around { - justify-content: space-around !important; - } - - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - - .align-items-lg-start { - align-items: flex-start !important; - } - - .align-items-lg-end { - align-items: flex-end !important; - } - - .align-items-lg-center { - align-items: center !important; - } - - .align-items-lg-baseline { - align-items: baseline !important; - } - - .align-items-lg-stretch { - align-items: stretch !important; - } - - .align-content-lg-start { - align-content: flex-start !important; - } - - .align-content-lg-end { - align-content: flex-end !important; - } - - .align-content-lg-center { - align-content: center !important; - } - - .align-content-lg-between { - align-content: space-between !important; - } - - .align-content-lg-around { - align-content: space-around !important; - } - - .align-content-lg-stretch { - align-content: stretch !important; - } - - .align-self-lg-auto { - align-self: auto !important; - } - - .align-self-lg-start { - align-self: flex-start !important; - } - - .align-self-lg-end { - align-self: flex-end !important; - } - - .align-self-lg-center { - align-self: center !important; - } - - .align-self-lg-baseline { - align-self: baseline !important; - } - - .align-self-lg-stretch { - align-self: stretch !important; - } - - .order-lg-first { - order: -1 !important; - } - - .order-lg-0 { - order: 0 !important; - } - - .order-lg-1 { - order: 1 !important; - } - - .order-lg-2 { - order: 2 !important; - } - - .order-lg-3 { - order: 3 !important; - } - - .order-lg-4 { - order: 4 !important; - } - - .order-lg-5 { - order: 5 !important; - } - - .order-lg-last { - order: 6 !important; - } - - .m-lg-0 { - margin: 0 !important; - } - - .m-lg-1 { - margin: 0.25rem !important; - } - - .m-lg-2 { - margin: 0.5rem !important; - } - - .m-lg-3 { - margin: 1rem !important; - } - - .m-lg-4 { - margin: 1.5rem !important; - } - - .m-lg-5 { - margin: 3rem !important; - } - - .m-lg-auto { - margin: auto !important; - } - - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-lg-0 { - margin-top: 0 !important; - } - - .mt-lg-1 { - margin-top: 0.25rem !important; - } - - .mt-lg-2 { - margin-top: 0.5rem !important; - } - - .mt-lg-3 { - margin-top: 1rem !important; - } - - .mt-lg-4 { - margin-top: 1.5rem !important; - } - - .mt-lg-5 { - margin-top: 3rem !important; - } - - .mt-lg-auto { - margin-top: auto !important; - } - - .me-lg-0 { - margin-right: 0 !important; - } - - .me-lg-1 { - margin-right: 0.25rem !important; - } - - .me-lg-2 { - margin-right: 0.5rem !important; - } - - .me-lg-3 { - margin-right: 1rem !important; - } - - .me-lg-4 { - margin-right: 1.5rem !important; - } - - .me-lg-5 { - margin-right: 3rem !important; - } - - .me-lg-auto { - margin-right: auto !important; - } - - .mb-lg-0 { - margin-bottom: 0 !important; - } - - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - - .mb-lg-3 { - margin-bottom: 1rem !important; - } - - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - - .mb-lg-5 { - margin-bottom: 3rem !important; - } - - .mb-lg-auto { - margin-bottom: auto !important; - } - - .ms-lg-0 { - margin-left: 0 !important; - } - - .ms-lg-1 { - margin-left: 0.25rem !important; - } - - .ms-lg-2 { - margin-left: 0.5rem !important; - } - - .ms-lg-3 { - margin-left: 1rem !important; - } - - .ms-lg-4 { - margin-left: 1.5rem !important; - } - - .ms-lg-5 { - margin-left: 3rem !important; - } - - .ms-lg-auto { - margin-left: auto !important; - } - - .p-lg-0 { - padding: 0 !important; - } - - .p-lg-1 { - padding: 0.25rem !important; - } - - .p-lg-2 { - padding: 0.5rem !important; - } - - .p-lg-3 { - padding: 1rem !important; - } - - .p-lg-4 { - padding: 1.5rem !important; - } - - .p-lg-5 { - padding: 3rem !important; - } - - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-lg-0 { - padding-top: 0 !important; - } - - .pt-lg-1 { - padding-top: 0.25rem !important; - } - - .pt-lg-2 { - padding-top: 0.5rem !important; - } - - .pt-lg-3 { - padding-top: 1rem !important; - } - - .pt-lg-4 { - padding-top: 1.5rem !important; - } - - .pt-lg-5 { - padding-top: 3rem !important; - } - - .pe-lg-0 { - padding-right: 0 !important; - } - - .pe-lg-1 { - padding-right: 0.25rem !important; - } - - .pe-lg-2 { - padding-right: 0.5rem !important; - } - - .pe-lg-3 { - padding-right: 1rem !important; - } - - .pe-lg-4 { - padding-right: 1.5rem !important; - } - - .pe-lg-5 { - padding-right: 3rem !important; - } - - .pb-lg-0 { - padding-bottom: 0 !important; - } - - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - - .pb-lg-3 { - padding-bottom: 1rem !important; - } - - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - - .pb-lg-5 { - padding-bottom: 3rem !important; - } - - .ps-lg-0 { - padding-left: 0 !important; - } - - .ps-lg-1 { - padding-left: 0.25rem !important; - } - - .ps-lg-2 { - padding-left: 0.5rem !important; - } - - .ps-lg-3 { - padding-left: 1rem !important; - } - - .ps-lg-4 { - padding-left: 1.5rem !important; - } - - .ps-lg-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1200px) { - .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-table { - display: table !important; - } - - .d-xl-table-row { - display: table-row !important; - } - - .d-xl-table-cell { - display: table-cell !important; - } - - .d-xl-flex { - display: flex !important; - } - - .d-xl-inline-flex { - display: inline-flex !important; - } - - .d-xl-none { - display: none !important; - } - - .flex-xl-fill { - flex: 1 1 auto !important; - } - - .flex-xl-row { - flex-direction: row !important; - } - - .flex-xl-column { - flex-direction: column !important; - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xl-wrap { - flex-wrap: wrap !important; - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-xl-start { - justify-content: flex-start !important; - } - - .justify-content-xl-end { - justify-content: flex-end !important; - } - - .justify-content-xl-center { - justify-content: center !important; - } - - .justify-content-xl-between { - justify-content: space-between !important; - } - - .justify-content-xl-around { - justify-content: space-around !important; - } - - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xl-start { - align-items: flex-start !important; - } - - .align-items-xl-end { - align-items: flex-end !important; - } - - .align-items-xl-center { - align-items: center !important; - } - - .align-items-xl-baseline { - align-items: baseline !important; - } - - .align-items-xl-stretch { - align-items: stretch !important; - } - - .align-content-xl-start { - align-content: flex-start !important; - } - - .align-content-xl-end { - align-content: flex-end !important; - } - - .align-content-xl-center { - align-content: center !important; - } - - .align-content-xl-between { - align-content: space-between !important; - } - - .align-content-xl-around { - align-content: space-around !important; - } - - .align-content-xl-stretch { - align-content: stretch !important; - } - - .align-self-xl-auto { - align-self: auto !important; - } - - .align-self-xl-start { - align-self: flex-start !important; - } - - .align-self-xl-end { - align-self: flex-end !important; - } - - .align-self-xl-center { - align-self: center !important; - } - - .align-self-xl-baseline { - align-self: baseline !important; - } - - .align-self-xl-stretch { - align-self: stretch !important; - } - - .order-xl-first { - order: -1 !important; - } - - .order-xl-0 { - order: 0 !important; - } - - .order-xl-1 { - order: 1 !important; - } - - .order-xl-2 { - order: 2 !important; - } - - .order-xl-3 { - order: 3 !important; - } - - .order-xl-4 { - order: 4 !important; - } - - .order-xl-5 { - order: 5 !important; - } - - .order-xl-last { - order: 6 !important; - } - - .m-xl-0 { - margin: 0 !important; - } - - .m-xl-1 { - margin: 0.25rem !important; - } - - .m-xl-2 { - margin: 0.5rem !important; - } - - .m-xl-3 { - margin: 1rem !important; - } - - .m-xl-4 { - margin: 1.5rem !important; - } - - .m-xl-5 { - margin: 3rem !important; - } - - .m-xl-auto { - margin: auto !important; - } - - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xl-0 { - margin-top: 0 !important; - } - - .mt-xl-1 { - margin-top: 0.25rem !important; - } - - .mt-xl-2 { - margin-top: 0.5rem !important; - } - - .mt-xl-3 { - margin-top: 1rem !important; - } - - .mt-xl-4 { - margin-top: 1.5rem !important; - } - - .mt-xl-5 { - margin-top: 3rem !important; - } - - .mt-xl-auto { - margin-top: auto !important; - } - - .me-xl-0 { - margin-right: 0 !important; - } - - .me-xl-1 { - margin-right: 0.25rem !important; - } - - .me-xl-2 { - margin-right: 0.5rem !important; - } - - .me-xl-3 { - margin-right: 1rem !important; - } - - .me-xl-4 { - margin-right: 1.5rem !important; - } - - .me-xl-5 { - margin-right: 3rem !important; - } - - .me-xl-auto { - margin-right: auto !important; - } - - .mb-xl-0 { - margin-bottom: 0 !important; - } - - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - - .mb-xl-3 { - margin-bottom: 1rem !important; - } - - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - - .mb-xl-5 { - margin-bottom: 3rem !important; - } - - .mb-xl-auto { - margin-bottom: auto !important; - } - - .ms-xl-0 { - margin-left: 0 !important; - } - - .ms-xl-1 { - margin-left: 0.25rem !important; - } - - .ms-xl-2 { - margin-left: 0.5rem !important; - } - - .ms-xl-3 { - margin-left: 1rem !important; - } - - .ms-xl-4 { - margin-left: 1.5rem !important; - } - - .ms-xl-5 { - margin-left: 3rem !important; - } - - .ms-xl-auto { - margin-left: auto !important; - } - - .p-xl-0 { - padding: 0 !important; - } - - .p-xl-1 { - padding: 0.25rem !important; - } - - .p-xl-2 { - padding: 0.5rem !important; - } - - .p-xl-3 { - padding: 1rem !important; - } - - .p-xl-4 { - padding: 1.5rem !important; - } - - .p-xl-5 { - padding: 3rem !important; - } - - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xl-0 { - padding-top: 0 !important; - } - - .pt-xl-1 { - padding-top: 0.25rem !important; - } - - .pt-xl-2 { - padding-top: 0.5rem !important; - } - - .pt-xl-3 { - padding-top: 1rem !important; - } - - .pt-xl-4 { - padding-top: 1.5rem !important; - } - - .pt-xl-5 { - padding-top: 3rem !important; - } - - .pe-xl-0 { - padding-right: 0 !important; - } - - .pe-xl-1 { - padding-right: 0.25rem !important; - } - - .pe-xl-2 { - padding-right: 0.5rem !important; - } - - .pe-xl-3 { - padding-right: 1rem !important; - } - - .pe-xl-4 { - padding-right: 1.5rem !important; - } - - .pe-xl-5 { - padding-right: 3rem !important; - } - - .pb-xl-0 { - padding-bottom: 0 !important; - } - - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xl-3 { - padding-bottom: 1rem !important; - } - - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xl-5 { - padding-bottom: 3rem !important; - } - - .ps-xl-0 { - padding-left: 0 !important; - } - - .ps-xl-1 { - padding-left: 0.25rem !important; - } - - .ps-xl-2 { - padding-left: 0.5rem !important; - } - - .ps-xl-3 { - padding-left: 1rem !important; - } - - .ps-xl-4 { - padding-left: 1.5rem !important; - } - - .ps-xl-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1400px) { - .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-table { - display: table !important; - } - - .d-xxl-table-row { - display: table-row !important; - } - - .d-xxl-table-cell { - display: table-cell !important; - } - - .d-xxl-flex { - display: flex !important; - } - - .d-xxl-inline-flex { - display: inline-flex !important; - } - - .d-xxl-none { - display: none !important; - } - - .flex-xxl-fill { - flex: 1 1 auto !important; - } - - .flex-xxl-row { - flex-direction: row !important; - } - - .flex-xxl-column { - flex-direction: column !important; - } - - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-xxl-start { - justify-content: flex-start !important; - } - - .justify-content-xxl-end { - justify-content: flex-end !important; - } - - .justify-content-xxl-center { - justify-content: center !important; - } - - .justify-content-xxl-between { - justify-content: space-between !important; - } - - .justify-content-xxl-around { - justify-content: space-around !important; - } - - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xxl-start { - align-items: flex-start !important; - } - - .align-items-xxl-end { - align-items: flex-end !important; - } - - .align-items-xxl-center { - align-items: center !important; - } - - .align-items-xxl-baseline { - align-items: baseline !important; - } - - .align-items-xxl-stretch { - align-items: stretch !important; - } - - .align-content-xxl-start { - align-content: flex-start !important; - } - - .align-content-xxl-end { - align-content: flex-end !important; - } - - .align-content-xxl-center { - align-content: center !important; - } - - .align-content-xxl-between { - align-content: space-between !important; - } - - .align-content-xxl-around { - align-content: space-around !important; - } - - .align-content-xxl-stretch { - align-content: stretch !important; - } - - .align-self-xxl-auto { - align-self: auto !important; - } - - .align-self-xxl-start { - align-self: flex-start !important; - } - - .align-self-xxl-end { - align-self: flex-end !important; - } - - .align-self-xxl-center { - align-self: center !important; - } - - .align-self-xxl-baseline { - align-self: baseline !important; - } - - .align-self-xxl-stretch { - align-self: stretch !important; - } - - .order-xxl-first { - order: -1 !important; - } - - .order-xxl-0 { - order: 0 !important; - } - - .order-xxl-1 { - order: 1 !important; - } - - .order-xxl-2 { - order: 2 !important; - } - - .order-xxl-3 { - order: 3 !important; - } - - .order-xxl-4 { - order: 4 !important; - } - - .order-xxl-5 { - order: 5 !important; - } - - .order-xxl-last { - order: 6 !important; - } - - .m-xxl-0 { - margin: 0 !important; - } - - .m-xxl-1 { - margin: 0.25rem !important; - } - - .m-xxl-2 { - margin: 0.5rem !important; - } - - .m-xxl-3 { - margin: 1rem !important; - } - - .m-xxl-4 { - margin: 1.5rem !important; - } - - .m-xxl-5 { - margin: 3rem !important; - } - - .m-xxl-auto { - margin: auto !important; - } - - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xxl-0 { - margin-top: 0 !important; - } - - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - - .mt-xxl-3 { - margin-top: 1rem !important; - } - - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - - .mt-xxl-5 { - margin-top: 3rem !important; - } - - .mt-xxl-auto { - margin-top: auto !important; - } - - .me-xxl-0 { - margin-right: 0 !important; - } - - .me-xxl-1 { - margin-right: 0.25rem !important; - } - - .me-xxl-2 { - margin-right: 0.5rem !important; - } - - .me-xxl-3 { - margin-right: 1rem !important; - } - - .me-xxl-4 { - margin-right: 1.5rem !important; - } - - .me-xxl-5 { - margin-right: 3rem !important; - } - - .me-xxl-auto { - margin-right: auto !important; - } - - .mb-xxl-0 { - margin-bottom: 0 !important; - } - - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - - .mb-xxl-auto { - margin-bottom: auto !important; - } - - .ms-xxl-0 { - margin-left: 0 !important; - } - - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - - .ms-xxl-3 { - margin-left: 1rem !important; - } - - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - - .ms-xxl-5 { - margin-left: 3rem !important; - } - - .ms-xxl-auto { - margin-left: auto !important; - } - - .p-xxl-0 { - padding: 0 !important; - } - - .p-xxl-1 { - padding: 0.25rem !important; - } - - .p-xxl-2 { - padding: 0.5rem !important; - } - - .p-xxl-3 { - padding: 1rem !important; - } - - .p-xxl-4 { - padding: 1.5rem !important; - } - - .p-xxl-5 { - padding: 3rem !important; - } - - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xxl-0 { - padding-top: 0 !important; - } - - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - - .pt-xxl-3 { - padding-top: 1rem !important; - } - - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - - .pt-xxl-5 { - padding-top: 3rem !important; - } - - .pe-xxl-0 { - padding-right: 0 !important; - } - - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - - .pe-xxl-3 { - padding-right: 1rem !important; - } - - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - - .pe-xxl-5 { - padding-right: 3rem !important; - } - - .pb-xxl-0 { - padding-bottom: 0 !important; - } - - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - - .ps-xxl-0 { - padding-left: 0 !important; - } - - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - - .ps-xxl-3 { - padding-left: 1rem !important; - } - - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - - .ps-xxl-5 { - padding-left: 3rem !important; - } -} -@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-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; - } -} - -/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css.map b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css.map deleted file mode 100644 index 627711286..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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AA;EAAA,+BAAA;AL8vDV;;AKhwDM;EAEI,yBAAA;ALkwDV;;AKpwDM;EAEI,+BAAA;ALswDV;;AKxwDM;EAEI,8BAAA;AL0wDV;;AK5wDM;EAEI,4BAAA;AL8wDV;;AKhxDM;EAEI,8BAAA;ALkxDV;;AKpxDM;EAEI,4BAAA;ALsxDV;;AKxxDM;EAEI,2BAAA;AL0xDV;;AK5xDM;EAEI,iCAAA;AL8xDV;;AKhyDM;EAEI,gCAAA;ALkyDV;;AKpyDM;EAEI,8BAAA;ALsyDV;;AKxyDM;EAEI,gCAAA;AL0yDV;;AK5yDM;EAEI,8BAAA;AL8yDV;;AKhzDM;EAEI,4BAAA;ALkzDV;;AKpzDM;EAEI,kCAAA;ALszDV;;AKxzDM;EAEI,iCAAA;AL0zDV;;AK5zDM;EAEI,+BAAA;AL8zDV;;AKh0DM;EAEI,iCAAA;ALk0DV;;AKp0DM;EAEI,+BAAA;ALs0DV;;AKx0DM;EAEI,0BAAA;AL00DV;;AK50DM;EAEI,gCAAA;AL80DV;;AKh1DM;EAEI,+BAAA;ALk1DV;;AKp1DM;EAEI,6BAAA;ALs1DV;;AKx1DM;EAEI,+BAAA;AL01DV;;AK51DM;EAEI,6BAAA;AL81DV;;ACl1DI;EIdE;IAEI,0BAAA;ELm2DR;;EKr2DI;IAEI,gCAAA;ELu2DR;;EKz2DI;IAEI,yBAAA;EL22DR;;EK72DI;IAEI,wBAAA;EL+2DR;;EKj3DI;IAEI,yBAAA;ELm3DR;;EKr3DI;IAEI,6BAAA;ELu3DR;;EKz3DI;IAEI,8BAAA;EL23DR;;EK73DI;IAEI,wBAAA;EL+3DR;;EKj4DI;IAEI,+BAAA;ELm4DR;;EKr4DI;IAEI,wBAAA;ELu4DR;;EKz4DI;IAEI,yBAAA;EL24DR;;EK74DI;IAEI,8BAAA;EL+4DR;;EKj5DI;IAEI,iCAAA;ELm5DR;;EKr5DI;IAEI,sCAAA;ELu5DR;;EKz5DI;IAEI,yCAAA;EL25DR;;EK75DI;IAEI,uBAAA;EL+5DR;;EKj6DI;IAEI,uBAAA;ELm6DR;;EKr6DI;IAEI,yBAAA;ELu6DR;;EKz6DI;IAEI,yBAAA;EL26DR;;EK76DI;IAEI,0BAAA;EL+6DR;;EKj7DI;IAEI,4BAAA;ELm7DR;;EKr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;IAEI,yBAAA;EL88ER;;EKh9EI;IAEI,6BAAA;ELk9ER;;EKp9EI;IAEI,8BAAA;ELs9ER;;EKx9EI;IAEI,wBAAA;EL09ER;;EK59EI;IAEI,+BAAA;EL89ER;;EKh+EI;IAEI,wBAAA;ELk+ER;;EKp+EI;IAEI,yBAAA;ELs+ER;;EKx+EI;IAEI,8BAAA;EL0+ER;;EK5+EI;IAEI,iCAAA;EL8+ER;;EKh/EI;IAEI,sCAAA;ELk/ER;;EKp/EI;IAEI,yCAAA;ELs/ER;;EKx/EI;IAEI,uBAAA;EL0/ER;;EK5/EI;IAEI,uBAAA;EL8/ER;;EKhgFI;IAEI,yBAAA;ELkgFR;;EKpgFI;IAEI,yBAAA;ELsgFR;;EKxgFI;IAEI,0BAAA;EL0gFR;;EK5gFI;IAEI,4BAAA;EL8gFR;;EKhhFI;IAEI,kCAAA;ELkhFR;;EKphFI;IAEI,sCAAA;ELshFR;;EKxhFI;IAEI,oCAAA;EL0hFR;;EK5hFI;IAEI,kCAAA;EL8hFR;;EKhiFI;IAEI,yCAAA;ELkiFR;;EKpiFI;IAEI,wCAAA;ELsiFR;;EKxiFI;IAEI,wCAAA;EL0iFR;;EK5iFI;IAEI,kCAAA;EL8iFR;;EKhjFI;IAEI,gCAAA;ELkjFR;;EKpjFI;IAEI,8BAAA;ELsjFR;;EKxjFI;IAEI,gCAAA;EL0jFR;;EK5jFI;IAEI,+BAAA;EL8jFR;;EKhkFI;IAEI,oCAAA;ELkkFR;;EKpkFI;IAEI,kCAAA;ELskFR;;EKxkFI;IAEI,gCAAA;EL0kFR;;EK5kFI;IAEI,uCAAA;EL8kFR;;EKhlFI;IAEI,sCAAA;ELklFR;;EKplFI;IAEI,iCAAA;ELslFR;;EKxlFI;IAEI,2BAAA;EL0lFR;;EK5lFI;IAEI,iCAAA;EL8lFR;;EKhmFI;IAEI,+BAAA;ELkmFR;;EKpmFI;IAEI,6BAAA;ELsmFR;;EKxmFI;IAEI,+BAAA;EL0mFR;;EK5mFI;IAEI,8BAAA;EL8mFR;;EKhnFI;IAEI,oBAAA;ELknFR;;EKpnFI;IAEI,mBAAA;ELsnFR;;EKxnFI;IAEI,mBAAA;EL0nFR;;EK5nFI;IAEI,mBAAA;EL8nFR;;EKhoFI;IAEI,mBAAA;ELkoFR;;EKpoFI;IAE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ELo+FR;;EKt+FI;IAEI,4BAAA;ELw+FR;;EK1+FI;IAEI,kCAAA;EL4+FR;;EK9+FI;IAEI,iCAAA;ELg/FR;;EKl/FI;IAEI,+BAAA;ELo/FR;;EKt/FI;IAEI,iCAAA;ELw/FR;;EK1/FI;IAEI,+BAAA;EL4/FR;;EK9/FI;IAEI,0BAAA;ELggGR;;EKlgGI;IAEI,gCAAA;ELogGR;;EKtgGI;IAEI,+BAAA;ELwgGR;;EK1gGI;IAEI,6BAAA;EL4gGR;;EK9gGI;IAEI,+BAAA;ELghGR;;EKlhGI;IAEI,6BAAA;ELohGR;AACF;ACzgGI;EIdE;IAEI,0BAAA;ELyhGR;;EK3hGI;IAEI,gCAAA;EL6hGR;;EK/hGI;IAEI,yBAAA;ELiiGR;;EKniGI;IAEI,wBAAA;ELqiGR;;EKviGI;IAEI,yBAAA;ELyiGR;;EK3iGI;IAEI,6BAAA;EL6iGR;;EK/iGI;IAEI,8BAAA;ELijGR;;EKnjGI;IAEI,wBAAA;ELqjGR;;EKvjGI;IAEI,+BAAA;ELyjGR;;EK3jGI;IAEI,wBAAA;EL6jGR;;EK/jGI;IAEI,yBAAA;ELikGR;;EKnkGI;IAEI,8BAAA;ELqkGR;;EKvkGI;IAEI,iCAAA;ELykGR;;EK3kGI;IAEI,sCAAA;EL6kGR;;EK/kGI;IAEI,yCAAA;ELilGR;;EKnlGI;IAEI,uBAAA;ELqlGR;;EKvlGI;IAEI,uBAAA;ELylGR;;EK3lGI;IAEI,yBAAA;EL6lGR;;EK/lGI;IAEI,yBAAA;ELimGR;;EKnmGI;IAEI,0BAAA;ELqmGR;;EKvmGI;IAEI,4BAAA;ELymGR;;EK3mGI;IAEI,kCAAA;EL6mGR;;EK/mGI;IAEI,sCAAA;ELinGR;;EKnnGI;IAEI,oCAAA;ELqnGR;;EKvnGI;IAEI,kCAAA;ELynGR;;EK3nGI;IAEI,yCAAA;EL6nGR;;EK/nGI;IAEI,wCAAA;ELioGR;;EKnoGI;IAEI,wCAAA;ELqoGR;;EKvoGI;IAEI,kCAAA;ELyoGR;;EK3oGI;IAEI,gCAAA;EL6oGR;;EK/oGI;IAEI,8BAAA;ELipGR;;EKnpGI;IAEI,gCAAA;ELqpGR;;EKvpGI;IAEI,+BAAA;ELypGR;;EK3pGI;IAEI,o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F;AC/rII;EIdE;IAEI,0BAAA;EL+sIR;;EKjtII;IAEI,gCAAA;ELmtIR;;EKrtII;IAEI,yBAAA;ELutIR;;EKztII;IAEI,wBAAA;EL2tIR;;EK7tII;IAEI,yBAAA;EL+tIR;;EKjuII;IAEI,6BAAA;ELmuIR;;EKruII;IAEI,8BAAA;ELuuIR;;EKzuII;IAEI,wBAAA;EL2uIR;;EK7uII;IAEI,+BAAA;EL+uIR;;EKjvII;IAEI,wBAAA;ELmvIR;;EKrvII;IAEI,yBAAA;ELuvIR;;EKzvII;IAEI,8BAAA;EL2vIR;;EK7vII;IAEI,iCAAA;EL+vIR;;EKjwII;IAEI,sCAAA;ELmwIR;;EKrwII;IAEI,yCAAA;ELuwIR;;EKzwII;IAEI,uBAAA;EL2wIR;;EK7wII;IAEI,uBAAA;EL+wIR;;EKjxII;IAEI,yBAAA;ELmxIR;;EKrxII;IAEI,yBAAA;ELuxIR;;EKzxII;IAEI,0BAAA;EL2xIR;;EK7xII;IAEI,4BAAA;EL+xIR;;EKjyII;IAEI,kCAAA;ELmyIR;;EKryII;IAEI,sCAAA;ELuyIR;;EKzyII;IAEI,oCAAA;EL2yIR;;EK7yII;IAEI,kCAAA;EL+yIR;;EKjzII;IAEI,yCAAA;ELmzIR;;EKrzII;IAEI,wCAAA;ELuzIR;;EKzzII;IAEI,wCAAA;EL2zIR;;EK7zII;IAEI,kCAAA;EL+zIR;;EKj0II;IAEI,gCAAA;ELm0IR;;EKr0II;IAEI,8BAAA;ELu0IR;;EKz0II;IAEI,gCAAA;EL20IR;;EK70II;IAEI,+BAAA;EL+0IR;;EKj1II;IAEI,oCAAA;ELm1IR;;EKr1II;IAEI,kCAAA;ELu1IR;;EKz1II;IAEI,gCAAA;EL21IR;;EK71II;IAEI,uCAAA;EL+1IR;;EKj2II;IAEI,sCAAA;ELm2IR;;EKr2II;IAEI,iCAAA;ELu2IR;;EKz2II;IAEI,2BAAA;EL22IR;;EK72II;IAEI,iCAAA;EL+2IR;;EKj3II;IAEI,+BAAA;ELm3IR;;EKr3II;IAEI,6BAAA;ELu3IR;;EKz3II;IAEI,+BAAA;EL23IR;;EK73II;IAEI,8BAAA;EL+3IR;;EKj4II;IAEI,oBAAA;ELm4IR;;EKr4II;IAEI,mBAAA;ELu4IR;;EKz4II;IAEI,mBAAA;EL24IR;;EK74II;IAEI,mBAAA;EL+4IR;;EKj5II;IAEI,mBAAA;ELm5IR;;EKr5II;IAEI,mBAAA;ELu5IR;;EKz5II;IAEI,mBAAA;EL25IR;;EK75II;IAEI,mBAAA;EL+5IR;;EKj6II;IAEI,oBAAA;ELm6IR;;EKr6II;IAEI,0BAAA;ELu6IR;;EKz6II;IAEI,yBAAA;EL26IR;;EK76II;IAEI,uBAAA;EL+6IR;;EKj7II;IAEI,yBAAA;ELm7IR;;EKr7II;IAEI,uBAAA;ELu7IR;;EKz7II;IAEI,uBAAA;EL27IR;;EK77II;IAEI,0BAAA;IAAA,yBAAA;ELg8IR;;EKl8II;IAEI,gCAAA;IAAA,+BAAA;ELq8IR;;EKv8II;IAEI,+BAAA;IAAA,8BAAA;EL08IR;;EK58II;IAEI,6BAAA;IAAA,4BAAA;EL+8IR;;EKj9II;IAEI,+BAAA;IAAA,8BAAA;ELo9IR;;EKt9II;IAEI,6BAAA;IAAA,4BAAA;ELy9IR;;EK39II;IAEI,6BAAA;IAAA,4BAAA;EL89IR;;EKh+II;IAEI,wBAAA;IAAA,2BAAA;ELm+IR;;EKr+II;IAEI,8BAAA;IAAA,iCAAA;ELw+IR;;EK1+II;IAEI,6BAAA;IAAA,gCAAA;EL6+IR;;EK/+II;IAEI,2BAAA;IAAA,8BAAA;ELk/IR;;EKp/II;IAEI,6BAAA;IAAA,gCAAA;ELu/IR;;EKz/II;IAEI,2BAAA;IAAA,8BAAA;EL4/IR;;EK9/II;IAEI,2BAAA;IAAA,8BAAA;ELigJR;;EKngJI;IAEI,wBAAA;ELqgJR;;EKvgJI;IAEI,8BAAA;ELygJR;;EK3gJI;IAEI,6BAAA;EL6gJR;;EK/gJI;IAEI,2BAAA;ELihJR;;EKnhJI;IAEI,6BAAA;ELqhJR;;EKvhJI;IAEI,2BAAA;ELyhJR;;EK3hJI;IAEI,2BAAA;EL6hJR;;EK/hJI;IAEI,0BAAA;ELiiJR;;EKniJI;IAEI,gCAAA;ELqiJR;;EKviJI;IAEI,+BAAA;ELyiJR;;EK3iJI;IAEI,6BAAA;EL6iJR;;EK/iJI;IAEI,+BAAA;ELijJR;;EKnjJI;IAEI,6BAAA;ELqjJR;;EKvjJI;IAEI,6BAAA;ELyjJR;;EK3jJI;IAEI,2BAAA;EL6jJR;;EK/jJI;IAEI,iCAAA;ELikJR;;EKnkJI;IAEI,gCAAA;ELqkJR;;EKvkJI;IAEI,8BAAA;ELykJR;;EK3kJI;IAEI,gCAAA;EL6kJR;;EK/kJI;IAEI,8BAAA;ELilJR;;EKnlJI;IAEI,8BAAA;ELqlJR;;EKvlJI;IAEI,yBAAA;ELylJR;;EK3lJI;IAEI,+BAAA;EL6lJR;;EK/lJI;IAEI,8BAAA;ELimJR;;EKnmJI;IAEI,4BAAA;ELqmJR;;EKvmJI;IAEI,8BAAA;ELymJR;;EK3mJI;IAEI,4BAAA;EL6mJR;;EK/mJI;IAEI,4BAAA;ELinJR;;EKnnJI;IAEI,qBAAA;ELqnJR;;EKvnJI;IAEI,2BAAA;ELynJR;;EK3nJI;IAEI,0BAAA;EL6nJR;;EK/nJI;IAEI,wBAAA;ELioJR;;EKnoJI;IAEI,0BAAA;ELqoJR;;EKvoJI;IAEI,wBAAA;ELyoJR;;EK3oJI;IAEI,2BAAA;IAAA,0BAAA;EL8oJR;;EKhpJI;IAEI,iCAAA;IAAA,gCAAA;ELmpJR;;EKrpJI;IAEI,gCAAA;IAAA,+BAAA;ELwpJR;;EK1pJI;IAEI,8BAAA;IAAA,6BAAA;EL6pJR;;EK/pJI;IAEI,gCAAA;IAAA,+BAAA;ELkqJR;;EKpqJI;IAEI,8BAAA;IAAA,6BAAA;ELuqJR;;EKzqJI;IAEI,yBAAA;IAAA,4BAAA;EL4qJR;;EK9qJI;IAEI,+BAAA;IAAA,kCAAA;ELirJR;;EKnrJI;IAEI,8BAAA;IAAA,iCAAA;ELsrJR;;EKxrJI;IAEI,4BAAA;IAAA,+BAAA;EL2rJR;;EK7rJI;IAEI,8BAAA;IAAA,iCAAA;ELgsJR;;EKlsJI;IAEI,4BAAA;IAAA,+BAAA;ELqsJR;;EKvsJI;IAEI,yBAAA;ELysJR;;EK3sJI;IAEI,+BAAA;EL6sJR;;EK/sJI;IAEI,8BAAA;ELitJR;;EKntJI;IAEI,4BAAA;ELqtJR;;EKvtJI;IAEI,8BAAA;ELytJR;;EK3tJI;IAEI,4BAAA;EL6tJR;;EK/tJI;IAEI,2BAAA;ELiuJR;;EKnuJI;IAEI,iCAAA;ELquJR;;EKvuJI;IAEI,gCAAA;ELyuJR;;EK3uJI;IAEI,8BAAA;EL6uJR;;EK/uJI;IAEI,gCAAA;ELivJR;;EKnvJI;IAEI,8BAAA;ELqvJR;;EKvvJI;IAEI,4BAAA;ELyvJR;;EK3vJI;IAEI,kCAAA;EL6vJR;;EK/vJI;IAEI,iCAAA;ELiwJR;;EKnwJI;IAEI,+BAAA;ELqwJR;;EKvwJI;IAEI,iCAAA;ELywJR;;EK3wJI;IAEI,+BAAA;EL6wJR;;EK/wJI;IAEI,0BAAA;ELixJR;;EKnxJI;IAEI,gCAAA;ELqxJR;;EKvxJI;IAEI,+BAAA;ELyxJR;;EK3xJI;IAEI,6BAAA;EL6xJR;;EK/xJI;IAEI,+BAAA;ELiyJR;;EKnyJI;IAEI,6BAAA;ELqyJR;AACF;AMnzJA;EDWM;IAEI,0BAAA;EL0yJR;;EK5yJI;IAEI,gCAAA;EL8yJR;;EKhzJI;IAEI,yBAAA;ELkzJR;;EKpzJI;IAEI,wBAAA;ELszJR;;EKxzJI;IAEI,yBAAA;EL0zJR;;EK5zJI;IAEI,6BAAA;EL8zJR;;EKh0JI;IAEI,8BAAA;ELk0JR;;EKp0JI;IAEI,wBAAA;ELs0JR;;EKx0JI;IAEI,+BAAA;EL00JR;;EK50JI;IAEI,wBAAA;EL80JR;AACF","file":"bootstrap-grid.css","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n width: 100%;\n padding-right: var(--bs-gutter-x, 0.75rem);\n padding-left: var(--bs-gutter-x, 0.75rem);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--bs-gutter-y) * -1);\n margin-right: calc(var(--bs-gutter-x) / -2);\n margin-left: calc(var(--bs-gutter-x) / -2);\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) / 2);\n padding-left: calc(var(--bs-gutter-x) / 2);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n margin-left: 91.6666666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-sm-0,\n.gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0,\n.gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1,\n.gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-sm-1,\n.gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-sm-2,\n.gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-sm-2,\n.gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-sm-3,\n.gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3,\n.gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4,\n.gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4,\n.gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5,\n.gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5,\n.gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-md-0,\n.gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0,\n.gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1,\n.gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-md-1,\n.gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-md-2,\n.gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-md-2,\n.gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-md-3,\n.gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3,\n.gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4,\n.gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4,\n.gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5,\n.gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5,\n.gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-lg-0,\n.gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0,\n.gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1,\n.gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-lg-1,\n.gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-lg-2,\n.gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-lg-2,\n.gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-lg-3,\n.gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3,\n.gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4,\n.gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4,\n.gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5,\n.gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5,\n.gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xl-0,\n.gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0,\n.gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1,\n.gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xl-1,\n.gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xl-2,\n.gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xl-2,\n.gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xl-3,\n.gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3,\n.gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4,\n.gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4,\n.gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5,\n.gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5,\n.gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-left: 0;\n }\n\n .offset-xxl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xxl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xxl-3 {\n margin-left: 25%;\n }\n\n .offset-xxl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xxl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xxl-6 {\n margin-left: 50%;\n }\n\n .offset-xxl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xxl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xxl-9 {\n margin-left: 75%;\n }\n\n .offset-xxl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xxl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xxl-0,\n.gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0,\n.gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1,\n.gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xxl-1,\n.gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xxl-2,\n.gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xxl-2,\n.gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xxl-3,\n.gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3,\n.gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4,\n.gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4,\n.gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5,\n.gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5,\n.gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-right: 0 !important;\n }\n\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n\n .me-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-left: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: 0.25rem !important;\n }\n\n .m-md-2 {\n margin: 0.5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-right: 0 !important;\n }\n\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-md-3 {\n margin-right: 1rem !important;\n }\n\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-right: 3rem !important;\n }\n\n .me-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-left: 0 !important;\n }\n\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n\n .ms-md-auto {\n margin-left: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: 0.25rem !important;\n }\n\n .p-md-2 {\n padding: 0.5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-right: 0 !important;\n }\n\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-left: 0 !important;\n }\n\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-right: 0 !important;\n }\n\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n\n .me-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-left: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-right: 0 !important;\n }\n\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-left: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-right: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer / 4,\n 2: $spacer / 2,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n$body-text-align: null !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width / 2 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n\n$border-color: $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .25rem !default;\n$border-radius-sm: .2rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins\n// $font-size-base effects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: $gray-600 !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n$hr-height: $border-width !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: $body-color !default;\n$table-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-striped-order: odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: $link-color !default;\n$btn-link-hover-color: $link-hover-color !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n$input-disabled-border-color: null !default;\n\n$input-color: $body-color !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: 1px solid rgba(0, 0, 0, .25) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba(0, 0, 0, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: $gray-300 !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: $gray-500 !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: $input-group-addon-bg !default;\n$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas: 1040 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1060 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: null !default;\n$nav-link-hover-color: null !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .55) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer / 2 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg: $gray-200 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer / 4 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-radius: $border-radius !default;\n$pagination-margin-start: -$pagination-border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-color: $link-hover-color !default;\n$pagination-focus-bg: $gray-200 !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer / 2 !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y / 2 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width / 2 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: $body-color !default;\n$accordion-bg: $body-bg !default;\n$accordion-border-width: $border-width !default;\n$accordion-border-color: rgba($black, .125) !default;\n$accordion-border-radius: $border-radius !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: $accordion-color !default;\n$accordion-button-bg: $accordion-bg !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color: shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $accordion-color !default;\n$accordion-icon-active-color: $accordion-button-active-color !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer / 4 !default;\n$tooltip-padding-x: $spacer / 2 !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-start tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-bg: shade-color($popover-bg, 6%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: $border-radius !default;\n$toast-box-shadow: $box-shadow !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: $box-shadow-inset !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: $gray-900 !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: $spacer / 2 !default;\n$list-group-item-padding-x: $spacer !default;\n$list-group-item-bg-scale: -80% !default;\n$list-group-item-color-scale: 40% !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: $modal-content-bg !default;\n$offcanvas-color: $modal-content-color !default;\n$offcanvas-body-backdrop-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css deleted file mode 100644 index 48fe3ffcb..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);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}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x)/ -2);margin-left:calc(var(--bs-gutter-x)/ -2)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)/ 2);padding-left:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-2{flex:0 0 auto;width:16.6666666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.3333333333%}.col-5{flex:0 0 auto;width:41.6666666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.3333333333%}.col-8{flex:0 0 auto;width:66.6666666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-11{margin-left:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display: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}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.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-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.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-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.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-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.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-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.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-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@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-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}} -/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css.map b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css.map deleted file mode 100644 index 91c37c3b1..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../scss/bootstrap-grid.scss","../scss/_containers.scss","dist/css/bootstrap-grid.css","../scss/mixins/_container.scss","../scss/mixins/_breakpoints.scss","../scss/_grid.scss","../scss/mixins/_grid.scss","../scss/mixins/_utilities.scss","../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n width: 100%;\n padding-right: var(--bs-gutter-x, 0.75rem);\n padding-left: var(--bs-gutter-x, 0.75rem);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--bs-gutter-y) * -1);\n margin-right: calc(var(--bs-gutter-x) / -2);\n margin-left: calc(var(--bs-gutter-x) / -2);\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) / 2);\n padding-left: calc(var(--bs-gutter-x) / 2);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n margin-left: 91.6666666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-sm-0,\n.gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0,\n.gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1,\n.gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-sm-1,\n.gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-sm-2,\n.gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-sm-2,\n.gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-sm-3,\n.gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3,\n.gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4,\n.gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4,\n.gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5,\n.gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5,\n.gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-md-0,\n.gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0,\n.gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1,\n.gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-md-1,\n.gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-md-2,\n.gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-md-2,\n.gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-md-3,\n.gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3,\n.gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4,\n.gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4,\n.gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5,\n.gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5,\n.gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-lg-0,\n.gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0,\n.gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1,\n.gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-lg-1,\n.gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-lg-2,\n.gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-lg-2,\n.gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-lg-3,\n.gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3,\n.gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4,\n.gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4,\n.gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5,\n.gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5,\n.gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xl-0,\n.gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0,\n.gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1,\n.gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xl-1,\n.gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xl-2,\n.gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xl-2,\n.gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xl-3,\n.gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3,\n.gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4,\n.gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4,\n.gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5,\n.gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5,\n.gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-left: 0;\n }\n\n .offset-xxl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xxl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xxl-3 {\n margin-left: 25%;\n }\n\n .offset-xxl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xxl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xxl-6 {\n margin-left: 50%;\n }\n\n .offset-xxl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xxl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xxl-9 {\n margin-left: 75%;\n }\n\n .offset-xxl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xxl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xxl-0,\n.gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0,\n.gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1,\n.gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xxl-1,\n.gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xxl-2,\n.gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xxl-2,\n.gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xxl-3,\n.gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3,\n.gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4,\n.gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4,\n.gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5,\n.gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5,\n.gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-right: 0 !important;\n }\n\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n\n .me-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-left: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: 0.25rem !important;\n }\n\n .m-md-2 {\n margin: 0.5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-right: 0 !important;\n }\n\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-md-3 {\n margin-right: 1rem !important;\n }\n\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-right: 3rem !important;\n }\n\n .me-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-left: 0 !important;\n }\n\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n\n .ms-md-auto {\n margin-left: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: 0.25rem !important;\n }\n\n .p-md-2 {\n padding: 0.5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-right: 0 !important;\n }\n\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-left: 0 !important;\n }\n\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-right: 0 !important;\n }\n\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n\n .me-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-left: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-right: 0 !important;\n }\n\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-left: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-right: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css deleted file mode 100644 index 4c590c03e..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css +++ /dev/null @@ -1,4996 +0,0 @@ -/*! - * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - width: 100%; - padding-left: var(--bs-gutter-x, 0.75rem); - padding-right: var(--bs-gutter-x, 0.75rem); - 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; - } -} -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(var(--bs-gutter-y) * -1); - margin-left: calc(var(--bs-gutter-x) / -2); - margin-right: calc(var(--bs-gutter-x) / -2); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-left: calc(var(--bs-gutter-x) / 2); - padding-right: calc(var(--bs-gutter-x) / 2); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.6666666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.3333333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.6666666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.3333333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.6666666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.3333333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.6666666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-right: 8.3333333333%; -} - -.offset-2 { - margin-right: 16.6666666667%; -} - -.offset-3 { - margin-right: 25%; -} - -.offset-4 { - margin-right: 33.3333333333%; -} - -.offset-5 { - margin-right: 41.6666666667%; -} - -.offset-6 { - margin-right: 50%; -} - -.offset-7 { - margin-right: 58.3333333333%; -} - -.offset-8 { - margin-right: 66.6666666667%; -} - -.offset-9 { - margin-right: 75%; -} - -.offset-10 { - margin-right: 83.3333333333%; -} - -.offset-11 { - margin-right: 91.6666666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-sm-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-sm-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-sm-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-sm-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-sm-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-sm-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-sm-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-sm-0 { - margin-right: 0; - } - - .offset-sm-1 { - margin-right: 8.3333333333%; - } - - .offset-sm-2 { - margin-right: 16.6666666667%; - } - - .offset-sm-3 { - margin-right: 25%; - } - - .offset-sm-4 { - margin-right: 33.3333333333%; - } - - .offset-sm-5 { - margin-right: 41.6666666667%; - } - - .offset-sm-6 { - margin-right: 50%; - } - - .offset-sm-7 { - margin-right: 58.3333333333%; - } - - .offset-sm-8 { - margin-right: 66.6666666667%; - } - - .offset-sm-9 { - margin-right: 75%; - } - - .offset-sm-10 { - margin-right: 83.3333333333%; - } - - .offset-sm-11 { - margin-right: 91.6666666667%; - } - - .g-sm-0, -.gx-sm-0 { - --bs-gutter-x: 0; - } - - .g-sm-0, -.gy-sm-0 { - --bs-gutter-y: 0; - } - - .g-sm-1, -.gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - - .g-sm-1, -.gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - - .g-sm-2, -.gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - - .g-sm-2, -.gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - - .g-sm-3, -.gx-sm-3 { - --bs-gutter-x: 1rem; - } - - .g-sm-3, -.gy-sm-3 { - --bs-gutter-y: 1rem; - } - - .g-sm-4, -.gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - - .g-sm-4, -.gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - - .g-sm-5, -.gx-sm-5 { - --bs-gutter-x: 3rem; - } - - .g-sm-5, -.gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-md-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-md-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-md-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-md-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-md-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-md-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-md-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-md-0 { - margin-right: 0; - } - - .offset-md-1 { - margin-right: 8.3333333333%; - } - - .offset-md-2 { - margin-right: 16.6666666667%; - } - - .offset-md-3 { - margin-right: 25%; - } - - .offset-md-4 { - margin-right: 33.3333333333%; - } - - .offset-md-5 { - margin-right: 41.6666666667%; - } - - .offset-md-6 { - margin-right: 50%; - } - - .offset-md-7 { - margin-right: 58.3333333333%; - } - - .offset-md-8 { - margin-right: 66.6666666667%; - } - - .offset-md-9 { - margin-right: 75%; - } - - .offset-md-10 { - margin-right: 83.3333333333%; - } - - .offset-md-11 { - margin-right: 91.6666666667%; - } - - .g-md-0, -.gx-md-0 { - --bs-gutter-x: 0; - } - - .g-md-0, -.gy-md-0 { - --bs-gutter-y: 0; - } - - .g-md-1, -.gx-md-1 { - --bs-gutter-x: 0.25rem; - } - - .g-md-1, -.gy-md-1 { - --bs-gutter-y: 0.25rem; - } - - .g-md-2, -.gx-md-2 { - --bs-gutter-x: 0.5rem; - } - - .g-md-2, -.gy-md-2 { - --bs-gutter-y: 0.5rem; - } - - .g-md-3, -.gx-md-3 { - --bs-gutter-x: 1rem; - } - - .g-md-3, -.gy-md-3 { - --bs-gutter-y: 1rem; - } - - .g-md-4, -.gx-md-4 { - --bs-gutter-x: 1.5rem; - } - - .g-md-4, -.gy-md-4 { - --bs-gutter-y: 1.5rem; - } - - .g-md-5, -.gx-md-5 { - --bs-gutter-x: 3rem; - } - - .g-md-5, -.gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-lg-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-lg-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-lg-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-lg-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-lg-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-lg-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-lg-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-lg-0 { - margin-right: 0; - } - - .offset-lg-1 { - margin-right: 8.3333333333%; - } - - .offset-lg-2 { - margin-right: 16.6666666667%; - } - - .offset-lg-3 { - margin-right: 25%; - } - - .offset-lg-4 { - margin-right: 33.3333333333%; - } - - .offset-lg-5 { - margin-right: 41.6666666667%; - } - - .offset-lg-6 { - margin-right: 50%; - } - - .offset-lg-7 { - margin-right: 58.3333333333%; - } - - .offset-lg-8 { - margin-right: 66.6666666667%; - } - - .offset-lg-9 { - margin-right: 75%; - } - - .offset-lg-10 { - margin-right: 83.3333333333%; - } - - .offset-lg-11 { - margin-right: 91.6666666667%; - } - - .g-lg-0, -.gx-lg-0 { - --bs-gutter-x: 0; - } - - .g-lg-0, -.gy-lg-0 { - --bs-gutter-y: 0; - } - - .g-lg-1, -.gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - - .g-lg-1, -.gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - - .g-lg-2, -.gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - - .g-lg-2, -.gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - - .g-lg-3, -.gx-lg-3 { - --bs-gutter-x: 1rem; - } - - .g-lg-3, -.gy-lg-3 { - --bs-gutter-y: 1rem; - } - - .g-lg-4, -.gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - - .g-lg-4, -.gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - - .g-lg-5, -.gx-lg-5 { - --bs-gutter-x: 3rem; - } - - .g-lg-5, -.gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-xl-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xl-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-xl-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xl-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-xl-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xl-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-xl-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xl-0 { - margin-right: 0; - } - - .offset-xl-1 { - margin-right: 8.3333333333%; - } - - .offset-xl-2 { - margin-right: 16.6666666667%; - } - - .offset-xl-3 { - margin-right: 25%; - } - - .offset-xl-4 { - margin-right: 33.3333333333%; - } - - .offset-xl-5 { - margin-right: 41.6666666667%; - } - - .offset-xl-6 { - margin-right: 50%; - } - - .offset-xl-7 { - margin-right: 58.3333333333%; - } - - .offset-xl-8 { - margin-right: 66.6666666667%; - } - - .offset-xl-9 { - margin-right: 75%; - } - - .offset-xl-10 { - margin-right: 83.3333333333%; - } - - .offset-xl-11 { - margin-right: 91.6666666667%; - } - - .g-xl-0, -.gx-xl-0 { - --bs-gutter-x: 0; - } - - .g-xl-0, -.gy-xl-0 { - --bs-gutter-y: 0; - } - - .g-xl-1, -.gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xl-1, -.gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xl-2, -.gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xl-2, -.gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xl-3, -.gx-xl-3 { - --bs-gutter-x: 1rem; - } - - .g-xl-3, -.gy-xl-3 { - --bs-gutter-y: 1rem; - } - - .g-xl-4, -.gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xl-4, -.gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xl-5, -.gx-xl-5 { - --bs-gutter-x: 3rem; - } - - .g-xl-5, -.gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.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.3333333333%; - } - - .col-xxl-2 { - flex: 0 0 auto; - width: 16.6666666667%; - } - - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xxl-4 { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .col-xxl-5 { - flex: 0 0 auto; - width: 41.6666666667%; - } - - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xxl-7 { - flex: 0 0 auto; - width: 58.3333333333%; - } - - .col-xxl-8 { - flex: 0 0 auto; - width: 66.6666666667%; - } - - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xxl-10 { - flex: 0 0 auto; - width: 83.3333333333%; - } - - .col-xxl-11 { - flex: 0 0 auto; - width: 91.6666666667%; - } - - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xxl-0 { - margin-right: 0; - } - - .offset-xxl-1 { - margin-right: 8.3333333333%; - } - - .offset-xxl-2 { - margin-right: 16.6666666667%; - } - - .offset-xxl-3 { - margin-right: 25%; - } - - .offset-xxl-4 { - margin-right: 33.3333333333%; - } - - .offset-xxl-5 { - margin-right: 41.6666666667%; - } - - .offset-xxl-6 { - margin-right: 50%; - } - - .offset-xxl-7 { - margin-right: 58.3333333333%; - } - - .offset-xxl-8 { - margin-right: 66.6666666667%; - } - - .offset-xxl-9 { - margin-right: 75%; - } - - .offset-xxl-10 { - margin-right: 83.3333333333%; - } - - .offset-xxl-11 { - margin-right: 91.6666666667%; - } - - .g-xxl-0, -.gx-xxl-0 { - --bs-gutter-x: 0; - } - - .g-xxl-0, -.gy-xxl-0 { - --bs-gutter-y: 0; - } - - .g-xxl-1, -.gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xxl-1, -.gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xxl-2, -.gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xxl-2, -.gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xxl-3, -.gx-xxl-3 { - --bs-gutter-x: 1rem; - } - - .g-xxl-3, -.gy-xxl-3 { - --bs-gutter-y: 1rem; - } - - .g-xxl-4, -.gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xxl-4, -.gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xxl-5, -.gx-xxl-5 { - --bs-gutter-x: 3rem; - } - - .g-xxl-5, -.gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: 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; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; -} - -.mx-auto { - margin-left: auto !important; - margin-right: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-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: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-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: 3rem !important; -} - -@media (min-width: 576px) { - .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-table { - display: table !important; - } - - .d-sm-table-row { - display: table-row !important; - } - - .d-sm-table-cell { - display: table-cell !important; - } - - .d-sm-flex { - display: flex !important; - } - - .d-sm-inline-flex { - display: inline-flex !important; - } - - .d-sm-none { - display: none !important; - } - - .flex-sm-fill { - flex: 1 1 auto !important; - } - - .flex-sm-row { - flex-direction: row !important; - } - - .flex-sm-column { - flex-direction: column !important; - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-sm-wrap { - flex-wrap: wrap !important; - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-sm-start { - justify-content: flex-start !important; - } - - .justify-content-sm-end { - justify-content: flex-end !important; - } - - .justify-content-sm-center { - justify-content: center !important; - } - - .justify-content-sm-between { - justify-content: space-between !important; - } - - .justify-content-sm-around { - justify-content: space-around !important; - } - - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - - .align-items-sm-start { - align-items: flex-start !important; - } - - .align-items-sm-end { - align-items: flex-end !important; - } - - .align-items-sm-center { - align-items: center !important; - } - - .align-items-sm-baseline { - align-items: baseline !important; - } - - .align-items-sm-stretch { - align-items: stretch !important; - } - - .align-content-sm-start { - align-content: flex-start !important; - } - - .align-content-sm-end { - align-content: flex-end !important; - } - - .align-content-sm-center { - align-content: center !important; - } - - .align-content-sm-between { - align-content: space-between !important; - } - - .align-content-sm-around { - align-content: space-around !important; - } - - .align-content-sm-stretch { - align-content: stretch !important; - } - - .align-self-sm-auto { - align-self: auto !important; - } - - .align-self-sm-start { - align-self: flex-start !important; - } - - .align-self-sm-end { - align-self: flex-end !important; - } - - .align-self-sm-center { - align-self: center !important; - } - - .align-self-sm-baseline { - align-self: baseline !important; - } - - .align-self-sm-stretch { - align-self: stretch !important; - } - - .order-sm-first { - order: -1 !important; - } - - .order-sm-0 { - order: 0 !important; - } - - .order-sm-1 { - order: 1 !important; - } - - .order-sm-2 { - order: 2 !important; - } - - .order-sm-3 { - order: 3 !important; - } - - .order-sm-4 { - order: 4 !important; - } - - .order-sm-5 { - order: 5 !important; - } - - .order-sm-last { - order: 6 !important; - } - - .m-sm-0 { - margin: 0 !important; - } - - .m-sm-1 { - margin: 0.25rem !important; - } - - .m-sm-2 { - margin: 0.5rem !important; - } - - .m-sm-3 { - margin: 1rem !important; - } - - .m-sm-4 { - margin: 1.5rem !important; - } - - .m-sm-5 { - margin: 3rem !important; - } - - .m-sm-auto { - margin: auto !important; - } - - .mx-sm-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; - } - - .mx-sm-auto { - margin-left: auto !important; - margin-right: auto !important; - } - - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-sm-0 { - margin-top: 0 !important; - } - - .mt-sm-1 { - margin-top: 0.25rem !important; - } - - .mt-sm-2 { - margin-top: 0.5rem !important; - } - - .mt-sm-3 { - margin-top: 1rem !important; - } - - .mt-sm-4 { - margin-top: 1.5rem !important; - } - - .mt-sm-5 { - margin-top: 3rem !important; - } - - .mt-sm-auto { - margin-top: auto !important; - } - - .me-sm-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; - } - - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-sm-0 { - padding-top: 0 !important; - } - - .pt-sm-1 { - padding-top: 0.25rem !important; - } - - .pt-sm-2 { - padding-top: 0.5rem !important; - } - - .pt-sm-3 { - padding-top: 1rem !important; - } - - .pt-sm-4 { - padding-top: 1.5rem !important; - } - - .pt-sm-5 { - padding-top: 3rem !important; - } - - .pe-sm-0 { - padding-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: 3rem !important; - } - - .pb-sm-0 { - padding-bottom: 0 !important; - } - - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - - .pb-sm-3 { - padding-bottom: 1rem !important; - } - - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - - .pb-sm-5 { - padding-bottom: 3rem !important; - } - - .ps-sm-0 { - padding-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: 3rem !important; - } -} -@media (min-width: 768px) { - .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-table { - display: table !important; - } - - .d-md-table-row { - display: table-row !important; - } - - .d-md-table-cell { - display: table-cell !important; - } - - .d-md-flex { - display: flex !important; - } - - .d-md-inline-flex { - display: inline-flex !important; - } - - .d-md-none { - display: none !important; - } - - .flex-md-fill { - flex: 1 1 auto !important; - } - - .flex-md-row { - flex-direction: row !important; - } - - .flex-md-column { - flex-direction: column !important; - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-md-grow-0 { - flex-grow: 0 !important; - } - - .flex-md-grow-1 { - flex-grow: 1 !important; - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-md-wrap { - flex-wrap: wrap !important; - } - - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-md-start { - justify-content: flex-start !important; - } - - .justify-content-md-end { - justify-content: flex-end !important; - } - - .justify-content-md-center { - justify-content: center !important; - } - - .justify-content-md-between { - justify-content: space-between !important; - } - - .justify-content-md-around { - justify-content: space-around !important; - } - - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - - .align-items-md-start { - align-items: flex-start !important; - } - - .align-items-md-end { - align-items: flex-end !important; - } - - .align-items-md-center { - align-items: center !important; - } - - .align-items-md-baseline { - align-items: baseline !important; - } - - .align-items-md-stretch { - align-items: stretch !important; - } - - .align-content-md-start { - align-content: flex-start !important; - } - - .align-content-md-end { - align-content: flex-end !important; - } - - .align-content-md-center { - align-content: center !important; - } - - .align-content-md-between { - align-content: space-between !important; - } - - .align-content-md-around { - align-content: space-around !important; - } - - .align-content-md-stretch { - align-content: stretch !important; - } - - .align-self-md-auto { - align-self: auto !important; - } - - .align-self-md-start { - align-self: flex-start !important; - } - - .align-self-md-end { - align-self: flex-end !important; - } - - .align-self-md-center { - align-self: center !important; - } - - .align-self-md-baseline { - align-self: baseline !important; - } - - .align-self-md-stretch { - align-self: stretch !important; - } - - .order-md-first { - order: -1 !important; - } - - .order-md-0 { - order: 0 !important; - } - - .order-md-1 { - order: 1 !important; - } - - .order-md-2 { - order: 2 !important; - } - - .order-md-3 { - order: 3 !important; - } - - .order-md-4 { - order: 4 !important; - } - - .order-md-5 { - order: 5 !important; - } - - .order-md-last { - order: 6 !important; - } - - .m-md-0 { - margin: 0 !important; - } - - .m-md-1 { - margin: 0.25rem !important; - } - - .m-md-2 { - margin: 0.5rem !important; - } - - .m-md-3 { - margin: 1rem !important; - } - - .m-md-4 { - margin: 1.5rem !important; - } - - .m-md-5 { - margin: 3rem !important; - } - - .m-md-auto { - margin: auto !important; - } - - .mx-md-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; - } - - .mx-md-auto { - margin-left: auto !important; - margin-right: auto !important; - } - - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-md-0 { - margin-top: 0 !important; - } - - .mt-md-1 { - margin-top: 0.25rem !important; - } - - .mt-md-2 { - margin-top: 0.5rem !important; - } - - .mt-md-3 { - margin-top: 1rem !important; - } - - .mt-md-4 { - margin-top: 1.5rem !important; - } - - .mt-md-5 { - margin-top: 3rem !important; - } - - .mt-md-auto { - margin-top: auto !important; - } - - .me-md-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; - } - - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-md-0 { - padding-top: 0 !important; - } - - .pt-md-1 { - padding-top: 0.25rem !important; - } - - .pt-md-2 { - padding-top: 0.5rem !important; - } - - .pt-md-3 { - padding-top: 1rem !important; - } - - .pt-md-4 { - padding-top: 1.5rem !important; - } - - .pt-md-5 { - padding-top: 3rem !important; - } - - .pe-md-0 { - padding-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: 3rem !important; - } - - .pb-md-0 { - padding-bottom: 0 !important; - } - - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - - .pb-md-3 { - padding-bottom: 1rem !important; - } - - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - - .pb-md-5 { - padding-bottom: 3rem !important; - } - - .ps-md-0 { - padding-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: 3rem !important; - } -} -@media (min-width: 992px) { - .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-table { - display: table !important; - } - - .d-lg-table-row { - display: table-row !important; - } - - .d-lg-table-cell { - display: table-cell !important; - } - - .d-lg-flex { - display: flex !important; - } - - .d-lg-inline-flex { - display: inline-flex !important; - } - - .d-lg-none { - display: none !important; - } - - .flex-lg-fill { - flex: 1 1 auto !important; - } - - .flex-lg-row { - flex-direction: row !important; - } - - .flex-lg-column { - flex-direction: column !important; - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-lg-wrap { - flex-wrap: wrap !important; - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-lg-start { - justify-content: flex-start !important; - } - - .justify-content-lg-end { - justify-content: flex-end !important; - } - - .justify-content-lg-center { - justify-content: center !important; - } - - .justify-content-lg-between { - justify-content: space-between !important; - } - - .justify-content-lg-around { - justify-content: space-around !important; - } - - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - - .align-items-lg-start { - align-items: flex-start !important; - } - - .align-items-lg-end { - align-items: flex-end !important; - } - - .align-items-lg-center { - align-items: center !important; - } - - .align-items-lg-baseline { - align-items: baseline !important; - } - - .align-items-lg-stretch { - align-items: stretch !important; - } - - .align-content-lg-start { - align-content: flex-start !important; - } - - .align-content-lg-end { - align-content: flex-end !important; - } - - .align-content-lg-center { - align-content: center !important; - } - - .align-content-lg-between { - align-content: space-between !important; - } - - .align-content-lg-around { - align-content: space-around !important; - } - - .align-content-lg-stretch { - align-content: stretch !important; - } - - .align-self-lg-auto { - align-self: auto !important; - } - - .align-self-lg-start { - align-self: flex-start !important; - } - - .align-self-lg-end { - align-self: flex-end !important; - } - - .align-self-lg-center { - align-self: center !important; - } - - .align-self-lg-baseline { - align-self: baseline !important; - } - - .align-self-lg-stretch { - align-self: stretch !important; - } - - .order-lg-first { - order: -1 !important; - } - - .order-lg-0 { - order: 0 !important; - } - - .order-lg-1 { - order: 1 !important; - } - - .order-lg-2 { - order: 2 !important; - } - - .order-lg-3 { - order: 3 !important; - } - - .order-lg-4 { - order: 4 !important; - } - - .order-lg-5 { - order: 5 !important; - } - - .order-lg-last { - order: 6 !important; - } - - .m-lg-0 { - margin: 0 !important; - } - - .m-lg-1 { - margin: 0.25rem !important; - } - - .m-lg-2 { - margin: 0.5rem !important; - } - - .m-lg-3 { - margin: 1rem !important; - } - - .m-lg-4 { - margin: 1.5rem !important; - } - - .m-lg-5 { - margin: 3rem !important; - } - - .m-lg-auto { - margin: auto !important; - } - - .mx-lg-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; - } - - .mx-lg-auto { - margin-left: auto !important; - margin-right: auto !important; - } - - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-lg-0 { - margin-top: 0 !important; - } - - .mt-lg-1 { - margin-top: 0.25rem !important; - } - - .mt-lg-2 { - margin-top: 0.5rem !important; - } - - .mt-lg-3 { - margin-top: 1rem !important; - } - - .mt-lg-4 { - margin-top: 1.5rem !important; - } - - .mt-lg-5 { - margin-top: 3rem !important; - } - - .mt-lg-auto { - margin-top: auto !important; - } - - .me-lg-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; - } - - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-lg-0 { - padding-top: 0 !important; - } - - .pt-lg-1 { - padding-top: 0.25rem !important; - } - - .pt-lg-2 { - padding-top: 0.5rem !important; - } - - .pt-lg-3 { - padding-top: 1rem !important; - } - - .pt-lg-4 { - padding-top: 1.5rem !important; - } - - .pt-lg-5 { - padding-top: 3rem !important; - } - - .pe-lg-0 { - padding-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: 3rem !important; - } - - .pb-lg-0 { - padding-bottom: 0 !important; - } - - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - - .pb-lg-3 { - padding-bottom: 1rem !important; - } - - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - - .pb-lg-5 { - padding-bottom: 3rem !important; - } - - .ps-lg-0 { - padding-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: 3rem !important; - } -} -@media (min-width: 1200px) { - .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-table { - display: table !important; - } - - .d-xl-table-row { - display: table-row !important; - } - - .d-xl-table-cell { - display: table-cell !important; - } - - .d-xl-flex { - display: flex !important; - } - - .d-xl-inline-flex { - display: inline-flex !important; - } - - .d-xl-none { - display: none !important; - } - - .flex-xl-fill { - flex: 1 1 auto !important; - } - - .flex-xl-row { - flex-direction: row !important; - } - - .flex-xl-column { - flex-direction: column !important; - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xl-wrap { - flex-wrap: wrap !important; - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-xl-start { - justify-content: flex-start !important; - } - - .justify-content-xl-end { - justify-content: flex-end !important; - } - - .justify-content-xl-center { - justify-content: center !important; - } - - .justify-content-xl-between { - justify-content: space-between !important; - } - - .justify-content-xl-around { - justify-content: space-around !important; - } - - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xl-start { - align-items: flex-start !important; - } - - .align-items-xl-end { - align-items: flex-end !important; - } - - .align-items-xl-center { - align-items: center !important; - } - - .align-items-xl-baseline { - align-items: baseline !important; - } - - .align-items-xl-stretch { - align-items: stretch !important; - } - - .align-content-xl-start { - align-content: flex-start !important; - } - - .align-content-xl-end { - align-content: flex-end !important; - } - - .align-content-xl-center { - align-content: center !important; - } - - .align-content-xl-between { - align-content: space-between !important; - } - - .align-content-xl-around { - align-content: space-around !important; - } - - .align-content-xl-stretch { - align-content: stretch !important; - } - - .align-self-xl-auto { - align-self: auto !important; - } - - .align-self-xl-start { - align-self: flex-start !important; - } - - .align-self-xl-end { - align-self: flex-end !important; - } - - .align-self-xl-center { - align-self: center !important; - } - - .align-self-xl-baseline { - align-self: baseline !important; - } - - .align-self-xl-stretch { - align-self: stretch !important; - } - - .order-xl-first { - order: -1 !important; - } - - .order-xl-0 { - order: 0 !important; - } - - .order-xl-1 { - order: 1 !important; - } - - .order-xl-2 { - order: 2 !important; - } - - .order-xl-3 { - order: 3 !important; - } - - .order-xl-4 { - order: 4 !important; - } - - .order-xl-5 { - order: 5 !important; - } - - .order-xl-last { - order: 6 !important; - } - - .m-xl-0 { - margin: 0 !important; - } - - .m-xl-1 { - margin: 0.25rem !important; - } - - .m-xl-2 { - margin: 0.5rem !important; - } - - .m-xl-3 { - margin: 1rem !important; - } - - .m-xl-4 { - margin: 1.5rem !important; - } - - .m-xl-5 { - margin: 3rem !important; - } - - .m-xl-auto { - margin: auto !important; - } - - .mx-xl-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; - } - - .mx-xl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xl-0 { - margin-top: 0 !important; - } - - .mt-xl-1 { - margin-top: 0.25rem !important; - } - - .mt-xl-2 { - margin-top: 0.5rem !important; - } - - .mt-xl-3 { - margin-top: 1rem !important; - } - - .mt-xl-4 { - margin-top: 1.5rem !important; - } - - .mt-xl-5 { - margin-top: 3rem !important; - } - - .mt-xl-auto { - margin-top: auto !important; - } - - .me-xl-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; - } - - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xl-0 { - padding-top: 0 !important; - } - - .pt-xl-1 { - padding-top: 0.25rem !important; - } - - .pt-xl-2 { - padding-top: 0.5rem !important; - } - - .pt-xl-3 { - padding-top: 1rem !important; - } - - .pt-xl-4 { - padding-top: 1.5rem !important; - } - - .pt-xl-5 { - padding-top: 3rem !important; - } - - .pe-xl-0 { - padding-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: 3rem !important; - } - - .pb-xl-0 { - padding-bottom: 0 !important; - } - - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xl-3 { - padding-bottom: 1rem !important; - } - - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xl-5 { - padding-bottom: 3rem !important; - } - - .ps-xl-0 { - padding-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: 3rem !important; - } -} -@media (min-width: 1400px) { - .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-table { - display: table !important; - } - - .d-xxl-table-row { - display: table-row !important; - } - - .d-xxl-table-cell { - display: table-cell !important; - } - - .d-xxl-flex { - display: flex !important; - } - - .d-xxl-inline-flex { - display: inline-flex !important; - } - - .d-xxl-none { - display: none !important; - } - - .flex-xxl-fill { - flex: 1 1 auto !important; - } - - .flex-xxl-row { - flex-direction: row !important; - } - - .flex-xxl-column { - flex-direction: column !important; - } - - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .justify-content-xxl-start { - justify-content: flex-start !important; - } - - .justify-content-xxl-end { - justify-content: flex-end !important; - } - - .justify-content-xxl-center { - justify-content: center !important; - } - - .justify-content-xxl-between { - justify-content: space-between !important; - } - - .justify-content-xxl-around { - justify-content: space-around !important; - } - - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xxl-start { - align-items: flex-start !important; - } - - .align-items-xxl-end { - align-items: flex-end !important; - } - - .align-items-xxl-center { - align-items: center !important; - } - - .align-items-xxl-baseline { - align-items: baseline !important; - } - - .align-items-xxl-stretch { - align-items: stretch !important; - } - - .align-content-xxl-start { - align-content: flex-start !important; - } - - .align-content-xxl-end { - align-content: flex-end !important; - } - - .align-content-xxl-center { - align-content: center !important; - } - - .align-content-xxl-between { - align-content: space-between !important; - } - - .align-content-xxl-around { - align-content: space-around !important; - } - - .align-content-xxl-stretch { - align-content: stretch !important; - } - - .align-self-xxl-auto { - align-self: auto !important; - } - - .align-self-xxl-start { - align-self: flex-start !important; - } - - .align-self-xxl-end { - align-self: flex-end !important; - } - - .align-self-xxl-center { - align-self: center !important; - } - - .align-self-xxl-baseline { - align-self: baseline !important; - } - - .align-self-xxl-stretch { - align-self: stretch !important; - } - - .order-xxl-first { - order: -1 !important; - } - - .order-xxl-0 { - order: 0 !important; - } - - .order-xxl-1 { - order: 1 !important; - } - - .order-xxl-2 { - order: 2 !important; - } - - .order-xxl-3 { - order: 3 !important; - } - - .order-xxl-4 { - order: 4 !important; - } - - .order-xxl-5 { - order: 5 !important; - } - - .order-xxl-last { - order: 6 !important; - } - - .m-xxl-0 { - margin: 0 !important; - } - - .m-xxl-1 { - margin: 0.25rem !important; - } - - .m-xxl-2 { - margin: 0.5rem !important; - } - - .m-xxl-3 { - margin: 1rem !important; - } - - .m-xxl-4 { - margin: 1.5rem !important; - } - - .m-xxl-5 { - margin: 3rem !important; - } - - .m-xxl-auto { - margin: auto !important; - } - - .mx-xxl-0 { - margin-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: 3rem !important; - margin-right: 3rem !important; - } - - .mx-xxl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xxl-0 { - margin-top: 0 !important; - } - - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - - .mt-xxl-3 { - margin-top: 1rem !important; - } - - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - - .mt-xxl-5 { - margin-top: 3rem !important; - } - - .mt-xxl-auto { - margin-top: auto !important; - } - - .me-xxl-0 { - margin-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: 3rem !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: 3rem !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: 3rem !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: 3rem !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: 3rem !important; - padding-right: 3rem !important; - } - - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xxl-0 { - padding-top: 0 !important; - } - - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - - .pt-xxl-3 { - padding-top: 1rem !important; - } - - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - - .pt-xxl-5 { - padding-top: 3rem !important; - } - - .pe-xxl-0 { - padding-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: 3rem !important; - } - - .pb-xxl-0 { - padding-bottom: 0 !important; - } - - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - - .ps-xxl-0 { - padding-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: 3rem !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-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; - } -} -/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css.map b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css.map deleted file mode 100644 index c4152a49e..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap-grid.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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AA;EAAA,+BAAA;AL8vDV;;AKhwDM;EAEI,yBAAA;ALkwDV;;AKpwDM;EAEI,+BAAA;ALswDV;;AKxwDM;EAEI,8BAAA;AL0wDV;;AK5wDM;EAEI,4BAAA;AL8wDV;;AKhxDM;EAEI,8BAAA;ALkxDV;;AKpxDM;EAEI,4BAAA;ALsxDV;;AKxxDM;EAEI,0BAAA;AL0xDV;;AK5xDM;EAEI,gCAAA;AL8xDV;;AKhyDM;EAEI,+BAAA;ALkyDV;;AKpyDM;EAEI,6BAAA;ALsyDV;;AKxyDM;EAEI,+BAAA;AL0yDV;;AK5yDM;EAEI,6BAAA;AL8yDV;;AKhzDM;EAEI,4BAAA;ALkzDV;;AKpzDM;EAEI,kCAAA;ALszDV;;AKxzDM;EAEI,iCAAA;AL0zDV;;AK5zDM;EAEI,+BAAA;AL8zDV;;AKh0DM;EAEI,iCAAA;ALk0DV;;AKp0DM;EAEI,+BAAA;ALs0DV;;AKx0DM;EAEI,2BAAA;AL00DV;;AK50DM;EAEI,iCAAA;AL80DV;;AKh1DM;EAEI,gCAAA;ALk1DV;;AKp1DM;EAEI,8BAAA;ALs1DV;;AKx1DM;EAEI,gCAAA;AL01DV;;AK51DM;EAEI,8BAAA;AL81DV;;ACl1DI;EIdE;IAEI,0BAAA;ELm2DR;;EKr2DI;IAEI,gCAAA;ELu2DR;;EKz2DI;IAEI,yBAAA;EL22DR;;EK72DI;IAEI,wBAAA;EL+2DR;;EKj3DI;IAEI,yBAAA;ELm3DR;;EKr3DI;IAEI,6BAAA;ELu3DR;;EKz3DI;IAEI,8BAAA;EL23DR;;EK73DI;IAEI,wBAAA;EL+3DR;;EKj4DI;IAEI,+BAAA;ELm4DR;;EKr4DI;IAEI,wBAAA;ELu4DR;;EKz4DI;IAEI,yBAAA;EL24DR;;EK74DI;IAEI,8BAAA;EL+4DR;;EKj5DI;IAEI,iCAAA;ELm5DR;;EKr5DI;IAEI,sCAAA;ELu5DR;;EKz5DI;IAEI,yCAAA;EL25DR;;EK75DI;IAEI,uBAAA;EL+5DR;;EKj6DI;IAEI,uBAAA;ELm6DR;;EKr6DI;IAEI,yBAAA;ELu6DR;;EKz6DI;IAEI,yBAAA;EL26DR;;EK76DI;IAEI,0BAAA;EL+6DR;;EKj7DI;IAEI,4BAAA;ELm7DR;;EKr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;IAEI,yBAAA;EL88ER;;EKh9EI;IAEI,6BAAA;ELk9ER;;EKp9EI;IAEI,8BAAA;ELs9ER;;EKx9EI;IAEI,wBAAA;EL09ER;;EK59EI;IAEI,+BAAA;EL89ER;;EKh+EI;IAEI,wBAAA;ELk+ER;;EKp+EI;IAEI,yBAAA;ELs+ER;;EKx+EI;IAEI,8BAAA;EL0+ER;;EK5+EI;IAEI,iCAAA;EL8+ER;;EKh/EI;IAEI,sCAAA;ELk/ER;;EKp/EI;IAEI,yCAAA;ELs/ER;;EKx/EI;IAEI,uBAAA;EL0/ER;;EK5/EI;IAEI,uBAAA;EL8/ER;;EKhgFI;IAEI,yBAAA;ELkgFR;;EKpgFI;IAEI,yBAAA;ELsgFR;;EKxgFI;IAEI,0BAAA;EL0gFR;;EK5gFI;IAEI,4BAAA;EL8gFR;;EKhhFI;IAEI,kCAAA;ELkhFR;;EKphFI;IAEI,sCAAA;ELshFR;;EKxhFI;IAEI,oCAAA;EL0hFR;;EK5hFI;IAEI,kCAAA;EL8hFR;;EKhiFI;IAEI,yCAAA;ELkiFR;;EKpiFI;IAEI,wCAAA;ELsiFR;;EKxiFI;IAEI,wCAAA;EL0iFR;;EK5iFI;IAEI,kCAAA;EL8iFR;;EKhjFI;IAEI,gCAAA;ELkjFR;;EKpjFI;IAEI,8BAAA;ELsjFR;;EKxjFI;IAEI,gCAAA;EL0jFR;;EK5jFI;IAEI,+BAAA;EL8jFR;;EKhkFI;IAEI,oCAAA;ELkkFR;;EKpkFI;IAEI,kCAAA;ELskFR;;EKxkFI;IAEI,gCAAA;EL0kFR;;EK5kFI;IAEI,uCAAA;EL8kFR;;EKhlFI;IAEI,sCAAA;ELklFR;;EKplFI;IAEI,iCAAA;ELslFR;;EKxlFI;IAEI,2BAAA;EL0lFR;;EK5lFI;IAEI,iCAAA;EL8lFR;;EKhmFI;IAEI,+BAAA;ELkmFR;;EKpmFI;IAEI,6BAAA;ELsmFR;;EKxmFI;IAEI,+BAAA;EL0mFR;;EK5mFI;IAEI,8BAAA;EL8mFR;;EKhnFI;IAEI,oBAAA;ELknFR;;EKpnFI;IAEI,mBAAA;ELsnFR;;EKxnFI;IAEI,mBAAA;EL0nFR;;EK5nFI;IAEI,mBAAA;EL8nFR;;EKhoFI;IAEI,mBAAA;ELkoFR;;EKpoFI;IAE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ELo+FR;;EKt+FI;IAEI,4BAAA;ELw+FR;;EK1+FI;IAEI,kCAAA;EL4+FR;;EK9+FI;IAEI,iCAAA;ELg/FR;;EKl/FI;IAEI,+BAAA;ELo/FR;;EKt/FI;IAEI,iCAAA;ELw/FR;;EK1/FI;IAEI,+BAAA;EL4/FR;;EK9/FI;IAEI,2BAAA;ELggGR;;EKlgGI;IAEI,iCAAA;ELogGR;;EKtgGI;IAEI,gCAAA;ELwgGR;;EK1gGI;IAEI,8BAAA;EL4gGR;;EK9gGI;IAEI,gCAAA;ELghGR;;EKlhGI;IAEI,8BAAA;ELohGR;AACF;ACzgGI;EIdE;IAEI,0BAAA;ELyhGR;;EK3hGI;IAEI,gCAAA;EL6hGR;;EK/hGI;IAEI,yBAAA;ELiiGR;;EKniGI;IAEI,wBAAA;ELqiGR;;EKviGI;IAEI,yBAAA;ELyiGR;;EK3iGI;IAEI,6BAAA;EL6iGR;;EK/iGI;IAEI,8BAAA;ELijGR;;EKnjGI;IAEI,wBAAA;ELqjGR;;EKvjGI;IAEI,+BAAA;ELyjGR;;EK3jGI;IAEI,wBAAA;EL6jGR;;EK/jGI;IAEI,yBAAA;ELikGR;;EKnkGI;IAEI,8BAAA;ELqkGR;;EKvkGI;IAEI,iCAAA;ELykGR;;EK3kGI;IAEI,sCAAA;EL6kGR;;EK/kGI;IAEI,yCAAA;ELilGR;;EKnlGI;IAEI,uBAAA;ELqlGR;;EKvlGI;IAEI,uBAAA;ELylGR;;EK3lGI;IAEI,yBAAA;EL6lGR;;EK/lGI;IAEI,yBAAA;ELimGR;;EKnmGI;IAEI,0BAAA;ELqmGR;;EKvmGI;IAEI,4BAAA;ELymGR;;EK3mGI;IAEI,kCAAA;EL6mGR;;EK/mGI;IAEI,sCAAA;ELinGR;;EKnnGI;IAEI,oCAAA;ELqnGR;;EKvnGI;IAEI,kCAAA;ELynGR;;EK3nGI;IAEI,yCAAA;EL6nGR;;EK/nGI;IAEI,wCAAA;ELioGR;;EKnoGI;IAEI,wCAAA;ELqoGR;;EKvoGI;IAEI,kCAAA;ELyoGR;;EK3oGI;IAEI,gCAAA;EL6oGR;;EK/oGI;IAEI,8BAAA;ELipGR;;EKnpGI;IAEI,gCAAA;ELqpGR;;EKvpGI;IAEI,+BAAA;ELypGR;;EK3pGI;IAEI,o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F;AC/rII;EIdE;IAEI,0BAAA;EL+sIR;;EKjtII;IAEI,gCAAA;ELmtIR;;EKrtII;IAEI,yBAAA;ELutIR;;EKztII;IAEI,wBAAA;EL2tIR;;EK7tII;IAEI,yBAAA;EL+tIR;;EKjuII;IAEI,6BAAA;ELmuIR;;EKruII;IAEI,8BAAA;ELuuIR;;EKzuII;IAEI,wBAAA;EL2uIR;;EK7uII;IAEI,+BAAA;EL+uIR;;EKjvII;IAEI,wBAAA;ELmvIR;;EKrvII;IAEI,yBAAA;ELuvIR;;EKzvII;IAEI,8BAAA;EL2vIR;;EK7vII;IAEI,iCAAA;EL+vIR;;EKjwII;IAEI,sCAAA;ELmwIR;;EKrwII;IAEI,yCAAA;ELuwIR;;EKzwII;IAEI,uBAAA;EL2wIR;;EK7wII;IAEI,uBAAA;EL+wIR;;EKjxII;IAEI,yBAAA;ELmxIR;;EKrxII;IAEI,yBAAA;ELuxIR;;EKzxII;IAEI,0BAAA;EL2xIR;;EK7xII;IAEI,4BAAA;EL+xIR;;EKjyII;IAEI,kCAAA;ELmyIR;;EKryII;IAEI,sCAAA;ELuyIR;;EKzyII;IAEI,oCAAA;EL2yIR;;EK7yII;IAEI,kCAAA;EL+yIR;;EKjzII;IAEI,yCAAA;ELmzIR;;EKrzII;IAEI,wCAAA;ELuzIR;;EKzzII;IAEI,wCAAA;EL2zIR;;EK7zII;IAEI,kCAAA;EL+zIR;;EKj0II;IAEI,gCAAA;ELm0IR;;EKr0II;IAEI,8BAAA;ELu0IR;;EKz0II;IAEI,gCAAA;EL20IR;;EK70II;IAEI,+BAAA;EL+0IR;;EKj1II;IAEI,oCAAA;ELm1IR;;EKr1II;IAEI,kCAAA;ELu1IR;;EKz1II;IAEI,gCAAA;EL21IR;;EK71II;IAEI,uCAAA;EL+1IR;;EKj2II;IAEI,sCAAA;ELm2IR;;EKr2II;IAEI,iCAAA;ELu2IR;;EKz2II;IAEI,2BAAA;EL22IR;;EK72II;IAEI,iCAAA;EL+2IR;;EKj3II;IAEI,+BAAA;ELm3IR;;EKr3II;IAEI,6BAAA;ELu3IR;;EKz3II;IAEI,+BAAA;EL23IR;;EK73II;IAEI,8BAAA;EL+3IR;;EKj4II;IAEI,oBAAA;ELm4I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","file":"bootstrap-grid.rtl.css","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n width: 100%;\n padding-right: var(--bs-gutter-x, 0.75rem);\n padding-left: var(--bs-gutter-x, 0.75rem);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--bs-gutter-y) * -1);\n margin-right: calc(var(--bs-gutter-x) / -2);\n margin-left: calc(var(--bs-gutter-x) / -2);\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) / 2);\n padding-left: calc(var(--bs-gutter-x) / 2);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.3333333333%;\n}\n\n.offset-2 {\n margin-left: 16.6666666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.3333333333%;\n}\n\n.offset-5 {\n margin-left: 41.6666666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.3333333333%;\n}\n\n.offset-8 {\n margin-left: 66.6666666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.3333333333%;\n}\n\n.offset-11 {\n margin-left: 91.6666666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-left: 0;\n }\n\n .offset-sm-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-sm-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-sm-3 {\n margin-left: 25%;\n }\n\n .offset-sm-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-sm-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-sm-6 {\n margin-left: 50%;\n }\n\n .offset-sm-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-sm-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-sm-9 {\n margin-left: 75%;\n }\n\n .offset-sm-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-sm-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-sm-0,\n.gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0,\n.gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1,\n.gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-sm-1,\n.gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-sm-2,\n.gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-sm-2,\n.gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-sm-3,\n.gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3,\n.gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4,\n.gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4,\n.gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5,\n.gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5,\n.gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-left: 0;\n }\n\n .offset-md-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-md-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-md-3 {\n margin-left: 25%;\n }\n\n .offset-md-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-md-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-md-6 {\n margin-left: 50%;\n }\n\n .offset-md-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-md-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-md-9 {\n margin-left: 75%;\n }\n\n .offset-md-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-md-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-md-0,\n.gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0,\n.gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1,\n.gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-md-1,\n.gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-md-2,\n.gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-md-2,\n.gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-md-3,\n.gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3,\n.gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4,\n.gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4,\n.gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5,\n.gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5,\n.gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-left: 0;\n }\n\n .offset-lg-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-lg-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-lg-3 {\n margin-left: 25%;\n }\n\n .offset-lg-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-lg-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-lg-6 {\n margin-left: 50%;\n }\n\n .offset-lg-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-lg-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-lg-9 {\n margin-left: 75%;\n }\n\n .offset-lg-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-lg-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-lg-0,\n.gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0,\n.gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1,\n.gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-lg-1,\n.gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-lg-2,\n.gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-lg-2,\n.gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-lg-3,\n.gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3,\n.gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4,\n.gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4,\n.gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5,\n.gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5,\n.gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-left: 0;\n }\n\n .offset-xl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xl-3 {\n margin-left: 25%;\n }\n\n .offset-xl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xl-6 {\n margin-left: 50%;\n }\n\n .offset-xl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xl-9 {\n margin-left: 75%;\n }\n\n .offset-xl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xl-0,\n.gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0,\n.gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1,\n.gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xl-1,\n.gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xl-2,\n.gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xl-2,\n.gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xl-3,\n.gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3,\n.gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4,\n.gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4,\n.gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5,\n.gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5,\n.gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-left: 0;\n }\n\n .offset-xxl-1 {\n margin-left: 8.3333333333%;\n }\n\n .offset-xxl-2 {\n margin-left: 16.6666666667%;\n }\n\n .offset-xxl-3 {\n margin-left: 25%;\n }\n\n .offset-xxl-4 {\n margin-left: 33.3333333333%;\n }\n\n .offset-xxl-5 {\n margin-left: 41.6666666667%;\n }\n\n .offset-xxl-6 {\n margin-left: 50%;\n }\n\n .offset-xxl-7 {\n margin-left: 58.3333333333%;\n }\n\n .offset-xxl-8 {\n margin-left: 66.6666666667%;\n }\n\n .offset-xxl-9 {\n margin-left: 75%;\n }\n\n .offset-xxl-10 {\n margin-left: 83.3333333333%;\n }\n\n .offset-xxl-11 {\n margin-left: 91.6666666667%;\n }\n\n .g-xxl-0,\n.gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0,\n.gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1,\n.gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xxl-1,\n.gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xxl-2,\n.gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xxl-2,\n.gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xxl-3,\n.gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3,\n.gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4,\n.gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4,\n.gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5,\n.gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5,\n.gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-right: 0 !important;\n }\n\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n\n .me-sm-auto {\n margin-right: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-left: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: 0.25rem !important;\n }\n\n .m-md-2 {\n margin: 0.5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-right: 0 !important;\n }\n\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-md-3 {\n margin-right: 1rem !important;\n }\n\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-right: 3rem !important;\n }\n\n .me-md-auto {\n margin-right: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-left: 0 !important;\n }\n\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n\n .ms-md-auto {\n margin-left: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: 0.25rem !important;\n }\n\n .p-md-2 {\n padding: 0.5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-right: 0 !important;\n }\n\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-left: 0 !important;\n }\n\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-right: 0 !important;\n }\n\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n\n .me-lg-auto {\n margin-right: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-left: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-right: 0 !important;\n }\n\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xl-auto {\n margin-right: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-left: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-right: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer / 4,\n 2: $spacer / 2,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n$body-text-align: null !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width / 2 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n\n$border-color: $gray-300 !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .25rem !default;\n$border-radius-sm: .2rem !default;\n$border-radius-lg: .3rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins\n// $font-size-base effects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: $gray-600 !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n$hr-height: $border-width !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: $body-color !default;\n$table-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-striped-order: odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: $link-color !default;\n$btn-link-hover-color: $link-hover-color !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n$input-disabled-border-color: null !default;\n\n$input-color: $body-color !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: 1px solid rgba(0, 0, 0, .25) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba(0, 0, 0, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: $gray-300 !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: $gray-500 !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: $input-group-addon-bg !default;\n$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas: 1040 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1060 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: null !default;\n$nav-link-hover-color: null !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .55) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer / 2 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg: $gray-200 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer / 4 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-radius: $border-radius !default;\n$pagination-margin-start: -$pagination-border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-color: $link-hover-color !default;\n$pagination-focus-bg: $gray-200 !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer / 2 !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y / 2 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width / 2 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: $body-color !default;\n$accordion-bg: $body-bg !default;\n$accordion-border-width: $border-width !default;\n$accordion-border-color: rgba($black, .125) !default;\n$accordion-border-radius: $border-radius !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: $accordion-color !default;\n$accordion-button-bg: $accordion-bg !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color: shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $accordion-color !default;\n$accordion-icon-active-color: $accordion-button-active-color !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer / 4 !default;\n$tooltip-padding-x: $spacer / 2 !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-start tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-bg: shade-color($popover-bg, 6%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: $border-radius !default;\n$toast-box-shadow: $box-shadow !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: $box-shadow-inset !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: $gray-900 !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: $spacer / 2 !default;\n$list-group-item-padding-x: $spacer !default;\n$list-group-item-bg-scale: -80% !default;\n$list-group-item-color-scale: 40% !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: $modal-content-bg !default;\n$offcanvas-color: $modal-content-color !default;\n$offcanvas-body-backdrop-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css deleted file mode 100644 index 98a55636b..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-left:var(--bs-gutter-x,.75rem);padding-right:var(--bs-gutter-x,.75rem);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}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-left:calc(var(--bs-gutter-x)/ -2);margin-right:calc(var(--bs-gutter-x)/ -2)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x)/ 2);padding-right:calc(var(--bs-gutter-x)/ 2);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-2{flex:0 0 auto;width:16.6666666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.3333333333%}.col-5{flex:0 0 auto;width:41.6666666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.3333333333%}.col-8{flex:0 0 auto;width:66.6666666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.3333333333%}.col-11{flex:0 0 auto;width:91.6666666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.3333333333%}.offset-2{margin-right:16.6666666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.3333333333%}.offset-5{margin-right:41.6666666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.3333333333%}.offset-8{margin-right:66.6666666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.3333333333%}.offset-11{margin-right:91.6666666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-sm-2{flex:0 0 auto;width:16.6666666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.3333333333%}.col-sm-5{flex:0 0 auto;width:41.6666666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.3333333333%}.col-sm-8{flex:0 0 auto;width:66.6666666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.3333333333%}.col-sm-11{flex:0 0 auto;width:91.6666666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.3333333333%}.offset-sm-2{margin-right:16.6666666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.3333333333%}.offset-sm-5{margin-right:41.6666666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.3333333333%}.offset-sm-8{margin-right:66.6666666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.3333333333%}.offset-sm-11{margin-right:91.6666666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-md-2{flex:0 0 auto;width:16.6666666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.3333333333%}.col-md-5{flex:0 0 auto;width:41.6666666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.3333333333%}.col-md-8{flex:0 0 auto;width:66.6666666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.3333333333%}.col-md-11{flex:0 0 auto;width:91.6666666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.3333333333%}.offset-md-2{margin-right:16.6666666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.3333333333%}.offset-md-5{margin-right:41.6666666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.3333333333%}.offset-md-8{margin-right:66.6666666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.3333333333%}.offset-md-11{margin-right:91.6666666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-lg-2{flex:0 0 auto;width:16.6666666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.3333333333%}.col-lg-5{flex:0 0 auto;width:41.6666666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.3333333333%}.col-lg-8{flex:0 0 auto;width:66.6666666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.3333333333%}.col-lg-11{flex:0 0 auto;width:91.6666666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.3333333333%}.offset-lg-2{margin-right:16.6666666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.3333333333%}.offset-lg-5{margin-right:41.6666666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.3333333333%}.offset-lg-8{margin-right:66.6666666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.3333333333%}.offset-lg-11{margin-right:91.6666666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-xl-2{flex:0 0 auto;width:16.6666666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.3333333333%}.col-xl-5{flex:0 0 auto;width:41.6666666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.3333333333%}.col-xl-8{flex:0 0 auto;width:66.6666666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.3333333333%}.col-xl-11{flex:0 0 auto;width:91.6666666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.3333333333%}.offset-xl-2{margin-right:16.6666666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.3333333333%}.offset-xl-5{margin-right:41.6666666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.3333333333%}.offset-xl-8{margin-right:66.6666666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.3333333333%}.offset-xl-11{margin-right:91.6666666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.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.3333333333%}.col-xxl-2{flex:0 0 auto;width:16.6666666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.3333333333%}.col-xxl-5{flex:0 0 auto;width:41.6666666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.3333333333%}.col-xxl-8{flex:0 0 auto;width:66.6666666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.3333333333%}.col-xxl-11{flex:0 0 auto;width:91.6666666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.3333333333%}.offset-xxl-2{margin-right:16.6666666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.3333333333%}.offset-xxl-5{margin-right:41.6666666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.3333333333%}.offset-xxl-8{margin-right:66.6666666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.3333333333%}.offset-xxl-11{margin-right:91.6666666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display: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}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-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:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-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:3rem!important}@media (min-width:576px){.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-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-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:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-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:3rem!important}}@media (min-width:768px){.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-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-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:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-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:3rem!important}}@media (min-width:992px){.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-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-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:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-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:3rem!important}}@media (min-width:1200px){.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-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-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:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-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:3rem!important}}@media (min-width:1400px){.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-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-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:3rem!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:3rem!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:3rem!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:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-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:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-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:3rem!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-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}} -/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map deleted file mode 100644 index 89face106..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../scss/bootstrap-grid.scss","../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../scss/mixins/_container.scss","../scss/mixins/_breakpoints.scss","../scss/_grid.scss","../scss/mixins/_grid.scss","../scss/mixins/_utilities.scss","../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n$include-column-box-sizing: true !default;\n\n@import \"functions\";\n@import \"variables\";\n\n@import \"mixins/lists\";\n@import \"mixins/breakpoints\";\n@import \"mixins/container\";\n@import \"mixins/grid\";\n@import \"mixins/utilities\";\n\n@import \"vendor/rfs\";\n\n@import \"containers\";\n@import \"grid\";\n\n@import \"utilities\";\n// Only use the utilities we need\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n);\n\n@import \"utilities/api\";\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n width: 100%;\n padding-left: var(--bs-gutter-x, 0.75rem);\n padding-right: var(--bs-gutter-x, 0.75rem);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--bs-gutter-y) * -1);\n margin-left: calc(var(--bs-gutter-x) / -2);\n margin-right: calc(var(--bs-gutter-x) / -2);\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) / 2);\n padding-right: calc(var(--bs-gutter-x) / 2);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.3333333333%;\n}\n\n.offset-2 {\n margin-right: 16.6666666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.3333333333%;\n}\n\n.offset-5 {\n margin-right: 41.6666666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.3333333333%;\n}\n\n.offset-8 {\n margin-right: 66.6666666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.3333333333%;\n}\n\n.offset-11 {\n margin-right: 91.6666666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-sm-0 {\n margin-right: 0;\n }\n\n .offset-sm-1 {\n margin-right: 8.3333333333%;\n }\n\n .offset-sm-2 {\n margin-right: 16.6666666667%;\n }\n\n .offset-sm-3 {\n margin-right: 25%;\n }\n\n .offset-sm-4 {\n margin-right: 33.3333333333%;\n }\n\n .offset-sm-5 {\n margin-right: 41.6666666667%;\n }\n\n .offset-sm-6 {\n margin-right: 50%;\n }\n\n .offset-sm-7 {\n margin-right: 58.3333333333%;\n }\n\n .offset-sm-8 {\n margin-right: 66.6666666667%;\n }\n\n .offset-sm-9 {\n margin-right: 75%;\n }\n\n .offset-sm-10 {\n margin-right: 83.3333333333%;\n }\n\n .offset-sm-11 {\n margin-right: 91.6666666667%;\n }\n\n .g-sm-0,\n.gx-sm-0 {\n --bs-gutter-x: 0;\n }\n\n .g-sm-0,\n.gy-sm-0 {\n --bs-gutter-y: 0;\n }\n\n .g-sm-1,\n.gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-sm-1,\n.gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-sm-2,\n.gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-sm-2,\n.gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-sm-3,\n.gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-sm-3,\n.gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-sm-4,\n.gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-sm-4,\n.gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-sm-5,\n.gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-sm-5,\n.gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-md-0 {\n margin-right: 0;\n }\n\n .offset-md-1 {\n margin-right: 8.3333333333%;\n }\n\n .offset-md-2 {\n margin-right: 16.6666666667%;\n }\n\n .offset-md-3 {\n margin-right: 25%;\n }\n\n .offset-md-4 {\n margin-right: 33.3333333333%;\n }\n\n .offset-md-5 {\n margin-right: 41.6666666667%;\n }\n\n .offset-md-6 {\n margin-right: 50%;\n }\n\n .offset-md-7 {\n margin-right: 58.3333333333%;\n }\n\n .offset-md-8 {\n margin-right: 66.6666666667%;\n }\n\n .offset-md-9 {\n margin-right: 75%;\n }\n\n .offset-md-10 {\n margin-right: 83.3333333333%;\n }\n\n .offset-md-11 {\n margin-right: 91.6666666667%;\n }\n\n .g-md-0,\n.gx-md-0 {\n --bs-gutter-x: 0;\n }\n\n .g-md-0,\n.gy-md-0 {\n --bs-gutter-y: 0;\n }\n\n .g-md-1,\n.gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-md-1,\n.gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-md-2,\n.gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-md-2,\n.gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-md-3,\n.gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-md-3,\n.gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-md-4,\n.gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-md-4,\n.gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-md-5,\n.gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-md-5,\n.gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-lg-0 {\n margin-right: 0;\n }\n\n .offset-lg-1 {\n margin-right: 8.3333333333%;\n }\n\n .offset-lg-2 {\n margin-right: 16.6666666667%;\n }\n\n .offset-lg-3 {\n margin-right: 25%;\n }\n\n .offset-lg-4 {\n margin-right: 33.3333333333%;\n }\n\n .offset-lg-5 {\n margin-right: 41.6666666667%;\n }\n\n .offset-lg-6 {\n margin-right: 50%;\n }\n\n .offset-lg-7 {\n margin-right: 58.3333333333%;\n }\n\n .offset-lg-8 {\n margin-right: 66.6666666667%;\n }\n\n .offset-lg-9 {\n margin-right: 75%;\n }\n\n .offset-lg-10 {\n margin-right: 83.3333333333%;\n }\n\n .offset-lg-11 {\n margin-right: 91.6666666667%;\n }\n\n .g-lg-0,\n.gx-lg-0 {\n --bs-gutter-x: 0;\n }\n\n .g-lg-0,\n.gy-lg-0 {\n --bs-gutter-y: 0;\n }\n\n .g-lg-1,\n.gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-lg-1,\n.gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-lg-2,\n.gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-lg-2,\n.gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-lg-3,\n.gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-lg-3,\n.gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-lg-4,\n.gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-lg-4,\n.gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-lg-5,\n.gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-lg-5,\n.gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xl-0 {\n margin-right: 0;\n }\n\n .offset-xl-1 {\n margin-right: 8.3333333333%;\n }\n\n .offset-xl-2 {\n margin-right: 16.6666666667%;\n }\n\n .offset-xl-3 {\n margin-right: 25%;\n }\n\n .offset-xl-4 {\n margin-right: 33.3333333333%;\n }\n\n .offset-xl-5 {\n margin-right: 41.6666666667%;\n }\n\n .offset-xl-6 {\n margin-right: 50%;\n }\n\n .offset-xl-7 {\n margin-right: 58.3333333333%;\n }\n\n .offset-xl-8 {\n margin-right: 66.6666666667%;\n }\n\n .offset-xl-9 {\n margin-right: 75%;\n }\n\n .offset-xl-10 {\n margin-right: 83.3333333333%;\n }\n\n .offset-xl-11 {\n margin-right: 91.6666666667%;\n }\n\n .g-xl-0,\n.gx-xl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xl-0,\n.gy-xl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xl-1,\n.gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xl-1,\n.gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xl-2,\n.gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xl-2,\n.gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xl-3,\n.gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xl-3,\n.gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xl-4,\n.gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xl-4,\n.gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xl-5,\n.gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xl-5,\n.gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.3333333333%;\n }\n\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.6666666667%;\n }\n\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.3333333333%;\n }\n\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.6666666667%;\n }\n\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.3333333333%;\n }\n\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.6666666667%;\n }\n\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n\n .offset-xxl-0 {\n margin-right: 0;\n }\n\n .offset-xxl-1 {\n margin-right: 8.3333333333%;\n }\n\n .offset-xxl-2 {\n margin-right: 16.6666666667%;\n }\n\n .offset-xxl-3 {\n margin-right: 25%;\n }\n\n .offset-xxl-4 {\n margin-right: 33.3333333333%;\n }\n\n .offset-xxl-5 {\n margin-right: 41.6666666667%;\n }\n\n .offset-xxl-6 {\n margin-right: 50%;\n }\n\n .offset-xxl-7 {\n margin-right: 58.3333333333%;\n }\n\n .offset-xxl-8 {\n margin-right: 66.6666666667%;\n }\n\n .offset-xxl-9 {\n margin-right: 75%;\n }\n\n .offset-xxl-10 {\n margin-right: 83.3333333333%;\n }\n\n .offset-xxl-11 {\n margin-right: 91.6666666667%;\n }\n\n .g-xxl-0,\n.gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n\n .g-xxl-0,\n.gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n\n .g-xxl-1,\n.gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n\n .g-xxl-1,\n.gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n\n .g-xxl-2,\n.gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n\n .g-xxl-2,\n.gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n\n .g-xxl-3,\n.gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n\n .g-xxl-3,\n.gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n\n .g-xxl-4,\n.gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n\n .g-xxl-4,\n.gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n\n .g-xxl-5,\n.gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n\n .g-xxl-5,\n.gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n\n .d-sm-inline-block {\n display: inline-block !important;\n }\n\n .d-sm-block {\n display: block !important;\n }\n\n .d-sm-grid {\n display: grid !important;\n }\n\n .d-sm-table {\n display: table !important;\n }\n\n .d-sm-table-row {\n display: table-row !important;\n }\n\n .d-sm-table-cell {\n display: table-cell !important;\n }\n\n .d-sm-flex {\n display: flex !important;\n }\n\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n\n .d-sm-none {\n display: none !important;\n }\n\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-sm-row {\n flex-direction: row !important;\n }\n\n .flex-sm-column {\n flex-direction: column !important;\n }\n\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-sm-center {\n justify-content: center !important;\n }\n\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n\n .align-items-sm-center {\n align-items: center !important;\n }\n\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n\n .align-content-sm-center {\n align-content: center !important;\n }\n\n .align-content-sm-between {\n align-content: space-between !important;\n }\n\n .align-content-sm-around {\n align-content: space-around !important;\n }\n\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n\n .align-self-sm-auto {\n align-self: auto !important;\n }\n\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n\n .align-self-sm-center {\n align-self: center !important;\n }\n\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n\n .order-sm-first {\n order: -1 !important;\n }\n\n .order-sm-0 {\n order: 0 !important;\n }\n\n .order-sm-1 {\n order: 1 !important;\n }\n\n .order-sm-2 {\n order: 2 !important;\n }\n\n .order-sm-3 {\n order: 3 !important;\n }\n\n .order-sm-4 {\n order: 4 !important;\n }\n\n .order-sm-5 {\n order: 5 !important;\n }\n\n .order-sm-last {\n order: 6 !important;\n }\n\n .m-sm-0 {\n margin: 0 !important;\n }\n\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n\n .m-sm-3 {\n margin: 1rem !important;\n }\n\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n\n .m-sm-5 {\n margin: 3rem !important;\n }\n\n .m-sm-auto {\n margin: auto !important;\n }\n\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n\n .mt-sm-auto {\n margin-top: auto !important;\n }\n\n .me-sm-0 {\n margin-left: 0 !important;\n }\n\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n\n .me-sm-auto {\n margin-left: auto !important;\n }\n\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n\n .ms-sm-auto {\n margin-right: auto !important;\n }\n\n .p-sm-0 {\n padding: 0 !important;\n }\n\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n\n .p-sm-3 {\n padding: 1rem !important;\n }\n\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n\n .p-sm-5 {\n padding: 3rem !important;\n }\n\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n\n .d-md-inline-block {\n display: inline-block !important;\n }\n\n .d-md-block {\n display: block !important;\n }\n\n .d-md-grid {\n display: grid !important;\n }\n\n .d-md-table {\n display: table !important;\n }\n\n .d-md-table-row {\n display: table-row !important;\n }\n\n .d-md-table-cell {\n display: table-cell !important;\n }\n\n .d-md-flex {\n display: flex !important;\n }\n\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n\n .d-md-none {\n display: none !important;\n }\n\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-md-row {\n flex-direction: row !important;\n }\n\n .flex-md-column {\n flex-direction: column !important;\n }\n\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-md-center {\n justify-content: center !important;\n }\n\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-md-start {\n align-items: flex-start !important;\n }\n\n .align-items-md-end {\n align-items: flex-end !important;\n }\n\n .align-items-md-center {\n align-items: center !important;\n }\n\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n\n .align-content-md-start {\n align-content: flex-start !important;\n }\n\n .align-content-md-end {\n align-content: flex-end !important;\n }\n\n .align-content-md-center {\n align-content: center !important;\n }\n\n .align-content-md-between {\n align-content: space-between !important;\n }\n\n .align-content-md-around {\n align-content: space-around !important;\n }\n\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n\n .align-self-md-auto {\n align-self: auto !important;\n }\n\n .align-self-md-start {\n align-self: flex-start !important;\n }\n\n .align-self-md-end {\n align-self: flex-end !important;\n }\n\n .align-self-md-center {\n align-self: center !important;\n }\n\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n\n .order-md-first {\n order: -1 !important;\n }\n\n .order-md-0 {\n order: 0 !important;\n }\n\n .order-md-1 {\n order: 1 !important;\n }\n\n .order-md-2 {\n order: 2 !important;\n }\n\n .order-md-3 {\n order: 3 !important;\n }\n\n .order-md-4 {\n order: 4 !important;\n }\n\n .order-md-5 {\n order: 5 !important;\n }\n\n .order-md-last {\n order: 6 !important;\n }\n\n .m-md-0 {\n margin: 0 !important;\n }\n\n .m-md-1 {\n margin: 0.25rem !important;\n }\n\n .m-md-2 {\n margin: 0.5rem !important;\n }\n\n .m-md-3 {\n margin: 1rem !important;\n }\n\n .m-md-4 {\n margin: 1.5rem !important;\n }\n\n .m-md-5 {\n margin: 3rem !important;\n }\n\n .m-md-auto {\n margin: auto !important;\n }\n\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-md-0 {\n margin-top: 0 !important;\n }\n\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n\n .mt-md-auto {\n margin-top: auto !important;\n }\n\n .me-md-0 {\n margin-left: 0 !important;\n }\n\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n\n .me-md-3 {\n margin-left: 1rem !important;\n }\n\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n\n .me-md-5 {\n margin-left: 3rem !important;\n }\n\n .me-md-auto {\n margin-left: auto !important;\n }\n\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n\n .ms-md-0 {\n margin-right: 0 !important;\n }\n\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n\n .ms-md-auto {\n margin-right: auto !important;\n }\n\n .p-md-0 {\n padding: 0 !important;\n }\n\n .p-md-1 {\n padding: 0.25rem !important;\n }\n\n .p-md-2 {\n padding: 0.5rem !important;\n }\n\n .p-md-3 {\n padding: 1rem !important;\n }\n\n .p-md-4 {\n padding: 1.5rem !important;\n }\n\n .p-md-5 {\n padding: 3rem !important;\n }\n\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-md-0 {\n padding-top: 0 !important;\n }\n\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n\n .pe-md-0 {\n padding-left: 0 !important;\n }\n\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-md-0 {\n padding-right: 0 !important;\n }\n\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n\n .d-lg-inline-block {\n display: inline-block !important;\n }\n\n .d-lg-block {\n display: block !important;\n }\n\n .d-lg-grid {\n display: grid !important;\n }\n\n .d-lg-table {\n display: table !important;\n }\n\n .d-lg-table-row {\n display: table-row !important;\n }\n\n .d-lg-table-cell {\n display: table-cell !important;\n }\n\n .d-lg-flex {\n display: flex !important;\n }\n\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n\n .d-lg-none {\n display: none !important;\n }\n\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-lg-row {\n flex-direction: row !important;\n }\n\n .flex-lg-column {\n flex-direction: column !important;\n }\n\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-lg-center {\n justify-content: center !important;\n }\n\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n\n .align-items-lg-center {\n align-items: center !important;\n }\n\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n\n .align-content-lg-center {\n align-content: center !important;\n }\n\n .align-content-lg-between {\n align-content: space-between !important;\n }\n\n .align-content-lg-around {\n align-content: space-around !important;\n }\n\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n\n .align-self-lg-auto {\n align-self: auto !important;\n }\n\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n\n .align-self-lg-center {\n align-self: center !important;\n }\n\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n\n .order-lg-first {\n order: -1 !important;\n }\n\n .order-lg-0 {\n order: 0 !important;\n }\n\n .order-lg-1 {\n order: 1 !important;\n }\n\n .order-lg-2 {\n order: 2 !important;\n }\n\n .order-lg-3 {\n order: 3 !important;\n }\n\n .order-lg-4 {\n order: 4 !important;\n }\n\n .order-lg-5 {\n order: 5 !important;\n }\n\n .order-lg-last {\n order: 6 !important;\n }\n\n .m-lg-0 {\n margin: 0 !important;\n }\n\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n\n .m-lg-3 {\n margin: 1rem !important;\n }\n\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n\n .m-lg-5 {\n margin: 3rem !important;\n }\n\n .m-lg-auto {\n margin: auto !important;\n }\n\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n\n .mt-lg-auto {\n margin-top: auto !important;\n }\n\n .me-lg-0 {\n margin-left: 0 !important;\n }\n\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n\n .me-lg-auto {\n margin-left: auto !important;\n }\n\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n\n .ms-lg-auto {\n margin-right: auto !important;\n }\n\n .p-lg-0 {\n padding: 0 !important;\n }\n\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n\n .p-lg-3 {\n padding: 1rem !important;\n }\n\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n\n .p-lg-5 {\n padding: 3rem !important;\n }\n\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n\n .d-xl-inline-block {\n display: inline-block !important;\n }\n\n .d-xl-block {\n display: block !important;\n }\n\n .d-xl-grid {\n display: grid !important;\n }\n\n .d-xl-table {\n display: table !important;\n }\n\n .d-xl-table-row {\n display: table-row !important;\n }\n\n .d-xl-table-cell {\n display: table-cell !important;\n }\n\n .d-xl-flex {\n display: flex !important;\n }\n\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xl-none {\n display: none !important;\n }\n\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xl-row {\n flex-direction: row !important;\n }\n\n .flex-xl-column {\n flex-direction: column !important;\n }\n\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xl-center {\n justify-content: center !important;\n }\n\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xl-center {\n align-items: center !important;\n }\n\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xl-center {\n align-content: center !important;\n }\n\n .align-content-xl-between {\n align-content: space-between !important;\n }\n\n .align-content-xl-around {\n align-content: space-around !important;\n }\n\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xl-auto {\n align-self: auto !important;\n }\n\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xl-center {\n align-self: center !important;\n }\n\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n\n .order-xl-first {\n order: -1 !important;\n }\n\n .order-xl-0 {\n order: 0 !important;\n }\n\n .order-xl-1 {\n order: 1 !important;\n }\n\n .order-xl-2 {\n order: 2 !important;\n }\n\n .order-xl-3 {\n order: 3 !important;\n }\n\n .order-xl-4 {\n order: 4 !important;\n }\n\n .order-xl-5 {\n order: 5 !important;\n }\n\n .order-xl-last {\n order: 6 !important;\n }\n\n .m-xl-0 {\n margin: 0 !important;\n }\n\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xl-3 {\n margin: 1rem !important;\n }\n\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xl-5 {\n margin: 3rem !important;\n }\n\n .m-xl-auto {\n margin: auto !important;\n }\n\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xl-auto {\n margin-top: auto !important;\n }\n\n .me-xl-0 {\n margin-left: 0 !important;\n }\n\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n\n .me-xl-auto {\n margin-left: auto !important;\n }\n\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n\n .ms-xl-auto {\n margin-right: auto !important;\n }\n\n .p-xl-0 {\n padding: 0 !important;\n }\n\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xl-3 {\n padding: 1rem !important;\n }\n\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xl-5 {\n padding: 3rem !important;\n }\n\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n\n .d-xxl-block {\n display: block !important;\n }\n\n .d-xxl-grid {\n display: grid !important;\n }\n\n .d-xxl-table {\n display: table !important;\n }\n\n .d-xxl-table-row {\n display: table-row !important;\n }\n\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n\n .d-xxl-flex {\n display: flex !important;\n }\n\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n\n .d-xxl-none {\n display: none !important;\n }\n\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n\n .flex-xxl-row {\n flex-direction: row !important;\n }\n\n .flex-xxl-column {\n flex-direction: column !important;\n }\n\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n\n .align-items-xxl-center {\n align-items: center !important;\n }\n\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n\n .align-content-xxl-center {\n align-content: center !important;\n }\n\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n\n .align-self-xxl-center {\n align-self: center !important;\n }\n\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n\n .order-xxl-first {\n order: -1 !important;\n }\n\n .order-xxl-0 {\n order: 0 !important;\n }\n\n .order-xxl-1 {\n order: 1 !important;\n }\n\n .order-xxl-2 {\n order: 2 !important;\n }\n\n .order-xxl-3 {\n order: 3 !important;\n }\n\n .order-xxl-4 {\n order: 4 !important;\n }\n\n .order-xxl-5 {\n order: 5 !important;\n }\n\n .order-xxl-last {\n order: 6 !important;\n }\n\n .m-xxl-0 {\n margin: 0 !important;\n }\n\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n\n .m-xxl-3 {\n margin: 1rem !important;\n }\n\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n\n .m-xxl-5 {\n margin: 3rem !important;\n }\n\n .m-xxl-auto {\n margin: auto !important;\n }\n\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n\n .me-xxl-auto {\n margin-left: auto !important;\n }\n\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n\n .p-xxl-0 {\n padding: 0 !important;\n }\n\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n\n .p-xxl-3 {\n padding: 1rem !important;\n }\n\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n\n .p-xxl-5 {\n padding: 3rem !important;\n }\n\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n\n .d-print-inline-block {\n display: inline-block !important;\n }\n\n .d-print-block {\n display: block !important;\n }\n\n .d-print-grid {\n display: grid !important;\n }\n\n .d-print-table {\n display: table !important;\n }\n\n .d-print-table-row {\n display: table-row !important;\n }\n\n .d-print-table-cell {\n display: table-cell !important;\n }\n\n .d-print-flex {\n display: flex !important;\n }\n\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css deleted file mode 100644 index a36eaf789..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css +++ /dev/null @@ -1,426 +0,0 @@ -/*! - * Bootstrap Reboot v5.0.0-beta3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) - */ -*, -*::before, -*::after { - box-sizing: border-box; -} - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; - } -} - -body { - margin: 0; - font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -hr { - margin: 1rem 0; - color: inherit; - background-color: currentColor; - border: 0; - opacity: 0.25; -} - -hr:not([size]) { - height: 1px; -} - -h6, h5, h4, h3, h2, h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; -} - -h1 { - font-size: calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px) { - h1 { - font-size: 2.5rem; - } -} - -h2 { - font-size: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - h2 { - font-size: 2rem; - } -} - -h3 { - font-size: calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px) { - h3 { - font-size: 1.75rem; - } -} - -h4 { - font-size: calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px) { - h4 { - font-size: 1.5rem; - } -} - -h5 { - font-size: 1.25rem; -} - -h6 { - font-size: 1rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title], -abbr[data-bs-original-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: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 0.875em; -} - -mark { - padding: 0.2em; - background-color: #fcf8e3; -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: #0d6efd; - text-decoration: underline; -} -a:hover { - color: #0a58ca; -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; -} - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; - direction: ltr /* rtl:ignore */; - unicode-bidi: bidi-override; -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -code { - font-size: 0.875em; - color: #d63384; - word-wrap: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 0.875em; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; -} -kbd kbd { - padding: 0; - font-size: 1em; - font-weight: 700; -} - -figure { - margin: 0 0 1rem; -} - -img, -svg { - vertical-align: middle; -} - -table { - caption-side: bottom; - border-collapse: collapse; -} - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: #6c757d; - 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]::-webkit-calendar-picker-indicator { - display: none; -} - -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: calc(1.275rem + 0.3vw); - line-height: inherit; -} -@media (min-width: 1200px) { - legend { - font-size: 1.5rem; - } -} -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] { - outline-offset: -2px; - -webkit-appearance: textfield; -} - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-color-swatch-wrapper { - padding: 0; -} - -::file-selector-button { - font: inherit; -} - -::-webkit-file-upload-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; -} - -/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css.map b/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css.map deleted file mode 100644 index 3db2e60bc..000000000 --- a/docs-site/themes/adidoks/sass/bootstrap/dist/css/bootstrap-reboot.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap-reboot.scss","../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/_variables.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAAA;;;;;;EAAA;ACeA;;;EAGE,sBAAA;ACPF;;ADoBI;EAJJ;IAKM,uBAAA;EChBJ;AACF;;AD4BA;EACE,SAAA;EACA,4MEmX4B;ECvKxB,eALI;EHrMR,gBEgY4B;EF/X5B,gBEqY4B;EFpY5B,cElCS;EFoCT,sBE7CS;EF8CT,8BAAA;EACA,6CAAA;AC1BF;;ADmCA;EACE,cAAA;EACA,cEqb4B;EFpb5B,8BAAA;EACA,SAAA;EACA,aEob4B;ADpd9B;;ADmCA;EACE,WE+R4B;AD/T9B;;AD0CA;EACE,aAAA;EACA,qBE0X4B;EFvX5B,gBE0X4B;EFzX5B,gBE0X4B;ADna9B;;AD6CA;EGkKQ,iCAAA;AF3MR;AEyCI;EHAJ;IGyKQ,iBAAA;EF9MN;AACF;;ADyCA;EG6JQ,iCAAA;AFlMR;AEgCI;EHKJ;IGoKQ,eAAA;EFrMN;AACF;;ADqCA;EGwJQ,+BAAA;AFzLR;AEuBI;EHUJ;IG+JQ,kBAAA;EF5LN;AACF;;ADiCA;EGmJQ,iCAAA;AFhLR;AEcI;EHeJ;IG0JQ,iBAAA;EFnLN;AACF;;AD6BA;EG0IM,kBALI;AF9JV;;AD8BA;EGqIM,eALI;AF1JV;;ADqCA;EACE,aAAA;EACA,mBEyK0B;AD3M5B;;AD6CA;;EAEE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AC1CF;;ADgDA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AC7CF;;ADmDA;;EAEE,kBAAA;AChDF;;ADmDA;;;EAGE,aAAA;EACA,mBAAA;AChDF;;ADmDA;;;;EAIE,gBAAA;AChDF;;ADmDA;EACE,gBE6P4B;AD7S9B;;ADqDA;EACE,qBAAA;EACA,cAAA;AClDF;;ADwDA;EACE,gBAAA;ACrDF;;AD6DA;;EAEE,mBEsO4B;ADhS9B;;ADkEA;EGsCM,kBALI;AF/FV;;ADqEA;EACE,cEkS4B;EFjS5B,yBEyS4B;AD3W9B;;AD2EA;;EAEE,kBAAA;EGkBI,iBALI;EHXR,cAAA;EACA,wBAAA;ACxEF;;AD2EA;EAAM,eAAA;ACvEN;;ADwEA;EAAM,WAAA;ACpEN;;ADyEA;EACE,cEhNQ;EFiNR,0BEyCwC;AD/G1C;ADwEE;EACE,cEwCsC;AD9G1C;;ADiFE;EAEE,cAAA;EACA,qBAAA;AC/EJ;;ADsFA;;;;EAIE,iGEgJ4B;ECxKxB,cALI;EH+BR,+BAAA;EACA,2BAAA;ACnFF;;AD0FA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EGtCI,kBALI;AF3CV;AD2FE;EG3CI,kBALI;EHkDN,cAAA;EACA,kBAAA;ACzFJ;;AD6FA;EGlDM,kBALI;EHyDR,cEtQQ;EFuQR,qBAAA;AC1FF;AD6FE;EACE,cAAA;AC3FJ;;AD+FA;EACE,sBAAA;EG9DI,kBALI;EHqER,WEnTS;EFoTT,yBE3SS;EEEP,qBAAA;AH8MJ;AD8FE;EACE,UAAA;EGrEE,cALI;EH4EN,gBEgH0B;AD5M9B;;ADqGA;EACE,gBAAA;AClGF;;ADwGA;;EAEE,sBAAA;ACrGF;;AD6GA;EACE,oBAAA;EACA,yBAAA;AC1GF;;AD6GA;EACE,mBE8K4B;EF7K5B,sBE6K4B;EF5K5B,cEtVS;EFuVT,gBAAA;AC1GF;;ADiHA;EAEE,mBAAA;EACA,gCAAA;AC/GF;;ADkHA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AC/GF;;ADuHA;EACE,qBAAA;ACpHF;;AD0HA;EAEE,gBAAA;ACxHF;;ADgIA;EACE,UAAA;AC7HF;;ADkIA;;;;;EAKE,SAAA;EACA,oBAAA;EGpKI,kBALI;EH2KR,oBAAA;AC/HF;;ADmIA;;EAEE,oBAAA;AChIF;;ADqIA;EACE,eAAA;AClIF;;ADqIA;EAGE,iBAAA;ACpIF;ADuIE;EACE,UAAA;ACrIJ;;AD4IA;EACE,aAAA;ACzIF;;ADiJA;;;;EAIE,0BAAA;AC9IF;ADiJI;;;;EACE,eAAA;AC5IN;;ADmJA;EACE,UAAA;EACA,kBAAA;AChJF;;ADqJA;EACE,gBAAA;AClJF;;AD4JA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;ACzJF;;ADiKA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBEG4B;EC5PtB,iCAAA;EH4PN,oBAAA;AC/JF;AE/PI;EHuZJ;IG9OQ,iBAAA;EF0FN;AACF;AD4JE;EACE,WAAA;AC1JJ;;ADiKA;;;;;;;EAOE,UAAA;AC9JF;;ADiKA;EACE,YAAA;AC9JF;;ADuKA;EACE,oBAAA;EACA,6BAAA;ACpKF;;AD4KA;;;;;;;CAAA;AAWA;EACE,wBAAA;AC5KF;;ADiLA;EACE,UAAA;AC9KF;;ADoLA;EACE,aAAA;ACjLF;;ADuLA;EACE,aAAA;EACA,0BAAA;ACpLF;;ADyLA;EACE,qBAAA;ACtLF;;AD2LA;EACE,SAAA;ACxLF;;AD+LA;EACE,kBAAA;EACA,eAAA;AC5LF;;ADoMA;EACE,wBAAA;ACjMF;;ADyMA;EACE,wBAAA;ACtMF","file":"bootstrap-reboot.css","sourcesContent":["/*!\n * Bootstrap Reboot v5.0.0-beta3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n@import \"functions\";\n@import \"variables\";\n// Prevent the usage of custom properties since we don't add them to `:root` in reboot\n$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n@import \"mixins\";\n@import \"reboot\";\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` -

- - - -{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/macros/math.html b/docs-site/themes/adidoks/templates/macros/math.html deleted file mode 100644 index bb893f602..000000000 --- a/docs-site/themes/adidoks/templates/macros/math.html +++ /dev/null @@ -1,26 +0,0 @@ -{% macro math() %} - {% if page.extra.math or section.extra.math or config.extra.math %} - {% if config.extra.library and config.extra.library == "mathjax" %} - - - {% else %} - - - - - {% endif %} - {% endif %} -{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/macros/page-publish-metadata.html b/docs-site/themes/adidoks/templates/macros/page-publish-metadata.html deleted file mode 100644 index 146a725a3..000000000 --- a/docs-site/themes/adidoks/templates/macros/page-publish-metadata.html +++ /dev/null @@ -1,3 +0,0 @@ -{% macro page_publish_metadata(page) %} -

Posted {{ page.date | date(format=config.extra.timeformat | default(value="%Y-%m-%d %H:%M:%S"), timezone=config.extra.timezone | default(value="America/New_York")) }}{% if page.taxonomies.authors and config.taxonomies %} by {% for author in page.taxonomies.authors %}{% if author_flag %} and {% endif %}{{ author }}{% set_global author_flag = true %}{% endfor %}{% endif %}

-{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/macros/section-navigation.html b/docs-site/themes/adidoks/templates/macros/section-navigation.html deleted file mode 100644 index f0e4a5dcc..000000000 --- a/docs-site/themes/adidoks/templates/macros/section-navigation.html +++ /dev/null @@ -1,22 +0,0 @@ -{% macro navigation(paginator) %} -

- {% if paginator.previous %} - -
-
- ← Newer -
-
-
- {% endif %} - {% if paginator.next %} - -
-
- Older → -
-
-
- {% endif %} -
-{% endmacro %} diff --git a/docs-site/themes/adidoks/templates/page.html b/docs-site/themes/adidoks/templates/page.html deleted file mode 100644 index 50e46e9b9..000000000 --- a/docs-site/themes/adidoks/templates/page.html +++ /dev/null @@ -1,57 +0,0 @@ -{# Default page.html template #} - -{% extends "base.html" %} - -{% block seo %} - {{ super() }} - {% set title_addition = "" %} - {% if page.title and config.title %} - {% set title = page.title %} - {% set title_addition = title_separator ~ config.title %} - {% elif page.title %} - {% set title = page.title %} - {% else %} - {% set title = config.title %} - {% endif %} - - {% if page.description %} - {% set description = page.description %} - {% else %} - {% set description = config.description %} - {% endif %} - {% set created_time = page.date %} - {% set updated_time = page.updated %} - {% if current_section %} - {% set page_section = current_section %} - {% else %} - {% set page_section = "" %} - {% endif %} - - {{ macros_head::seo(title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }} -{% endblock seo %} - -{% block body %} - {% if section.extra.class %} - {% set page_class = page.extra.class %} - {% else %} - {% set page_class = "page single" %} - {% endif %} -{% endblock body %} - -{% block content %} -
-
-
-
-
- - {% if page.extra.lead %}

{{ page.extra.lead }}

{% endif %} - {{ page.content | safe }} -
-
-
-
-
-{% endblock content %} diff --git a/docs-site/themes/adidoks/templates/robots.txt b/docs-site/themes/adidoks/templates/robots.txt deleted file mode 100644 index dd3f4f71c..000000000 --- a/docs-site/themes/adidoks/templates/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Allow: / - -Sitemap: {{config.base_url}}/sitemap.xml diff --git a/docs-site/themes/adidoks/templates/section.html b/docs-site/themes/adidoks/templates/section.html deleted file mode 100644 index 83988dd02..000000000 --- a/docs-site/themes/adidoks/templates/section.html +++ /dev/null @@ -1,50 +0,0 @@ -{# Default section.html template #} - -{% extends "base.html" %} - -{% block seo %} - {{ super() }} - {% set title_addition = "" %} - - {% if section.title and config.title %} - {% set title = section.title %} - {% set title_addition = title_separator ~ config.title %} - {% elif section.title %} - {% set title = section.title %} - {% else %} - {% set title = config.title %} - {% endif %} - - {% if section.description %} - {% set description = section.description %} - {% else %} - {% set description = config.description %} - {% endif %} - - {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }} -{% endblock seo %} - -{% block body %} - {% if section.extra.class %} - {% set page_class = section.extra.class %} - {% else %} - {% set page_class = "page list" %} - {% endif %} -{% endblock body %} - -{% block content %} -
-
-
-
-
- - {{ section.content | safe }} -
-
-
-
-
-{% endblock content %} diff --git a/docs-site/themes/adidoks/theme.toml b/docs-site/themes/adidoks/theme.toml deleted file mode 100644 index 9b562591a..000000000 --- a/docs-site/themes/adidoks/theme.toml +++ /dev/null @@ -1,17 +0,0 @@ -name = "adidoks" -description = "AdiDoks is a Zola theme helping you build modern documentation." -license = "MIT" -homepage = "https://github.com/aaranxu/adidoks" -min_version = "0.15.0" -demo = "https://adidoks.netlify.app/" - -[extra] - -[author] -name = "Aaran Xu" -homepage = "https://github.com/aaranxu" - -[original] -author = "h-enk" -homepage = "https://getdoks.org/" -repo = "https://github.com/h-enk/doks" diff --git a/examples/demo/config/development.yaml b/examples/demo/config/development.yaml index e8ae206d0..f6bee6017 100644 --- a/examples/demo/config/development.yaml +++ b/examples/demo/config/development.yaml @@ -42,6 +42,9 @@ server: # set secure headers secure_headers: preset: github + overrides: + # this allows you to use HTMX, and has unsafe-inline. Remove or consider in production + "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'self' https:; style-src 'self' https: 'unsafe-inline'" # Generating a unique request ID and enhancing logging with additional information such as the start and completion of request processing, latency, status code, and other request details. logger: # Enable/Disable the middleware. @@ -169,19 +172,18 @@ scheduler: shell: true # command to run run: "echo loco >> ./scheduler.txt" - # run the command as shell - # The cron expression defining the job's schedule. - cron: run every 1 second + # The cron expression that defines the job's schedule. + schedule: run every 1 second output: silent tags: ['base', 'infra'] run_task: run: "foo" - cron: "at 10:00 am" + schedule: "at 10:00 am" list_if_users: run: "user_report" shell: true - cron: "* 2 * * * *" + schedule: "* 2 * * * *" tags: ['base', 'users'] # \ No newline at end of file diff --git a/examples/demo/config/scheduler.yaml b/examples/demo/config/scheduler.yaml index b433a6c98..48421987a 100644 --- a/examples/demo/config/scheduler.yaml +++ b/examples/demo/config/scheduler.yaml @@ -3,16 +3,16 @@ jobs: write_content: shell: true run: "echo loco >> ./scheduler.txt" - cron: run every 1 second + schedule: run every 1 second output: silent tags: ['base', 'infra'] run_task: run: "foo" - cron: "at 10:00 am" + schedule: "at 10:00 am" list_if_users: run: "user_report" shell: true - cron: "* 2 * * * *" + schedule: "* 2 * * * *" tags: ['base', 'users'] \ No newline at end of file diff --git a/examples/demo/config/test.yaml b/examples/demo/config/test.yaml index e08de0385..a11986fd6 100644 --- a/examples/demo/config/test.yaml +++ b/examples/demo/config/test.yaml @@ -138,16 +138,16 @@ scheduler: write_content: shell: true run: "echo loco >> ./scheduler.txt" - cron: run every 1 second + schedule: run every 1 second output: silent tags: ['base', 'infra'] run_task: run: "foo" - cron: "at 10:00 am" + schedule: "at 10:00 am" list_if_users: run: "user_report" shell: true - cron: "* 2 * * * *" + schedule: "* 2 * * * *" tags: ['base', 'users'] \ No newline at end of file diff --git a/examples/demo/tests/cmd/scheduler.trycmd b/examples/demo/tests/cmd/scheduler.trycmd index 2319827b7..35911ad47 100644 --- a/examples/demo/tests/cmd/scheduler.trycmd +++ b/examples/demo/tests/cmd/scheduler.trycmd @@ -1,19 +1,19 @@ ```console $ LOCO_ENV=test blo-cli scheduler --list -# job_name cron tags run -1 list_if_users * 2 * * * * base, users "user_report" -2 run_task at 10:00 am - "foo" -3 write_content run every 1 second base, infra "echo loco >> ./scheduler.txt" +# job_name schedule tags run +1 list_if_users * 2 * * * * base, users "user_report" +2 run_task at 10:00 am - "foo" +3 write_content run every 1 second base, infra "echo loco >> ./scheduler.txt" ``` ```console $ LOCO_ENV=test blo-cli scheduler --config ./config/scheduler.yaml --list -# job_name cron tags run -1 list_if_users * 2 * * * * base, users "user_report" -2 run_task at 10:00 am - "foo" -3 write_content run every 1 second base, infra "echo loco >> ./scheduler.txt" +# job_name schedule tags run +1 list_if_users * 2 * * * * base, users "user_report" +2 run_task at 10:00 am - "foo" +3 write_content run every 1 second base, infra "echo loco >> ./scheduler.txt" ``` diff --git a/snipdoc.yml b/snipdoc.yml index 49d8760fc..10f0a1117 100644 --- a/snipdoc.yml +++ b/snipdoc.yml @@ -21,9 +21,12 @@ snippets: ❯ loco new ✔ ❯ App name? · myapp ✔ ❯ What would you like to build? · SaaS app (with DB and user auth) + ✔ ❯ Select a DB Provider · Sqlite + ✔ ❯ Select your background worker type · Async (in-process tokyo async tasks) + ✔ ❯ Select an asset serving configuration · Client (configures assets for frontend serving) 🚂 Loco app generated successfully in: - myapp + myapp/ path: ./snipdoc.yml postgres-run-docker-command: content: |- @@ -40,7 +43,7 @@ snippets: content: cargo loco start path: ./snipdoc.yml starting-the-server-command-with-environment-env-var: - content: LOCO_ENV=qa cargo loco start + content: LOCO_ENV=qa cargo loco start path: ./snipdoc.yml starting-the-server-command-with-output: content: |- @@ -91,7 +94,7 @@ snippets: path: ./snipdoc.yml scaffold-post-command: content: cargo loco generate scaffold posts - name:string title:string content:text + name:string title:string content:text path: ./snipdoc.yml generate-task-help-command: content: cd ./examples/demo && cargo loco generate task --help diff --git a/src/controller/fallback.html b/src/controller/fallback.html index 610b6aee9..306e1bfee 100644 --- a/src/controller/fallback.html +++ b/src/controller/fallback.html @@ -11,7 +11,7 @@
-
+
diff --git a/src/gen/templates/scheduler.t b/src/gen/templates/scheduler.t index f17f9febf..b83be8c2c 100644 --- a/src/gen/templates/scheduler.t +++ b/src/gen/templates/scheduler.t @@ -8,11 +8,11 @@ jobs: write_content: shell: true run: "echo loco >> ./scheduler.txt" - cron: run every 1 second - # cron: "* * * * * * *" + schedule: run every 1 second + # schedule: "* * * * * * *" output: silent tags: ['base', 'infra'] # run_task: # run: "foo" - # cron: "at 10:00 am" + # schedule: "at 10:00 am" diff --git a/src/scheduler.rs b/src/scheduler.rs index 8a3eddc0e..f98909f3c 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -66,6 +66,7 @@ pub struct Job { pub run: String, #[serde(default)] pub shell: bool, + #[serde(rename = "schedule")] /// The cron expression defining the job's schedule. /// /// The format is as follows: @@ -82,7 +83,7 @@ impl fmt::Display for Scheduler { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!( f, - "# job_name cron tags run" + "# job_name schedule tags run" )?; let mut job_names: Vec<&String> = self.jobs.keys().collect(); @@ -92,7 +93,7 @@ impl fmt::Display for Scheduler { if let Some(job) = self.jobs.get(job_name) { writeln!( f, - "{:<6} {:<15} {:<18} {:<18} {:?}", + "{:<6} {:<15} {:<22} {:<18} {:?}", index + 1, job_name, job.cron, @@ -455,14 +456,14 @@ mod tests { .unwrap(); assert_eq!( - std::fs::read_to_string(&path.join("scheduler.txt")) + std::fs::read_to_string(path.join("scheduler.txt")) .unwrap() .lines() .count(), 0 ); assert_eq!( - std::fs::read_to_string(&path.join("scheduler2.txt")) + std::fs::read_to_string(path.join("scheduler2.txt")) .unwrap() .lines() .count(), diff --git a/src/snapshots/loco_rs__scheduler__tests__can_display_scheduler.snap b/src/snapshots/loco_rs__scheduler__tests__can_display_scheduler.snap index 02261c724..996543856 100644 --- a/src/snapshots/loco_rs__scheduler__tests__can_display_scheduler.snap +++ b/src/snapshots/loco_rs__scheduler__tests__can_display_scheduler.snap @@ -2,4 +2,4 @@ source: src/scheduler.rs expression: "format!(\"{scheduler}\")" --- -"# job_name cron tags run\n1 print_task */5 * * * * * base, echo \"foo\"\n2 write_to_file */5 * * * * * base, write \"echo loco >> ./scheduler.txt\"\n" +"# job_name schedule tags run\n1 print_task */5 * * * * * base, echo \"foo\"\n2 write_to_file */5 * * * * * base, write \"echo loco >> ./scheduler.txt\"\n" diff --git a/starters/saas/config/development.yaml b/starters/saas/config/development.yaml index b932c4aa7..dbf9a8df1 100644 --- a/starters/saas/config/development.yaml +++ b/starters/saas/config/development.yaml @@ -41,6 +41,9 @@ server: # set secure headers secure_headers: preset: github + overrides: + # this allows you to use HTMX, and has unsafe-inline. Remove or consider in production + "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'self' https:; style-src 'self' https: 'unsafe-inline'" # calculate remote IP based on `X-Forwarded-For` when behind a proxy or load balancer # use RemoteIP(..) extractor to get the remote IP. # without this middleware, you'll get the proxy IP instead. diff --git a/tests/fixtures/scheduler/scheduler.yaml b/tests/fixtures/scheduler/scheduler.yaml index 00372c22f..d2fa1cafa 100644 --- a/tests/fixtures/scheduler/scheduler.yaml +++ b/tests/fixtures/scheduler/scheduler.yaml @@ -1,7 +1,7 @@ jobs: print_task: run: foo - cron: "*/5 * * * * *" + schedule: "*/5 * * * * *" tags: - base - echo @@ -9,7 +9,7 @@ jobs: write_to_file: run: "echo loco >> ./scheduler.txt" shell: true - cron: "*/5 * * * * *" + schedule: "*/5 * * * * *" tags: - base - write From 7b0ab1daab68812f80a5e8b7402f4d2998d8664d Mon Sep 17 00:00:00 2001 From: "Dotan J. Nahum" Date: Mon, 16 Sep 2024 10:38:29 +0300 Subject: [PATCH 3/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e23b707de..4145f9131 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ For a deeper dive into how Loco works, including detailed guides, examples, and * `Cache:` Loco provides an cache layer to improve application performance by storing frequently accessed data. -So see more Loco features, check out our [documentation website](https://loco.rs/docs/the-app/your-project/). +So see more Loco features, check out our [documentation website](https://loco.rs/docs/getting-started/tour/). From aab62fa502f4b80ba7c81a0a7729fa1744e86b65 Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Mon, 16 Sep 2024 12:54:05 +0300 Subject: [PATCH 4/8] improve scaffold generator (#749) support --html, --htmx and --api flags to scaffold cli command --- .github/workflows/ci-generators.yml | 4 +- .../content/docs/the-app/your-project.md | 5 +- src/cli.rs | 68 ++++++++++++++----- 3 files changed, 58 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci-generators.yml b/.github/workflows/ci-generators.yml index d46fd2902..16dc26790 100644 --- a/.github/workflows/ci-generators.yml +++ b/.github/workflows/ci-generators.yml @@ -55,7 +55,7 @@ jobs: run: cargo install sea-orm-cli - name: scaffold - run: cargo run -- generate scaffold car name:string year:int && cargo build + run: cargo run -- generate scaffold --htmx car name:string year:int && cargo build working-directory: ./examples/demo env: REDIS_URL: redis://localhost:${{job.services.redis.ports[6379]}} @@ -215,7 +215,7 @@ jobs: - name: test ${{ matrix.field_type }} scaffold field type run: | - cargo run -- generate scaffold room \ + cargo run -- generate scaffold --api room \ uuid_uniq:uuid \ uuid_null:uuid_col \ uuid:uuid_col! \ diff --git a/docs-site/content/docs/the-app/your-project.md b/docs-site/content/docs/the-app/your-project.md index 3b8d736cc..b7259b063 100644 --- a/docs-site/content/docs/the-app/your-project.md +++ b/docs-site/content/docs/the-app/your-project.md @@ -141,7 +141,10 @@ Arguments: [FIELDS]... Model fields, eg. title:string hits:int Options: - -k, --kind The kind of scaffold to generate [default: api] [possible values: api, html, htmx] + -k, --kind The kind of scaffold to generate [possible values: api, html, htmx] + --htmx Use HTMX scaffold + --html Use HTML scaffold + --api Use API scaffold -e, --environment Specify the environment [default: development] -h, --help Print help -V, --version Print version diff --git a/src/cli.rs b/src/cli.rs index 82e22b40e..93512ee56 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -35,7 +35,7 @@ use crate::{ ServeParams, StartMode, }, environment::{resolve_from_env, Environment, DEFAULT_ENVIRONMENT}, - gen::{self, Component}, + gen::{self, Component, ScaffoldKind}, logger, task, }; #[derive(Parser)] @@ -160,8 +160,20 @@ enum ComponentArg { fields: Vec<(String, String)>, /// The kind of scaffold to generate - #[clap(short, long, value_enum, default_value_t = gen::ScaffoldKind::Api)] - kind: gen::ScaffoldKind, + #[clap(short, long, value_enum, group = "scaffold_kind_group")] + kind: Option, + + /// Use HTMX scaffold + #[clap(long, group = "scaffold_kind_group")] + htmx: bool, + + /// Use HTML scaffold + #[clap(long, group = "scaffold_kind_group")] + html: bool, + + /// Use API scaffold + #[clap(long, group = "scaffold_kind_group")] + api: bool, }, /// Generate a new controller with the given controller name, and test file. Controller { @@ -189,8 +201,9 @@ enum ComponentArg { Deployment {}, } -impl From for Component { - fn from(value: ComponentArg) -> Self { +impl TryFrom for Component { + type Error = crate::Error; + fn try_from(value: ComponentArg) -> Result { match value { #[cfg(feature = "with-db")] ComponentArg::Model { @@ -198,22 +211,45 @@ impl From for Component { link, migration_only, fields, - } => Self::Model { + } => Ok(Self::Model { name, link, migration_only, fields, - }, + }), #[cfg(feature = "with-db")] - ComponentArg::Migration { name } => Self::Migration { name }, + ComponentArg::Migration { name } => Ok(Self::Migration { name }), #[cfg(feature = "with-db")] - ComponentArg::Scaffold { name, fields, kind } => Self::Scaffold { name, fields, kind }, - ComponentArg::Controller { name } => Self::Controller { name }, - ComponentArg::Task { name } => Self::Task { name }, - ComponentArg::Scheduler {} => Self::Scheduler {}, - ComponentArg::Worker { name } => Self::Worker { name }, - ComponentArg::Mailer { name } => Self::Mailer { name }, - ComponentArg::Deployment {} => Self::Deployment {}, + ComponentArg::Scaffold { + name, + fields, + kind, + htmx, + html, + api, + } => { + let kind = if let Some(kind) = kind { + kind + } else if htmx { + ScaffoldKind::Htmx + } else if html { + ScaffoldKind::Html + } else if api { + ScaffoldKind::Api + } else { + return Err(crate::Error::string( + "Error: One of `kind`, `htmx`, `html`, or `api` must be specified.", + )); + }; + + Ok(Self::Scaffold { name, fields, kind }) + } + ComponentArg::Controller { name } => Ok(Self::Controller { name }), + ComponentArg::Task { name } => Ok(Self::Task { name }), + ComponentArg::Scheduler {} => Ok(Self::Scheduler {}), + ComponentArg::Worker { name } => Ok(Self::Worker { name }), + ComponentArg::Mailer { name } => Ok(Self::Mailer { name }), + ComponentArg::Deployment {} => Ok(Self::Deployment {}), } } } @@ -375,7 +411,7 @@ pub async fn main() -> crate::Result<()> { run_scheduler::(&app_context, config.as_ref(), name, tag, list).await?; } Commands::Generate { component } => { - gen::generate::(component.into(), &config)?; + gen::generate::(component.try_into()?, &config)?; } Commands::Doctor {} => { let mut should_exit = false; From 43ee158db34455d32f3f4fc47f284fb8dad9c61b Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Mon, 16 Sep 2024 12:55:14 +0300 Subject: [PATCH 5/8] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a4791d4f..de12f9b29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * fix: introduce secondary binary for compile-and-run on Windows. [https://github.com/loco-rs/loco/pull/727](https://github.com/loco-rs/loco/pull/727) * Add fallback behavior. [https://github.com/loco-rs/loco/pull/732](https://github.com/loco-rs/loco/pull/732) * Add Scheduler Feature for Running Cron Jobs. [https://github.com/loco-rs/loco/pull/735](https://github.com/loco-rs/loco/pull/735) +* Add `--html`, `--htmx` and `--api` flags to scaffold CLI command. [https://github.com/loco-rs/loco/pull/749](https://github.com/loco-rs/loco/pull/749) ## v0.8.0 From 82e3ec9a0b4169efd655330886def23219979a05 Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Mon, 16 Sep 2024 13:54:24 +0300 Subject: [PATCH 6/8] adding base template in scaffold generate --- examples/demo/config/development.yaml | 2 +- src/gen/scaffold.rs | 4 + src/gen/templates/scaffold/html/base.t | 28 +++++ src/gen/templates/scaffold/html/view_create.t | 93 +++++++-------- src/gen/templates/scaffold/html/view_edit.t | 112 +++++++++--------- src/gen/templates/scaffold/html/view_list.t | 52 ++++---- src/gen/templates/scaffold/html/view_show.t | 31 +++-- src/gen/templates/scaffold/htmx/base.t | 30 +++++ src/gen/templates/scaffold/htmx/view_create.t | 72 ++++++----- src/gen/templates/scaffold/htmx/view_edit.t | 101 ++++++++-------- src/gen/templates/scaffold/htmx/view_list.t | 22 ++-- src/gen/templates/scaffold/htmx/view_show.t | 33 +++--- starters/saas/config/development.yaml | 2 +- 13 files changed, 312 insertions(+), 270 deletions(-) create mode 100644 src/gen/templates/scaffold/html/base.t create mode 100644 src/gen/templates/scaffold/htmx/base.t diff --git a/examples/demo/config/development.yaml b/examples/demo/config/development.yaml index f6bee6017..6081c679d 100644 --- a/examples/demo/config/development.yaml +++ b/examples/demo/config/development.yaml @@ -44,7 +44,7 @@ server: preset: github overrides: # this allows you to use HTMX, and has unsafe-inline. Remove or consider in production - "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'self' https:; style-src 'self' https: 'unsafe-inline'" + "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'unsafe-inline' 'self' https:; style-src 'self' https: 'unsafe-inline'" # Generating a unique request ID and enhancing logging with additional information such as the start and completion of request processing, latency, status code, and other request details. logger: # Enable/Disable the middleware. diff --git a/src/gen/scaffold.rs b/src/gen/scaffold.rs index 27430a1ac..c6a4b4d2e 100644 --- a/src/gen/scaffold.rs +++ b/src/gen/scaffold.rs @@ -6,6 +6,7 @@ use crate::{app::Hooks, gen}; const API_CONTROLLER_SCAFFOLD_T: &str = include_str!("templates/scaffold/api/controller.t"); const HTMX_CONTROLLER_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/controller.t"); +const HTMX_BASE_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/base.t"); const HTMX_VIEW_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/view.t"); const HTMX_VIEW_EDIT_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/view_edit.t"); const HTMX_VIEW_CREATE_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/view_create.t"); @@ -13,6 +14,7 @@ const HTMX_VIEW_SHOW_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/vi const HTMX_VIEW_LIST_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/view_list.t"); const HTML_CONTROLLER_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/controller.t"); +const HTML_BASE_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/base.t"); const HTML_VIEW_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/view.t"); const HTML_VIEW_EDIT_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/view_edit.t"); const HTML_VIEW_CREATE_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/view_create.t"); @@ -63,6 +65,7 @@ pub fn generate( } gen::ScaffoldKind::Html => { rrgen.generate(HTML_CONTROLLER_SCAFFOLD_T, &vars)?; + rrgen.generate(HTML_BASE_SCAFFOLD_T, &vars)?; rrgen.generate(HTML_VIEW_EDIT_SCAFFOLD_T, &vars)?; rrgen.generate(HTML_VIEW_CREATE_SCAFFOLD_T, &vars)?; rrgen.generate(HTML_VIEW_SHOW_SCAFFOLD_T, &vars)?; @@ -72,6 +75,7 @@ pub fn generate( } gen::ScaffoldKind::Htmx => { rrgen.generate(HTMX_CONTROLLER_SCAFFOLD_T, &vars)?; + rrgen.generate(HTMX_BASE_SCAFFOLD_T, &vars)?; rrgen.generate(HTMX_VIEW_EDIT_SCAFFOLD_T, &vars)?; rrgen.generate(HTMX_VIEW_CREATE_SCAFFOLD_T, &vars)?; rrgen.generate(HTMX_VIEW_SHOW_SCAFFOLD_T, &vars)?; diff --git a/src/gen/templates/scaffold/html/base.t b/src/gen/templates/scaffold/html/base.t new file mode 100644 index 000000000..16123c442 --- /dev/null +++ b/src/gen/templates/scaffold/html/base.t @@ -0,0 +1,28 @@ +to: assets/views/base.html +skip_exists: true +message: "Base template was added successfully." +--- + + + + + + {% raw %}{% block title %}{% endblock title %}{% endraw %} + + {% raw %}{% block head %}{% endraw %} + + {% raw %}{% endblock head %}{% endraw %} + + + +
+ {% raw %}{% block content %} + {% endblock content %}{% endraw %} +
+ + {% raw %}{% block js %} + + {% endblock js %}{% endraw %} + + + \ No newline at end of file diff --git a/src/gen/templates/scaffold/html/view_create.t b/src/gen/templates/scaffold/html/view_create.t index 0d3569625..5095be362 100644 --- a/src/gen/templates/scaffold/html/view_create.t +++ b/src/gen/templates/scaffold/html/view_create.t @@ -4,57 +4,54 @@ to: assets/views/{{file_name}}/create.html skip_exists: true message: "{{file_name}} create view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - +{% raw %}{% block title %}{% endraw %} +Create {{file_name}} +{% raw %}{% endblock title %}{% endraw %} - -

Create new {{name}}

-
+{% raw %}{% block content %}{% endraw %} +

Create new {{file_name}}

+
-
- {% for column in columns -%} +
+ {% for column in columns -%}
- -
- {% if column.2 == "text" -%} - - {% elif column.2 == "string" -%} - - {% elif column.2 == "string!" or column.2 == "string^" -%} - - {% elif column.2 == "int" or column.2 == "int!" or column.2 == "int^"-%} - - {% elif column.2 == "bool"-%} - - {% elif column.2 == "bool!"-%} - - {% elif column.2 == "ts"-%} - - {% elif column.2 == "ts!"-%} - - {% elif column.2 == "uuid"-%} - - {% elif column.2 == "uuid!"-%} - - {% elif column.2 == "json" or column.2 == "jsonb" -%} - - {% elif column.2 == "json!" or column.2 == "jsonb!" -%} - - {% endif -%} + +
+ {% if column.2 == "text" -%} + + {% elif column.2 == "string" -%} + + {% elif column.2 == "string!" or column.2 == "string^" -%} + + {% elif column.2 == "int" or column.2 == "int!" or column.2 == "int^"-%} + + {% elif column.2 == "bool"-%} + + {% elif column.2 == "bool!"-%} + + {% elif column.2 == "ts"-%} + + {% elif column.2 == "ts!"-%} + + {% elif column.2 == "uuid"-%} + + {% elif column.2 == "uuid!"-%} + + {% elif column.2 == "json" or column.2 == "jsonb" -%} + + {% elif column.2 == "json!" or column.2 == "jsonb!" -%} + + {% endif -%} +
+ {% endfor -%} +
+
+
- {% endfor -%} -
-
- -
-
- Back to {{name | plural}} -
- - - \ No newline at end of file +
+Back to {{name | plural}} +
+{% raw %}{% endblock content %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/html/view_edit.t b/src/gen/templates/scaffold/html/view_edit.t index 4e58a9c5e..20145738d 100644 --- a/src/gen/templates/scaffold/html/view_edit.t +++ b/src/gen/templates/scaffold/html/view_edit.t @@ -4,63 +4,48 @@ to: assets/views/{{file_name}}/edit.html skip_exists: true message: "{{file_name}} edit view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - - +{% raw %}{% block title %}{% endraw %} +Edit {{name}}: {% raw %}{{ item.id }}{% endraw %} +{% raw %}{% endblock title %}{% endraw %} - -

Edit {{name}}: {% raw %}{{ item.id }}{% endraw %}

-
+{% raw %}{% block content %}{% endraw %} +

Edit {{name}}: {% raw %}{{ item.id }}{% endraw %}

+
- {% for column in columns -%} + {% for column in columns -%}
- -
- {% if column.2 == "text" -%} - - {% elif column.2 == "string" -%} - - {% elif column.2 == "string!" or column.2 == "string^" -%} - - {% elif column.2 == "int" or column.2 == "int!" or column.2 == "int^"-%} - - {% elif column.2 == "bool"-%} - - {% elif column.2 == "bool!"-%} - - {% elif column.2 == "ts"-%} - - {% elif column.2 == "ts!"-%} - - {% elif column.2 == "uuid"-%} - - {% elif column.2 == "uuid!"-%} - - {% elif column.2 == "json" or column.2 == "jsonb" -%} - - {% elif column.2 == "json!" or column.2 == "jsonb!" -%} - + +
+ {% if column.2 == "text" -%} + + {% elif column.2 == "string" -%} + + {% elif column.2 == "string!" or column.2 == "string^" -%} + + {% elif column.2 == "int" or column.2 == "int!" or column.2 == "int^"-%} + + {% elif column.2 == "bool"-%} + + {% elif column.2 == "bool!"-%} + + {% elif column.2 == "ts"-%} + + {% elif column.2 == "ts!"-%} + + {% elif column.2 == "uuid"-%} + + {% elif column.2 == "uuid!"-%} + + {% elif column.2 == "json" or column.2 == "jsonb" -%} + + {% elif column.2 == "json!" or column.2 == "jsonb!" -%} + +
{% endif -%} -
+
{% endfor -%}
@@ -69,8 +54,25 @@ message: "{{file_name}} edit view was added successfully." onclick="confirmDelete(event)">Delete
- Back to {{name | plural}} -
- +
+Back to {{name | plural}} +
+{% raw %}{% endblock content %}{% endraw %} - +{% raw %}{% block js %}{% endraw %} + +{% raw %}{% endblock js %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/html/view_list.t b/src/gen/templates/scaffold/html/view_list.t index 1d25a81f2..23fae2345 100644 --- a/src/gen/templates/scaffold/html/view_list.t +++ b/src/gen/templates/scaffold/html/view_list.t @@ -4,35 +4,29 @@ to: assets/views/{{file_name}}/list.html skip_exists: true message: "{{file_name}} list view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - +{% raw %}{% block title %}{% endraw %} +List of {{file_name}} +{% raw %}{% endblock title %}{% endraw %} - -

{{file_name}}s

-
- {% raw %}{% for item in items %}{% endraw %} - -
- {% for column in columns -%} -
- - -
- {% endfor -%} - Edit - View -
- - {% raw %}{% endfor %}{% endraw %} - -
-
- New {{name}} +{% raw %}{% block content %}{% endraw %} +

{{file_name}}s

+
+{% raw %}{% for item in items %}{% endraw %} +
+ {% for column in columns -%} +
+ + +
+ {% endfor -%} + Edit + View
- - - \ No newline at end of file +{% raw %}{% endfor %}{% endraw %} +
+
+New {{name}} +
+{% raw %}{% endblock content %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/html/view_show.t b/src/gen/templates/scaffold/html/view_show.t index ec2cd48c0..5b88187d1 100644 --- a/src/gen/templates/scaffold/html/view_show.t +++ b/src/gen/templates/scaffold/html/view_show.t @@ -4,24 +4,21 @@ to: assets/views/{{file_name}}/show.html skip_exists: true message: "{{file_name}} view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - +{% raw %}{% block title %}{% endraw %} +View {{name}}: {% raw %}{{ item.id }}{% endraw %} +{% raw %}{% endblock title %}{% endraw %} - -

View {{name}}: {% raw %}{{ item.id }}{% endraw %}

-
- {% for column in columns -%} -
+{% raw %}{% block content %}{% endraw %} +

View {{name}}: {% raw %}{{ item.id }}{% endraw %}

+
+{% for column in columns -%} +
-
- {% endfor -%} -
- Back to {{name | plural}}
- - - \ No newline at end of file +{% endfor -%} +
+Back to {{name | plural}} +
+{% raw %}{% endblock content %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/htmx/base.t b/src/gen/templates/scaffold/htmx/base.t new file mode 100644 index 000000000..b0b96c332 --- /dev/null +++ b/src/gen/templates/scaffold/htmx/base.t @@ -0,0 +1,30 @@ +to: assets/views/base.html +skip_exists: true +message: "Base template was added successfully." +--- + + + + + + {% raw %}{% block title %}{% endblock title %}{% endraw %} + + + + {% raw %}{% block head %}{% endraw %} + + {% raw %}{% endblock head %}{% endraw %} + + + +
+ {% raw %}{% block content %} + {% endblock content %}{% endraw %} +
+ + {% raw %}{% block js %} + + {% endblock js %}{% endraw %} + + + \ No newline at end of file diff --git a/src/gen/templates/scaffold/htmx/view_create.t b/src/gen/templates/scaffold/htmx/view_create.t index 370adb140..7e638a116 100644 --- a/src/gen/templates/scaffold/htmx/view_create.t +++ b/src/gen/templates/scaffold/htmx/view_create.t @@ -4,21 +4,18 @@ to: assets/views/{{file_name}}/create.html skip_exists: true message: "{{file_name}} create view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - - +{% raw %}{% block title %}{% endraw %} +Create {{file_name}} +{% raw %}{% endblock title %}{% endraw %} - - -
+{% raw %}{% block content %}{% endraw %} +
-

Create new {{name}}

-
- {% for column in columns -%} +

Create new {{name}}

+
+ {% for column in columns -%}

@@ -54,30 +51,31 @@ message: "{{file_name}} create view was added successfully."
-
- - - - \ No newline at end of file + return JSON.stringify(json); + } + }) + +{% raw %}{% endblock js %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/htmx/view_edit.t b/src/gen/templates/scaffold/htmx/view_edit.t index 7ed1a2449..129033699 100644 --- a/src/gen/templates/scaffold/htmx/view_edit.t +++ b/src/gen/templates/scaffold/htmx/view_edit.t @@ -4,20 +4,18 @@ to: assets/views/{{file_name}}/edit.html skip_exists: true message: "{{file_name}} edit view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - - +{% raw %}{% block title %}{% endraw %} +Edit {{name}}: {% raw %}{{ item.id }}{% endraw %} +{% raw %}{% endblock title %}{% endraw %} - -

Edit {{name}}: {% raw %}{{ item.id }}{% endraw %}

-
+{% raw %}{% block content %}{% endraw %} +

Edit {{name}}: {% raw %}{{ item.id }}{% endraw %}

+
- {% for column in columns -%} + {% for column in columns -%}

@@ -55,47 +53,48 @@ message: "{{file_name}} edit view was added successfully." onclick="confirmDelete(event)">Delete
-
-
-
- Back to {{name}} -
- - - - + }) + function confirmDelete(event) { + event.preventDefault(); + if (confirm("Are you sure you want to delete this item?")) { + var xhr = new XMLHttpRequest(); + xhr.open("DELETE", "/{{name | plural}}/{% raw %}{{ item.id }}{% endraw %}", true); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + window.location.href = "/{{name | plural}}"; + } + }; + xhr.send(); + } + } + +{% raw %}{% endblock js %}{% endraw %} \ No newline at end of file diff --git a/src/gen/templates/scaffold/htmx/view_list.t b/src/gen/templates/scaffold/htmx/view_list.t index 6e21e3cc9..739a5b40a 100644 --- a/src/gen/templates/scaffold/htmx/view_list.t +++ b/src/gen/templates/scaffold/htmx/view_list.t @@ -4,17 +4,15 @@ to: assets/views/{{file_name}}/list.html skip_exists: true message: "{{file_name}} list view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - - +{% raw %}{% block title %}{% endraw %} +List of {{file_name}} +{% raw %}{% endblock title %}{% endraw %} - -

{{file_name}}

-
+{% raw %}{% block content %}{% endraw %} +

{{file_name}}

+
{% raw %}{% for item in items %}{% endraw %}
{% for column in columns -%} @@ -30,7 +28,5 @@ message: "{{file_name}} list view was added successfully."

New {{name}} -
- - - \ No newline at end of file +
+{% raw %}{% endblock content %}{% endraw %} diff --git a/src/gen/templates/scaffold/htmx/view_show.t b/src/gen/templates/scaffold/htmx/view_show.t index 61171bed4..3c888247d 100644 --- a/src/gen/templates/scaffold/htmx/view_show.t +++ b/src/gen/templates/scaffold/htmx/view_show.t @@ -4,24 +4,21 @@ to: assets/views/{{file_name}}/show.html skip_exists: true message: "{{file_name}} view was added successfully." --- - - +{% raw %}{% extends "base.html" %}{% endraw %} - - - +{% raw %}{% block title %}{% endraw %} +View {{name}}: {% raw %}{{ item.id }}{% endraw %} +{% raw %}{% endblock title %}{% endraw %} - -

View {{name}}: {% raw %}{{ item.id }}{% endraw %}

-
- {% for column in columns -%} -
- -
- {% endfor -%} -
- Back to {{name | plural}} +{% raw %}{% block content %}{% endraw %} +

View {{name}}: {% raw %}{{ item.id }}{% endraw %}

+
+ {% for column in columns -%} +
+
- - - \ No newline at end of file +{% endfor -%} +
+Back to {{name | plural}} +
+{% raw %}{% endblock content %}{% endraw %} diff --git a/starters/saas/config/development.yaml b/starters/saas/config/development.yaml index dbf9a8df1..019ab3d63 100644 --- a/starters/saas/config/development.yaml +++ b/starters/saas/config/development.yaml @@ -43,7 +43,7 @@ server: preset: github overrides: # this allows you to use HTMX, and has unsafe-inline. Remove or consider in production - "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'self' https:; style-src 'self' https: 'unsafe-inline'" + "Content-Security-Policy": "default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src 'unsafe-inline' 'self' https:; style-src 'self' https: 'unsafe-inline'" # calculate remote IP based on `X-Forwarded-For` when behind a proxy or load balancer # use RemoteIP(..) extractor to get the remote IP. # without this middleware, you'll get the proxy IP instead. From 3840b8b71bd99fc3815094195820c274c4e31c74 Mon Sep 17 00:00:00 2001 From: Elad Kaplan Date: Mon, 16 Sep 2024 14:48:56 +0300 Subject: [PATCH 7/8] Update CHANGELOG.md (#753) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index de12f9b29..ced13f7ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ * Add fallback behavior. [https://github.com/loco-rs/loco/pull/732](https://github.com/loco-rs/loco/pull/732) * Add Scheduler Feature for Running Cron Jobs. [https://github.com/loco-rs/loco/pull/735](https://github.com/loco-rs/loco/pull/735) * Add `--html`, `--htmx` and `--api` flags to scaffold CLI command. [https://github.com/loco-rs/loco/pull/749](https://github.com/loco-rs/loco/pull/749) +* Add base template for scaffold generation. [https://github.com/loco-rs/loco/pull/752](https://github.com/loco-rs/loco/pull/752) + ## v0.8.0 From 9451924c73da976abc965cd9b825c7f0b8fb87fc Mon Sep 17 00:00:00 2001 From: "Dotan J. Nahum" Date: Mon, 16 Sep 2024 17:56:38 +0300 Subject: [PATCH 8/8] impl gen controller (#751) * impl gen controller * align path separator * improve route uri building * align tests --- .github/workflows/ci-generators.yml | 2 +- src/cli.rs | 23 ++++++-- src/controller/app_routes.rs | 40 ++++++++------ src/gen/controller.rs | 53 +++++++++++++++++++ src/gen/mod.rs | 20 +++++-- src/gen/scaffold.rs | 5 +- src/gen/templates/controller/api/controller.t | 40 ++++++++++++++ src/gen/templates/controller/api/test.t | 26 +++++++++ .../templates/controller/html/controller.t | 37 +++++++++++++ src/gen/templates/controller/html/view.t | 19 +++++++ .../templates/controller/htmx/controller.t | 37 +++++++++++++ src/gen/templates/controller/htmx/view.t | 19 +++++++ src/gen/templates/scaffold/api/controller.t | 8 +-- src/gen/templates/scaffold/api/test.t | 26 +++++++++ src/gen/templates/scaffold/html/controller.t | 12 ++--- src/gen/templates/scaffold/htmx/controller.t | 12 ++--- 16 files changed, 336 insertions(+), 43 deletions(-) create mode 100644 src/gen/controller.rs create mode 100644 src/gen/templates/controller/api/controller.t create mode 100644 src/gen/templates/controller/api/test.t create mode 100644 src/gen/templates/controller/html/controller.t create mode 100644 src/gen/templates/controller/html/view.t create mode 100644 src/gen/templates/controller/htmx/controller.t create mode 100644 src/gen/templates/controller/htmx/view.t create mode 100644 src/gen/templates/scaffold/api/test.t diff --git a/.github/workflows/ci-generators.yml b/.github/workflows/ci-generators.yml index 16dc26790..1d5bba032 100644 --- a/.github/workflows/ci-generators.yml +++ b/.github/workflows/ci-generators.yml @@ -69,7 +69,7 @@ jobs: DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres_test - name: controller - run: cargo run -- generate controller post && cargo build && cargo test requests::post + run: cargo run -- generate controller pages about && cargo build && cargo test pages working-directory: ./examples/demo env: REDIS_URL: redis://localhost:${{job.services.redis.ports[6379]}} diff --git a/src/cli.rs b/src/cli.rs index 93512ee56..9c3a9a2c6 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -100,7 +100,8 @@ enum Commands { /// Run jobs that are associated with a specific tag. #[arg(short, long, action)] tag: Option, - /// Specify a path to a dedicated scheduler configuration file. by default load schedulers job setting from environment config. + /// Specify a path to a dedicated scheduler configuration file. by + /// default load schedulers job setting from environment config. #[clap(value_parser)] #[arg(short, long, action)] config: Option, @@ -179,6 +180,13 @@ enum ComponentArg { Controller { /// Name of the thing to generate name: String, + + /// Actions + actions: Vec, + + /// The kind of scaffold to generate + #[clap(short, long, value_enum, default_value_t = gen::ScaffoldKind::Api)] + kind: gen::ScaffoldKind, }, /// Generate a Task based on the given name Task { @@ -244,7 +252,15 @@ impl TryFrom for Component { Ok(Self::Scaffold { name, fields, kind }) } - ComponentArg::Controller { name } => Ok(Self::Controller { name }), + ComponentArg::Controller { + name, + actions, + kind, + } => Ok(Self::Controller { + name, + actions, + kind, + }), ComponentArg::Task { name } => Ok(Self::Task { name }), ComponentArg::Scheduler {} => Ok(Self::Scheduler {}), ComponentArg::Worker { name } => Ok(Self::Worker { name }), @@ -260,7 +276,8 @@ enum DbCommands { Create, /// Migrate schema (up) Migrate, - /// Run one down migration, or add a number to run multiple down migrations (i.e. `down 2`) + /// Run one down migration, or add a number to run multiple down migrations + /// (i.e. `down 2`) Down { /// The number of migrations to rollback #[arg(default_value_t = 1)] diff --git a/src/controller/app_routes.rs b/src/controller/app_routes.rs index b1bb79a16..1d21940aa 100644 --- a/src/controller/app_routes.rs +++ b/src/controller/app_routes.rs @@ -100,32 +100,38 @@ impl AppRoutes { #[must_use] pub fn collect(&self) -> Vec { - let base_url_prefix = self.get_prefix().map_or("/", |url| url.as_str()); + let base_url_prefix = self + .get_prefix() + // add a leading slash forcefully. Axum routes must start with a leading slash. + // if we have double leading slashes - it will get normalized into a single slash later + .map_or("/".to_string(), |url| format!("/{}", url.as_str())); self.get_routes() .iter() - .flat_map(|router| { - let mut uri_parts = vec![base_url_prefix]; - if let Some(prefix) = router.prefix.as_ref() { - uri_parts.push(prefix); + .flat_map(|controller| { + let mut uri_parts = vec![base_url_prefix.clone()]; + if let Some(prefix) = controller.prefix.as_ref() { + uri_parts.push(prefix.to_string()); } - router.handlers.iter().map(move |controller| { - let uri = format!("{}{}", uri_parts.join("/"), &controller.uri); - let binding = NORMALIZE_URL.replace_all(&uri, "/"); - - let uri = if binding.len() > 1 { - NORMALIZE_URL - .replace_all(&uri, "/") - .strip_suffix('/') - .map_or_else(|| binding.to_string(), std::string::ToString::to_string) + controller.handlers.iter().map(move |handler| { + let mut parts = uri_parts.clone(); + parts.push(handler.uri.to_string()); + let joined_parts = parts.join("/"); + + let normalized = NORMALIZE_URL.replace_all(&joined_parts, "/"); + let uri = if normalized == "/" { + normalized.to_string() } else { - binding.to_string() + normalized.strip_suffix('/').map_or_else( + || normalized.to_string(), + std::string::ToString::to_string, + ) }; ListRoutes { uri, - actions: controller.actions.clone(), - method: controller.method.clone(), + actions: handler.actions.clone(), + method: handler.method.clone(), } }) }) diff --git a/src/gen/controller.rs b/src/gen/controller.rs new file mode 100644 index 000000000..b2947be4f --- /dev/null +++ b/src/gen/controller.rs @@ -0,0 +1,53 @@ +use rrgen::RRgen; +use serde_json::json; + +use crate::{app::Hooks, gen}; + +const API_CONTROLLER_CONTROLLER_T: &str = include_str!("templates/controller/api/controller.t"); +const API_CONTROLLER_TEST_T: &str = include_str!("templates/controller/api/test.t"); + +const HTMX_CONTROLLER_CONTROLLER_T: &str = include_str!("templates/controller/htmx/controller.t"); +const HTMX_VIEW_T: &str = include_str!("templates/controller/htmx/view.t"); + +const HTML_CONTROLLER_CONTROLLER_T: &str = include_str!("templates/controller/html/controller.t"); +const HTML_VIEW_T: &str = include_str!("templates/controller/html/view.t"); + +use super::collect_messages; +use crate::Result; + +pub fn generate( + rrgen: &RRgen, + name: &str, + actions: &[String], + kind: &gen::ScaffoldKind, +) -> Result { + let vars = json!({"name": name, "actions": actions, "pkg_name": H::app_name()}); + match kind { + gen::ScaffoldKind::Api => { + let res1 = rrgen.generate(API_CONTROLLER_CONTROLLER_T, &vars)?; + let res2 = rrgen.generate(API_CONTROLLER_TEST_T, &vars)?; + let messages = collect_messages(vec![res1, res2]); + Ok(messages) + } + gen::ScaffoldKind::Html => { + let mut messages = Vec::new(); + let res = rrgen.generate(HTML_CONTROLLER_CONTROLLER_T, &vars)?; + messages.push(res); + for action in actions { + let vars = json!({"name": name, "action": action, "pkg_name": H::app_name()}); + messages.push(rrgen.generate(HTML_VIEW_T, &vars)?); + } + Ok(collect_messages(messages)) + } + gen::ScaffoldKind::Htmx => { + let mut messages = Vec::new(); + let res = rrgen.generate(HTMX_CONTROLLER_CONTROLLER_T, &vars)?; + messages.push(res); + for action in actions { + let vars = json!({"name": name, "action": action, "pkg_name": H::app_name()}); + messages.push(rrgen.generate(HTMX_VIEW_T, &vars)?); + } + Ok(collect_messages(messages)) + } + } +} diff --git a/src/gen/mod.rs b/src/gen/mod.rs index 9b0cd9616..e5a68ab44 100644 --- a/src/gen/mod.rs +++ b/src/gen/mod.rs @@ -7,6 +7,7 @@ use rrgen::{GenResult, RRgen}; use serde::{Deserialize, Serialize}; use serde_json::json; +mod controller; #[cfg(feature = "with-db")] mod model; #[cfg(feature = "with-db")] @@ -154,6 +155,12 @@ pub enum Component { Controller { /// Name of the thing to generate name: String, + + /// Action names + actions: Vec, + + // kind + kind: ScaffoldKind, }, Task { /// Name of the thing to generate @@ -198,10 +205,15 @@ pub fn generate(component: Component, config: &Config) -> Result<()> { let vars = json!({ "name": name, "ts": chrono::Utc::now(), "pkg_name": H::app_name()}); rrgen.generate(MIGRATION_T, &vars)?; } - Component::Controller { name } => { - let vars = json!({ "name": name, "pkg_name": H::app_name()}); - rrgen.generate(CONTROLLER_T, &vars)?; - rrgen.generate(CONTROLLER_TEST_T, &vars)?; + Component::Controller { + name, + actions, + kind, + } => { + println!( + "{}", + controller::generate::(&rrgen, &name, &actions, &kind)? + ); } Component::Task { name } => { let vars = json!({"name": name, "pkg_name": H::app_name()}); diff --git a/src/gen/scaffold.rs b/src/gen/scaffold.rs index c6a4b4d2e..e1e5b5093 100644 --- a/src/gen/scaffold.rs +++ b/src/gen/scaffold.rs @@ -4,6 +4,7 @@ use serde_json::json; use crate::{app::Hooks, gen}; const API_CONTROLLER_SCAFFOLD_T: &str = include_str!("templates/scaffold/api/controller.t"); +const API_CONTROLLER_TEST_T: &str = include_str!("templates/scaffold/api/test.t"); const HTMX_CONTROLLER_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/controller.t"); const HTMX_BASE_SCAFFOLD_T: &str = include_str!("templates/scaffold/htmx/base.t"); @@ -21,7 +22,7 @@ const HTML_VIEW_CREATE_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/ const HTML_VIEW_SHOW_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/view_show.t"); const HTML_VIEW_LIST_SCAFFOLD_T: &str = include_str!("templates/scaffold/html/view_list.t"); -use super::{collect_messages, model, CONTROLLER_TEST_T, MAPPINGS}; +use super::{collect_messages, model, MAPPINGS}; use crate::{errors::Error, Result}; pub fn generate( @@ -59,7 +60,7 @@ pub fn generate( match kind { gen::ScaffoldKind::Api => { let res1 = rrgen.generate(API_CONTROLLER_SCAFFOLD_T, &vars)?; - let res2 = rrgen.generate(CONTROLLER_TEST_T, &vars)?; + let res2 = rrgen.generate(API_CONTROLLER_TEST_T, &vars)?; let messages = collect_messages(vec![res1, res2]); Ok(format!("{model_messages}{messages}")) } diff --git a/src/gen/templates/controller/api/controller.t b/src/gen/templates/controller/api/controller.t new file mode 100644 index 000000000..1982f1426 --- /dev/null +++ b/src/gen/templates/controller/api/controller.t @@ -0,0 +1,40 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: src/controllers/{{ file_name }}.rs +skip_exists: true +message: "Controller `{{module_name}}` was added successfully." +injections: +- into: src/controllers/mod.rs + append: true + content: "pub mod {{ file_name }};" +- into: src/app.rs + after: "AppRoutes::" + content: " .add_route(controllers::{{ file_name }}::routes())" +--- +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::unnecessary_struct_initialization)] +#![allow(clippy::unused_async)] +use loco_rs::prelude::*; +use axum::debug_handler; + +#[debug_handler] +pub async fn index(State(_ctx): State) -> Result { + format::empty() +} + +{% for action in actions -%} +#[debug_handler] +pub async fn {{action}}(State(_ctx): State) -> Result { + format::empty() +} + +{% endfor -%} + +pub fn routes() -> Routes { + Routes::new() + .prefix("{{file_name | plural}}/") + .add("/", get(index)) + {%- for action in actions %} + .add("{{action}}", get({{action}})) + {%- endfor %} +} diff --git a/src/gen/templates/controller/api/test.t b/src/gen/templates/controller/api/test.t new file mode 100644 index 000000000..3a507ec9f --- /dev/null +++ b/src/gen/templates/controller/api/test.t @@ -0,0 +1,26 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: tests/requests/{{ file_name }}.rs +skip_exists: true +message: "Tests for controller `{{module_name}}` was added successfully. Run `cargo run test`." +injections: +- into: tests/requests/mod.rs + append: true + content: "pub mod {{ file_name }};" +--- +use {{pkg_name}}::app::App; +use loco_rs::testing; +use serial_test::serial; + +{% for action in actions -%} +#[tokio::test] +#[serial] +async fn can_get_{{action}}() { + testing::request::(|request, _ctx| async move { + let res = request.get("/{{ name | snake_case }}/{{action}}").await; + assert_eq!(res.status_code(), 200); + }) + .await; +} + +{% endfor -%} diff --git a/src/gen/templates/controller/html/controller.t b/src/gen/templates/controller/html/controller.t new file mode 100644 index 000000000..9716af6eb --- /dev/null +++ b/src/gen/templates/controller/html/controller.t @@ -0,0 +1,37 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: src/controllers/{{ file_name }}.rs +skip_exists: true +message: "Controller `{{module_name}}` was added successfully." +injections: +- into: src/controllers/mod.rs + append: true + content: "pub mod {{ file_name }};" +- into: src/app.rs + after: "AppRoutes::" + content: " .add_route(controllers::{{ file_name }}::routes())" +--- +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::unnecessary_struct_initialization)] +#![allow(clippy::unused_async)] +use loco_rs::prelude::*; +use axum::debug_handler; + +{% for action in actions -%} +#[debug_handler] +pub async fn {{action}}( + ViewEngine(v): ViewEngine, + State(_ctx): State +) -> Result { + format::render().view(&v, "{{file_name}}/{{action}}.html", serde_json::json!({})) +} + +{% endfor -%} + +pub fn routes() -> Routes { + Routes::new() + .prefix("{{file_name | plural}}/") + {%- for action in actions %} + .add("{{action}}", get({{action}})) + {%- endfor %} +} diff --git a/src/gen/templates/controller/html/view.t b/src/gen/templates/controller/html/view.t new file mode 100644 index 000000000..24ef81f36 --- /dev/null +++ b/src/gen/templates/controller/html/view.t @@ -0,0 +1,19 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: assets/views/{{file_name}}/{{action}}.html +skip_exists: true +message: "{{file_name}}/{{action}} view was added successfully." +--- + + + + + + + + +

View {{action}}

+ Find me in {{file_name}}/{{action}} + + + diff --git a/src/gen/templates/controller/htmx/controller.t b/src/gen/templates/controller/htmx/controller.t new file mode 100644 index 000000000..5b1d90068 --- /dev/null +++ b/src/gen/templates/controller/htmx/controller.t @@ -0,0 +1,37 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: src/controllers/{{ file_name }}.rs +skip_exists: true +message: "Controller `{{module_name}}` was added successfully." +injections: +- into: src/controllers/mod.rs + append: true + content: "pub mod {{ file_name }};" +- into: src/app.rs + after: "AppRoutes::" + content: " .add_route(controllers::{{ file_name }}::routes())" +--- +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::unnecessary_struct_initialization)] +#![allow(clippy::unused_async)] +use loco_rs::prelude::*; +use axum::debug_handler; + +{% for action in actions -%} +#[debug_handler] +pub async fn {{action}}( + ViewEngine(v): ViewEngine, + State(_ctx): State +) -> Result { + format::render().view(&v, "{{file_name}}/{{action}}.html", serde_json::json!({})) +} + +{% endfor -%} + +pub fn routes() -> Routes { + Routes::new() + .prefix("{{file_name | plural}}") + {%- for action in actions %} + .add("{{action}}", get({{action}})) + {%- endfor %} +} diff --git a/src/gen/templates/controller/htmx/view.t b/src/gen/templates/controller/htmx/view.t new file mode 100644 index 000000000..24ef81f36 --- /dev/null +++ b/src/gen/templates/controller/htmx/view.t @@ -0,0 +1,19 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: assets/views/{{file_name}}/{{action}}.html +skip_exists: true +message: "{{file_name}}/{{action}} view was added successfully." +--- + + + + + + + + +

View {{action}}

+ Find me in {{file_name}}/{{action}} + + + diff --git a/src/gen/templates/scaffold/api/controller.t b/src/gen/templates/scaffold/api/controller.t index f27c04ab0..382eb6a29 100644 --- a/src/gen/templates/scaffold/api/controller.t +++ b/src/gen/templates/scaffold/api/controller.t @@ -81,10 +81,10 @@ pub async fn get_one(Path(id): Path, State(ctx): State) -> Resu pub fn routes() -> Routes { Routes::new() - .prefix("{{file_name | plural}}") + .prefix("{{file_name | plural}}/") .add("/", get(list)) .add("/", post(add)) - .add("/:id", get(get_one)) - .add("/:id", delete(remove)) - .add("/:id", post(update)) + .add(":id", get(get_one)) + .add(":id", delete(remove)) + .add(":id", post(update)) } diff --git a/src/gen/templates/scaffold/api/test.t b/src/gen/templates/scaffold/api/test.t new file mode 100644 index 000000000..d6298659d --- /dev/null +++ b/src/gen/templates/scaffold/api/test.t @@ -0,0 +1,26 @@ +{% set file_name = name | snake_case -%} +{% set module_name = file_name | pascal_case -%} +to: tests/requests/{{ file_name }}.rs +skip_exists: true +message: "Tests for controller `{{module_name}}` was added successfully. Run `cargo run test`." +injections: +- into: tests/requests/mod.rs + append: true + content: "pub mod {{ file_name }};" +--- +use {{pkg_name}}::app::App; +use loco_rs::testing; +use serial_test::serial; + +#[tokio::test] +#[serial] +async fn can_list() { + testing::request::(|request, _ctx| async move { + let res = request.get("/{{ name | snake_case }}/").await; + assert_eq!(res.status_code(), 200); + + // you can assert content like this: + // assert_eq!(res.text(), "content"); + }) + .await; +} diff --git a/src/gen/templates/scaffold/html/controller.t b/src/gen/templates/scaffold/html/controller.t index 4be3fe4ec..a1b6ba6d7 100644 --- a/src/gen/templates/scaffold/html/controller.t +++ b/src/gen/templates/scaffold/html/controller.t @@ -119,12 +119,12 @@ pub async fn remove(Path(id): Path, State(ctx): State) -> Resul pub fn routes() -> Routes { Routes::new() - .prefix("{{file_name | plural}}") + .prefix("{{file_name | plural}}/") .add("/", get(list)) - .add("/new", get(new)) - .add("/:id", get(show)) - .add("/:id/edit", get(edit)) - .add("/:id", post(update)) - .add("/:id", delete(remove)) .add("/", post(add)) + .add("new", get(new)) + .add(":id", get(show)) + .add(":id/edit", get(edit)) + .add(":id", post(update)) + .add(":id", delete(remove)) } diff --git a/src/gen/templates/scaffold/htmx/controller.t b/src/gen/templates/scaffold/htmx/controller.t index a2826b420..49538c1cb 100644 --- a/src/gen/templates/scaffold/htmx/controller.t +++ b/src/gen/templates/scaffold/htmx/controller.t @@ -119,12 +119,12 @@ pub async fn remove(Path(id): Path, State(ctx): State) -> Resul pub fn routes() -> Routes { Routes::new() - .prefix("{{file_name | plural}}") + .prefix("{{file_name | plural}}/") .add("/", get(list)) - .add("/new", get(new)) - .add("/:id", get(show)) - .add("/:id/edit", get(edit)) - .add("/:id", post(update)) - .add("/:id", delete(remove)) .add("/", post(add)) + .add("new", get(new)) + .add(":id", get(show)) + .add(":id/edit", get(edit)) + .add(":id", post(update)) + .add(":id", delete(remove)) }